diff --git a/src/main.js b/src/main.js index 56e8a9d..a02fa6e 100644 --- a/src/main.js +++ b/src/main.js @@ -20,6 +20,7 @@ let particles = []; let screenShake = 0; let trajectories = []; let idle = false; +let winner; // Init layers const sky = createSky(W, H); @@ -41,6 +42,7 @@ for (let [color, borderColor] of PLAYER_COLORS) { const y = landHeight(terrain, x) + 1; const a = x > W/2 ? 45 : 180-45; players.push({ + name: `Player ${i+1}`, x, y, a, c: color, cb: borderColor, p: PLAYER_INITIAL_POWER, @@ -257,6 +259,15 @@ function update() { } else if (state === 'end-turn') { + const alivePlayers = players.filter(x => !x.dead); + + if (alivePlayers.length === 0) { + return state = 'game-over'; + } else if (alivePlayers.length === 1) { + winner = alivePlayers[0]; + return state = 'player-win'; + } + const player = players[currentPlayer]; const weaponType = player.weapons[player.currentWeapon]; @@ -267,17 +278,11 @@ function update() { player.currentWeapon = wrap(0, player.currentWeapon, player.weapons.length-1); player.fallHeight = 0; - let nextPlayer; - for (let p=0; p x.id === weaponType.type); - drawText(foreground, `NRG:${player.energy} AIM:${player.a} PWR:${player.p} ${clamp(0, weaponType.ammo, 99)} ${weapon.name}`, 8, 8, player.c, 'left'); + drawText(foreground, `${player.name} NRG:${player.energy} AIM:${player.a} PWR:${player.p} ${clamp(0, weaponType.ammo, 99)} ${weapon.name}`, 8, 8, player.c, 'left'); drawText(foreground, `WIND: ${wind<=0?'<':''}${Math.abs(wind)}${wind>=0?'>':''}`, W-8, 8, 'white', 'right'); }