Skip to content

Commit bf1e95b

Browse files
committed
games: Merge onRemovePlayer and onForfeitPlayer
1 parent 0d31a44 commit bf1e95b

1 file changed

Lines changed: 3 additions & 5 deletions

File tree

src/ps/games/game.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ export class BaseGame<State extends BaseState> {
103103
onAddPlayer?(user: User, ctx: string): ActionResponse;
104104
onAfterAddPlayer?(player: Player): void;
105105
onRemovePlayer?(player: Player, ctx: string | User): ActionResponse<'end' | null>;
106-
onForfeitPlayer?(player: Player, ctx: string | User): ActionResponse;
107106
onReplacePlayer?(turn: BaseState['turn'], withPlayer: User): ActionResponse;
108107
onAfterReplacePlayer?(player: Player): void;
109108
onStart?(): ActionResponse;
@@ -357,9 +356,9 @@ export class BaseGame<State extends BaseState> {
357356
const staffAction = typeof ctx === 'string';
358357
const player = Object.values(this.players).find(p => p.id === (typeof ctx === 'string' ? ctx : ctx.id));
359358
if (!player) return { success: false, error: this.$T('GAME.NOT_PLAYING') };
359+
const removePlayer = this.onRemovePlayer?.(player, ctx);
360+
if (removePlayer?.success === false) return removePlayer;
360361
if (this.started) {
361-
const forfeitPlayer = this.onForfeitPlayer?.(player, ctx);
362-
if (forfeitPlayer?.success === false) return forfeitPlayer;
363362
player.out = true;
364363
this.spectators.push(player.id);
365364
this.log.push({ action: staffAction ? 'dq' : 'forfeit', turn: player.turn, time: new Date(), ctx: null });
@@ -370,14 +369,13 @@ export class BaseGame<State extends BaseState> {
370369
cb: () => {
371370
const playersLeft = Object.values(this.players).filter((player: Player) => !player.out);
372371
if (playersLeft.length <= 1) this.end('dq');
372+
else if (removePlayer?.data === 'end') this.end();
373373
else if (this.turn === player.turn) this.endTurn(); // Needs to be run AFTER consumer has finished DQing
374374
this.backup();
375375
},
376376
},
377377
};
378378
}
379-
const removePlayer = this.onRemovePlayer?.(player, ctx);
380-
if (removePlayer?.success === false) return removePlayer;
381379
delete this.players[player.turn];
382380
return {
383381
success: true,

0 commit comments

Comments
 (0)