diff --git a/src/samples/boop/commands.ts b/src/samples/boop/commands.ts index 1d7d117..e19fee2 100644 --- a/src/samples/boop/commands.ts +++ b/src/samples/boop/commands.ts @@ -90,7 +90,7 @@ const boopCommand = registry.register('boop ', b /** * 检查是否有玩家获胜(三个猫连线) */ -async function checkWin(game: BoopGame) { +async function checkWin(game: BoopGame): Promise { for(const line of getLineCandidates()){ let whites = 0; let blacks = 0; @@ -151,10 +151,9 @@ async function setup(game: BoopGame) { while (true) { const currentPlayer = game.value.currentPlayer; const turnOutput = await turnCommand(game, currentPlayer); - if (!turnOutput.success) throw new Error(turnOutput.error); await game.produceAsync(state => { - state.winner = turnOutput.result.winner; + state.winner = turnOutput.winner; if (!state.winner) { state.currentPlayer = state.currentPlayer === 'white' ? 'black' : 'white'; } @@ -233,7 +232,7 @@ async function turn(game: BoopGame, turnPlayer: PlayerType) { await placeCommand(game, row, col, turnPlayer, pieceType); await boopCommand(game, row, col, pieceType); const winner = await checkWinCommand(game); - if(winner.success) return { winner: winner.result as WinnerType }; + if(winner) return { winner: winner }; await checkGraduatesCommand(game); await checkFullBoard(game, turnPlayer); diff --git a/src/samples/tic-tac-toe.ts b/src/samples/tic-tac-toe.ts index 23f8fdf..28ac7f6 100644 --- a/src/samples/tic-tac-toe.ts +++ b/src/samples/tic-tac-toe.ts @@ -42,10 +42,9 @@ async function setup(game: TicTacToeGame) { const currentPlayer = game.value.currentPlayer; const turnNumber = game.value.turn + 1; const turnOutput = await turnCommand(game, currentPlayer, turnNumber); - if (!turnOutput.success) throw new Error(turnOutput.error); game.produce(state => { - state.winner = turnOutput.result.winner; + state.winner = turnOutput.winner; if (!state.winner) { state.currentPlayer = state.currentPlayer === 'X' ? 'O' : 'X'; state.turn = turnNumber; diff --git a/src/utils/command/command-registry.ts b/src/utils/command/command-registry.ts index fd30990..4a88a96 100644 --- a/src/utils/command/command-registry.ts +++ b/src/utils/command/command-registry.ts @@ -30,13 +30,15 @@ export class CommandRegistry extends Map Promise ? X : null; type TResult = TFunc extends (ctx: TContext, ...args: any[]) => Promise ? X : null; - return function(ctx: TContext & CanRunParsed, ...args: TParams){ - return ctx.runParsed({ + return async function(ctx: TContext & CanRunParsed, ...args: TParams){ + const result: CommandResult = await ctx.runParsed({ options: {}, params: args, flags: {}, name: parsedSchema.name, - }) as Promise>; + }); + if(result.success) return result.result; + throw new Error(result.error); } } }