simplify things a bit

This commit is contained in:
Gavin McDonald
2025-05-01 16:28:54 -04:00
parent 2f5807ac53
commit af26a64e8b

View File

@@ -34,10 +34,10 @@ export default class GameStore {
private totalExpired: number; private totalExpired: number;
private totalUnused: number; private totalUnused: number;
private startUps: Set<string>; private startUps: Set<string>; // homepage socket IDs
private dms: Map<string, GameState>; private dms: Map<string, GameState>; // DM socket ID -> game
private spectators: Map<string, GameState>; private spectators: Map<string, GameState>; // spectator socket ID -> game
private players: Map<string, string>; private players: Map<string, GameState>; // socket ID -> game
constructor() { constructor() {
this.startTime = Date.now(); this.startTime = Date.now();
@@ -106,14 +106,12 @@ export default class GameStore {
game.players.add(playerID); game.players.add(playerID);
game.lastUpdated = Date.now(); game.lastUpdated = Date.now();
this.players.set(playerID, gameID); this.players.set(playerID, game);
return this.gameUpdate(game); return this.gameUpdate(game);
} }
leaveGame(gameID: string, playerID: string): GameState { leaveGame(game: GameState, playerID: string): GameState {
const game = this.getGame(gameID);
game.players.delete(playerID); game.players.delete(playerID);
game.lastUpdated = Date.now(); game.lastUpdated = Date.now();
@@ -160,12 +158,12 @@ export default class GameStore {
return null; return null;
} else { } else {
const gameID = this.players.get(playerID); const game = this.players.get(playerID);
if (!gameID) throw new Error(`Player ${playerID} not found`); if (!game) throw new Error(`Player ${playerID} not found`);
this.players.delete(playerID); this.players.delete(playerID);
return this.leaveGame(gameID, playerID); return this.leaveGame(game, playerID);
} }
} }
@@ -208,7 +206,11 @@ export default class GameStore {
this.totalExpired += expired.length; this.totalExpired += expired.length;
this.totalUnused += unused.length; this.totalUnused += unused.length;
expired.forEach((game) => this.deleteGame(game)); expired.forEach((game) => {
game.players.forEach((playerID) => this.players.delete(playerID));
this.deleteGame(game);
});
unused.forEach((game) => this.deleteGame(game)); unused.forEach((game) => this.deleteGame(game));
} }