@@ -27,6 +27,9 @@ ClassDefine<void> DataClassBuilder = defineClass("data")
2727 .function(" xuid2uuid" , &DataClass::xuid2uuid)
2828 .function(" name2uuid" , &DataClass::name2uuid)
2929 .function(" getAllPlayerInfo" , &DataClass::getAllPlayerInfo)
30+ .function(" fromUuid" , &DataClass::fromUuid)
31+ .function(" fromXuid" , &DataClass::fromXuid)
32+ .function(" fromName" , &DataClass::fromName)
3033 .function(" parseJson" , &DataClass::parseJson)
3134 .function(" toJson" , &DataClass::toJson)
3235 .function(" toMD5" , &DataClass::toMD5)
@@ -701,7 +704,11 @@ Local<Value> DataClass::xuid2name(const Arguments& args) {
701704
702705 try {
703706 auto playerInfo = ll::service::PlayerInfo::getInstance ().fromXuid (args[0 ].asString ().toString ());
704- return String::newString (playerInfo ? playerInfo->name : std::string ());
707+ if (playerInfo) {
708+ return String::newString (playerInfo->name );
709+ } else {
710+ return {};
711+ }
705712 }
706713 CATCH (" Fail in XuidToName!" );
707714}
@@ -712,7 +719,11 @@ Local<Value> DataClass::name2xuid(const Arguments& args) {
712719
713720 try {
714721 auto playerInfo = ll::service::PlayerInfo::getInstance ().fromName (args[0 ].asString ().toString ());
715- return String::newString (playerInfo ? playerInfo->xuid : std::string ());
722+ if (playerInfo) {
723+ return String::newString (playerInfo->xuid );
724+ } else {
725+ return {};
726+ }
716727 }
717728 CATCH (" Fail in NameToXuid!" );
718729}
@@ -723,7 +734,11 @@ Local<Value> DataClass::name2uuid(const Arguments& args) {
723734
724735 try {
725736 auto playerInfo = ll::service::PlayerInfo::getInstance ().fromName (args[0 ].asString ().toString ());
726- return String::newString (playerInfo ? playerInfo->uuid .asString () : std::string ());
737+ if (playerInfo) {
738+ return String::newString (playerInfo->uuid .asString ());
739+ } else {
740+ return {};
741+ }
727742 }
728743 CATCH (" Fail in NameToUuid!" );
729744}
@@ -734,12 +749,15 @@ Local<Value> DataClass::xuid2uuid(const Arguments& args) {
734749
735750 try {
736751 auto playerInfo = ll::service::PlayerInfo::getInstance ().fromXuid (args[0 ].asString ().toString ());
737- return String::newString (playerInfo ? playerInfo->uuid .asString () : std::string ());
752+ if (playerInfo) {
753+ return String::newString (playerInfo->uuid .asString ());
754+ } else {
755+ return {};
756+ }
738757 }
739758 CATCH (" Fail in XuidToUuid!" );
740759}
741760
742- // Unsupported
743761Local<Value> DataClass::getAllPlayerInfo (const Arguments& args) {
744762 CHECK_ARGS_COUNT (args, 0 );
745763
@@ -763,6 +781,64 @@ Local<Value> DataClass::getAllPlayerInfo(const Arguments& args) {
763781 CATCH (" Fail in getAllPlayerInfo!" );
764782}
765783
784+ // New API for LSE
785+ Local<Value> DataClass::fromUuid (const Arguments& args) {
786+ CHECK_ARGS_COUNT (args, 1 );
787+ CHECK_ARG_TYPE (args[0 ], ValueKind::kString );
788+
789+ try {
790+ auto playerInfo = ll::service::PlayerInfo::getInstance ().fromUuid (args[0 ].asString ().toString ());
791+ if (playerInfo) {
792+ auto object = Object::newObject ();
793+ object.set (" xuid" , playerInfo->xuid );
794+ object.set (" name" , playerInfo->name );
795+ object.set (" uuid" , playerInfo->uuid .asString ());
796+ return object;
797+ } else {
798+ return {};
799+ }
800+ }
801+ CATCH (" Fail in NameToUuid!" );
802+ }
803+
804+ Local<Value> DataClass::fromXuid (const Arguments& args) {
805+ CHECK_ARGS_COUNT (args, 1 );
806+ CHECK_ARG_TYPE (args[0 ], ValueKind::kString );
807+
808+ try {
809+ auto playerInfo = ll::service::PlayerInfo::getInstance ().fromXuid (args[0 ].asString ().toString ());
810+ if (playerInfo) {
811+ auto object = Object::newObject ();
812+ object.set (" xuid" , playerInfo->xuid );
813+ object.set (" name" , playerInfo->name );
814+ object.set (" uuid" , playerInfo->uuid .asString ());
815+ return object;
816+ } else {
817+ return {};
818+ }
819+ }
820+ CATCH (" Fail in NameToUuid!" );
821+ }
822+
823+ Local<Value> DataClass::fromName (const Arguments& args) {
824+ CHECK_ARGS_COUNT (args, 1 );
825+ CHECK_ARG_TYPE (args[0 ], ValueKind::kString );
826+
827+ try {
828+ auto playerInfo = ll::service::PlayerInfo::getInstance ().fromName (args[0 ].asString ().toString ());
829+ if (playerInfo) {
830+ auto object = Object::newObject ();
831+ object.set (" xuid" , playerInfo->xuid );
832+ object.set (" name" , playerInfo->name );
833+ object.set (" uuid" , playerInfo->uuid .asString ());
834+ return object;
835+ } else {
836+ return {};
837+ }
838+ }
839+ CATCH (" Fail in NameToUuid!" );
840+ }
841+
766842Local<Value> DataClass::toJson (const Arguments& args) {
767843 CHECK_ARGS_COUNT (args, 1 );
768844 if (args.size () >= 2 ) CHECK_ARG_TYPE (args[1 ], ValueKind::kNumber );
0 commit comments