@@ -548,14 +548,14 @@ export function register(commands:Record<string, FishCommandData<string, any> |
548548 }
549549
550550 //Recursively resolve unresolved args (such as players that need to be determined through a menu)
551- resolveArgsRecursive ( output . processedArgs , output . unresolvedArgs , fishSender , ( ) => {
551+ resolveArgsRecursive ( output . processedArgs , output . unresolvedArgs , fishSender ) . then ( async ( resolvedArgs ) => {
552552 //Run the command handler
553553 const usageData = fishSender . getUsageData ( name ) ;
554554 let failed = false ;
555555 try {
556556 const args :FishCommandHandlerData < string , any > & FishCommandHandlerUtils = {
557557 rawArgs,
558- args : output . processedArgs ,
558+ args : resolvedArgs ,
559559 sender : fishSender ,
560560 data : data . data ,
561561 outputFail : message => { outputFail ( message , sender ) ; failed = true ; } ,
@@ -577,11 +577,11 @@ export function register(commands:Record<string, FishCommandData<string, any> |
577577 fishSender . tapInfo . commandName = name ;
578578 fishSender . tapInfo . mode = mode ;
579579 }
580- fishSender . tapInfo . lastArgs = output . processedArgs ;
580+ fishSender . tapInfo . lastArgs = resolvedArgs ;
581581 } ,
582582 } ;
583583 data . requirements ?. forEach ( r => r ( args ) ) ;
584- data . handler ( args ) ;
584+ await data . handler ( args ) ;
585585 //Update usage data
586586 if ( ! failed ) {
587587 usageData . lastUsedSuccessfully = globalUsageData [ name ] . lastUsedSuccessfully = Date . now ( ) ;
@@ -665,9 +665,9 @@ export function registerConsole(commands:Record<string, FishConsoleCommandData<s
665665}
666666
667667/** Recursively resolves args. This function is necessary to handle cases such as a command that accepts multiple players that all need to be selected through menus. */
668- function resolveArgsRecursive ( processedArgs : Record < string , FishCommandArgType > , unresolvedArgs :CommandArg [ ] , sender :FishPlayer , callback : ( args : Record < string , FishCommandArgType > ) => void ) {
668+ async function resolveArgsRecursive ( processedArgs : Record < string , FishCommandArgType > , unresolvedArgs :CommandArg [ ] , sender :FishPlayer ) {
669669 if ( unresolvedArgs . length == 0 ) {
670- callback ( processedArgs ) ;
670+ return processedArgs ;
671671 } else {
672672 const argToResolve = unresolvedArgs . shift ( ) ! ;
673673 let optionsList :mindustryPlayer [ ] = [ ] ;
@@ -676,18 +676,15 @@ function resolveArgsRecursive(processedArgs: Record<string, FishCommandArgType>,
676676 case "player" : Groups . player . each ( player => optionsList . push ( player ) ) ; break ;
677677 default : crash ( `Unable to resolve arg of type ${ argToResolve . type } ` ) ;
678678 }
679- Menu . menu ( `Select a player` , `Select a player for the argument "${ argToResolve . name } "` , optionsList , sender , {
679+ const option = await Menu . menu ( `Select a player` , `Select a player for the argument "${ argToResolve . name } "` , optionsList , sender , {
680680 includeCancel : true ,
681681 optionStringifier : player => Strings . stripColors ( player . name ) . length >= 3 ?
682682 Strings . stripColors ( player . name )
683683 : escapeStringColorsClient ( player . name )
684- } ) . then ( ( option ) => {
685- processedArgs [ argToResolve . name ] = FishPlayer . get ( option ) ;
686- resolveArgsRecursive ( processedArgs , unresolvedArgs , sender , callback ) ;
687684 } ) ;
688-
685+ processedArgs [ argToResolve . name ] = FishPlayer . get ( option ) ;
686+ return await resolveArgsRecursive ( processedArgs , unresolvedArgs , sender ) ;
689687 }
690-
691688}
692689
693690export function initialize ( ) {
0 commit comments