diff --git a/apps/server/src/domains/game/application/services/GamePlayerOperationService.ts b/apps/server/src/domains/game/application/services/GamePlayerOperationService.ts index a5437d3..c528d50 100644 --- a/apps/server/src/domains/game/application/services/GamePlayerOperationService.ts +++ b/apps/server/src/domains/game/application/services/GamePlayerOperationService.ts @@ -53,7 +53,7 @@ const removed = session.removePlayer(id); this.removePlayerFromIndexes(roomId, id, roomPlayerSet); - if (removed && session.isEmpty()) { + if (removed && session.getPlayers().length === 0) { session.dispose(); this.sessions.delete(roomId); this.roomToPlayers.delete(roomId); diff --git a/apps/server/src/domains/game/application/services/TeamAssignmentService.ts b/apps/server/src/domains/game/application/services/TeamAssignmentService.ts index 8108586..4ee8c50 100644 --- a/apps/server/src/domains/game/application/services/TeamAssignmentService.ts +++ b/apps/server/src/domains/game/application/services/TeamAssignmentService.ts @@ -10,7 +10,10 @@ * 現在のプレイヤー状況から、最も人数が少ないチームIDを算出する */ public static getBalancedTeamId(currentPlayers: Map): number { - const teamCount = config.GAME_CONFIG.TEAM_COLORS.length; + const teamCount = config.GAME_CONFIG.TEAM_COUNT; + if (config.GAME_CONFIG.TEAM_COLORS.length !== teamCount) { + throw new Error("GAME_CONFIG mismatch: TEAM_COLORS length must equal TEAM_COUNT"); + } const teamPopulations = new Array(teamCount).fill(0); // 現在の各チームの所属人数を数え上げる diff --git a/apps/server/src/domains/game/entities/player/playerSpawn.ts b/apps/server/src/domains/game/entities/player/playerSpawn.ts index f368069..4afc597 100644 --- a/apps/server/src/domains/game/entities/player/playerSpawn.ts +++ b/apps/server/src/domains/game/entities/player/playerSpawn.ts @@ -10,12 +10,12 @@ export const createSpawnedPlayer = (id: string, teamId: number): Player => { const player = new Player(id, teamId); // ここにteamIdを渡す! - const { GRID_COLS, GRID_ROWS } = config.GAME_CONFIG; + const { GRID_COLS, GRID_ROWS, TEAM_COUNT } = config.GAME_CONFIG; let baseX = GRID_COLS / 2; let baseY = GRID_ROWS / 2; - switch (player.teamId % 4) { + switch (player.teamId % TEAM_COUNT) { case 0: // 左上 baseX = 2; baseY = 2; diff --git a/packages/shared/src/config/gameConfig.ts b/packages/shared/src/config/gameConfig.ts index b73e6ca..b072e01 100644 --- a/packages/shared/src/config/gameConfig.ts +++ b/packages/shared/src/config/gameConfig.ts @@ -46,6 +46,7 @@ BOMB_COOLDOWN_MS: 1200, // 設置後に次の爆弾を置けるまでの待機時間(ms) // チームカラー設定 + TEAM_COUNT: 4, // teamId インデックス順カラー配列 TEAM_COLORS: ['#FF4B4B', '#4B4BFF', '#4BFF4B', '#FFD700'],