fix: boop
This commit is contained in:
parent
b9105efd03
commit
bd2988902a
|
|
@ -34,7 +34,7 @@ async function place(game: BoopGame, row: number, col: number, player: PlayerTyp
|
|||
|
||||
const partId = part.id;
|
||||
|
||||
game.produce(state => {
|
||||
await game.produceAsync(state => {
|
||||
// 将棋子从supply移动到棋盘
|
||||
const part = state.pieces[partId];
|
||||
moveToRegion(part, state.regions[player], state.regions.board, [row, col]);
|
||||
|
|
@ -50,7 +50,7 @@ const placeCommand = registry.register( 'place <row:number> <col:number> <player
|
|||
async function boop(game: BoopGame, row: number, col: number, type: PieceType) {
|
||||
const booped: string[] = [];
|
||||
|
||||
game.produce(state => {
|
||||
await game.produceAsync(state => {
|
||||
// 按照远离放置位置的方向推动
|
||||
for (const [dr, dc] of getNeighborPositions()) {
|
||||
const nr = row + dr;
|
||||
|
|
@ -133,16 +133,14 @@ async function checkGraduates(game: BoopGame){
|
|||
}
|
||||
}
|
||||
|
||||
game.produce(state => {
|
||||
// 预先收集所有可用的猫(在盒子里的)
|
||||
await game.produceAsync(state => {
|
||||
for(const partId of toUpgrade){
|
||||
const part = state.pieces[partId];
|
||||
const [row, col] = part.position;
|
||||
const player = part.player;
|
||||
moveToRegion(part, state.regions.board, null);
|
||||
|
||||
// 使用下一个可用的猫
|
||||
const newPart = findPartInRegion(state, '', 'kitten', player);
|
||||
const newPart = findPartInRegion(state, '', 'cat', player);
|
||||
moveToRegion(newPart || part, null, state.regions[player], [row, col]);
|
||||
}
|
||||
});
|
||||
|
|
@ -155,7 +153,7 @@ async function setup(game: BoopGame) {
|
|||
const turnOutput = await turnCommand(game, currentPlayer);
|
||||
if (!turnOutput.success) throw new Error(turnOutput.error);
|
||||
|
||||
game.produce(state => {
|
||||
await game.produceAsync(state => {
|
||||
state.winner = turnOutput.result.winner;
|
||||
if (!state.winner) {
|
||||
state.currentPlayer = state.currentPlayer === 'white' ? 'black' : 'white';
|
||||
|
|
@ -197,7 +195,7 @@ async function checkFullBoard(game: BoopGame, turnPlayer: PlayerType){
|
|||
}
|
||||
);
|
||||
|
||||
game.produce(state => {
|
||||
await game.produceAsync(state => {
|
||||
const part = state.pieces[partId];
|
||||
moveToRegion(part, state.regions.board, null);
|
||||
const cat = findPartInRegion(state, '', 'cat');
|
||||
|
|
@ -238,6 +236,7 @@ async function turn(game: BoopGame, turnPlayer: PlayerType) {
|
|||
if(winner.success) return { winner: winner.result as WinnerType };
|
||||
|
||||
await checkGraduatesCommand(game);
|
||||
await checkFullBoard(game, turnPlayer);
|
||||
return { winner: null };
|
||||
}
|
||||
const turnCommand = registry.register('turn <player>', turn);
|
||||
Loading…
Reference in New Issue