@@ -338,10 +338,15 @@ void onExecute(CommandOrigin const& origin, CommandOutput& output, RuntimeComman
338338 lse::getSelfPluginInstance ().getLogger ().warn (" Could not find {} in registered commands." _tr (commandName));
339339 return ;
340340 }
341- for (std::string& name : registeredCommands[commandName]) {
341+ for (auto & info : registeredCommands[commandName]) {
342342 try {
343- auto & param = runtime[name];
344- args.set (name, convertResult (param, origin, output));
343+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
344+ auto & param = runtime[info.enumName ];
345+ args.set (info.name , convertResult (param, origin, output));
346+ } else {
347+ auto & param = runtime[info.name ];
348+ args.set (info.name , convertResult (param, origin, output));
349+ }
345350 } catch (std::out_of_range&) {
346351 continue ;
347352 }
@@ -373,8 +378,7 @@ Local<Value> CommandClass::newParameter(const Arguments& args) {
373378 option = (CommandParameterOption)args[index++].asNumber ().toInt32 ();
374379 if (index != args.size ()) throw std::runtime_error (" Error Argument in newParameter" );
375380
376- paramMaps[name] = {type, optional, enumName}; // Stores the parameter name for overload use
377- getEngineOwnData ()->plugin ->registeredCommands [commandName].push_back (name
381+ getEngineOwnData ()->plugin ->registeredCommands [commandName].push_back ({name, type, optional, enumName}
378382 ); // Stores the parameter name for onExecute use
379383
380384 return Boolean::newBoolean (true );
@@ -400,8 +404,7 @@ Local<Value> CommandClass::mandatory(const Arguments& args) {
400404 option = (CommandParameterOption)args[index++].asNumber ().toInt32 ();
401405 if (index != args.size ()) throw std::runtime_error (" Error Argument in newParameter" );
402406
403- paramMaps[name] = {type, false , enumName, option}; // Stores the parameter name for overload use
404- getEngineOwnData ()->plugin ->registeredCommands [commandName].push_back (name
407+ getEngineOwnData ()->plugin ->registeredCommands [commandName].push_back ({name, type, false , enumName}
405408 ); // Stores the parameter name for onExecute use
406409
407410 return Boolean::newBoolean (true );
@@ -427,8 +430,7 @@ Local<Value> CommandClass::optional(const Arguments& args) {
427430 option = (CommandParameterOption)args[index++].asNumber ().toInt32 ();
428431 if (index != args.size ()) throw std::runtime_error (" Error Argument in newParameter" );
429432
430- paramMaps[name] = {type, true , enumName, option}; // Stores the parameter name for overload use
431- getEngineOwnData ()->plugin ->registeredCommands [commandName].push_back (name
433+ getEngineOwnData ()->plugin ->registeredCommands [commandName].push_back ({name, type, true , enumName}
432434 ); // Stores the parameter name for onExecute use
433435
434436 return Boolean::newBoolean (true );
@@ -446,19 +448,21 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
446448 for (int i = 0 ; i < args.size (); ++i) {
447449 CHECK_ARG_TYPE (args[i], ValueKind::kNumber );
448450 std::string paramName = std::to_string (args[i].asNumber ().toInt32 ());
449- if (paramMaps.find (paramName) != paramMaps.end ()) {
450- ParamInfo& param = paramMaps[paramName];
451- if (param.optional ) {
452- if (param.type == ParamKind::Kind::Enum || param.type == ParamKind::Kind::SoftEnum) {
453- cmd.optional (paramName, param.type , param.enumName ).option (param.option );
454- } else {
455- cmd.optional (paramName, param.type ).option (param.option );
456- }
457- } else {
458- if (param.type == ParamKind::Kind::Enum || param.type == ParamKind::Kind::SoftEnum) {
459- cmd.required (paramName, param.type , param.enumName ).option (param.option );
451+ auto & paramList = getEngineOwnData ()->plugin ->registeredCommands [commandName];
452+ for (auto & info : paramList) {
453+ if (info.name == paramName || info.enumName == paramName) {
454+ if (info.optional ) {
455+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
456+ cmd.optional (info.enumName , info.type , info.enumName ).option (info.option );
457+ } else {
458+ cmd.optional (info.name , info.type ).option (info.option );
459+ }
460460 } else {
461- cmd.required (paramName, param.type ).option (param.option );
461+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
462+ cmd.required (info.enumName , info.type , info.enumName ).option (info.option );
463+ } else {
464+ cmd.required (info.name , info.type ).option (info.option );
465+ }
462466 }
463467 }
464468 }
@@ -469,19 +473,21 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
469473 for (int i = 0 ; i < args.size (); ++i) {
470474 CHECK_ARG_TYPE (args[i], ValueKind::kString );
471475 std::string paramName = args[0 ].asString ().toString ();
472- if (paramMaps.find (paramName) != paramMaps.end ()) {
473- ParamInfo& param = paramMaps[paramName];
474- if (param.optional ) {
475- if (param.type == ParamKind::Kind::Enum || param.type == ParamKind::Kind::SoftEnum) {
476- cmd.optional (paramName, param.type , param.enumName ).option (param.option );
477- } else {
478- cmd.optional (paramName, param.type ).option (param.option );
479- }
480- } else {
481- if (param.type == ParamKind::Kind::Enum || param.type == ParamKind::Kind::SoftEnum) {
482- cmd.required (paramName, param.type , param.enumName ).option (param.option );
476+ auto & paramList = getEngineOwnData ()->plugin ->registeredCommands [commandName];
477+ for (auto & info : paramList) {
478+ if (info.name == paramName || info.enumName == paramName) {
479+ if (info.optional ) {
480+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
481+ cmd.optional (info.enumName , info.type , info.enumName ).option (info.option );
482+ } else {
483+ cmd.optional (info.name , info.type ).option (info.option );
484+ }
483485 } else {
484- cmd.required (paramName, param.type ).option (param.option );
486+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
487+ cmd.required (info.enumName , info.type , info.enumName ).option (info.option );
488+ } else {
489+ cmd.required (info.name , info.type ).option (info.option );
490+ }
485491 }
486492 }
487493 }
@@ -495,19 +501,21 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
495501 for (int i = 0 ; i < arr.size (); ++i) {
496502 CHECK_ARG_TYPE (arr.get (i), ValueKind::kNumber );
497503 std::string paramName = std::to_string (arr.get (i).asNumber ().toInt32 ());
498- if (paramMaps.find (paramName) != paramMaps.end ()) {
499- ParamInfo& param = paramMaps[paramName];
500- if (param.optional ) {
501- if (param.type == ParamKind::Kind::Enum || param.type == ParamKind::Kind::SoftEnum) {
502- cmd.optional (paramName, param.type , param.enumName ).option (param.option );
504+ auto & paramList = getEngineOwnData ()->plugin ->registeredCommands [commandName];
505+ for (auto & info : paramList) {
506+ if (info.name == paramName || info.enumName == paramName) {
507+ if (info.optional ) {
508+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
509+ cmd.optional (info.enumName , info.type , info.enumName ).option (info.option );
510+ } else {
511+ cmd.optional (info.name , info.type ).option (info.option );
512+ }
503513 } else {
504- cmd.optional (paramName, param.type ).option (param.option );
505- }
506- } else {
507- if (param.type == ParamKind::Kind::Enum || param.type == ParamKind::Kind::SoftEnum) {
508- cmd.required (paramName, param.type , param.enumName ).option (param.option );
509- } else {
510- cmd.required (paramName, param.type ).option (param.option );
514+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
515+ cmd.required (info.enumName , info.type , info.enumName ).option (info.option );
516+ } else {
517+ cmd.required (info.name , info.type ).option (info.option );
518+ }
511519 }
512520 }
513521 }
@@ -518,19 +526,21 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
518526 for (int i = 0 ; i < arr.size (); ++i) {
519527 CHECK_ARG_TYPE (arr.get (i), ValueKind::kString );
520528 std::string paramName = arr.get (i).asString ().toString ();
521- if (paramMaps.find (paramName) != paramMaps.end ()) {
522- ParamInfo& param = paramMaps[paramName];
523- if (param.optional ) {
524- if (param.type == ParamKind::Kind::Enum || param.type == ParamKind::Kind::SoftEnum) {
525- cmd.optional (paramName, param.type , param.enumName ).option (param.option );
526- } else {
527- cmd.optional (paramName, param.type ).option (param.option );
528- }
529- } else {
530- if (param.type == ParamKind::Kind::Enum || param.type == ParamKind::Kind::SoftEnum) {
531- cmd.required (paramName, param.type , param.enumName ).option (param.option );
529+ auto & paramList = getEngineOwnData ()->plugin ->registeredCommands [commandName];
530+ for (auto & info : paramList) {
531+ if (info.name == paramName || info.enumName == paramName) {
532+ if (info.optional ) {
533+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
534+ cmd.optional (info.enumName , info.type , info.enumName ).option (info.option );
535+ } else {
536+ cmd.optional (info.name , info.type ).option (info.option );
537+ }
532538 } else {
533- cmd.required (paramName, param.type ).option (param.option );
539+ if (info.type == ParamKind::Kind::Enum || info.type == ParamKind::Kind::SoftEnum) {
540+ cmd.required (info.enumName , info.type , info.enumName ).option (info.option );
541+ } else {
542+ cmd.required (info.name , info.type ).option (info.option );
543+ }
534544 }
535545 }
536546 }
0 commit comments