diff options
Diffstat (limited to '')
-rw-r--r-- | client/src/logic/logic.ts | 9 | ||||
-rw-r--r-- | client/src/logic/players.ts | 32 |
2 files changed, 38 insertions, 3 deletions
diff --git a/client/src/logic/logic.ts b/client/src/logic/logic.ts index 1c3ec1a..480f4db 100644 --- a/client/src/logic/logic.ts +++ b/client/src/logic/logic.ts @@ -33,10 +33,17 @@ export const onLogic = ( data.frame = frame random(data) - let startPressed = updatePlayers(data, input); + let startPressed = updatePlayers(data, input) + let playersLeft = 0 for (let id in data.players) { + let player = data.players[id] + + if (!player) { + continue + } + if (player.dead) { player.framesDead++ } else { diff --git a/client/src/logic/players.ts b/client/src/logic/players.ts index 96337ea..ae7dcbe 100644 --- a/client/src/logic/players.ts +++ b/client/src/logic/players.ts @@ -1,4 +1,5 @@ -import { GameState, Input, Key, Rotation } from "../types.js" +import { checkMap, decompressMap, genMap } from "../map.js" +import { GAME_MAP_COUNT, GameState, Input, Key, Rotation, Vec2 } from "../types.js" const canPlayerJoin = (data: GameState) => { @@ -16,6 +17,27 @@ const canPlayerJoin = (data: GameState) => { } +const loadMaps = (maps: {[key: number]: string}): boolean => { + + for (let mapId = 0; mapId < GAME_MAP_COUNT; mapId++) { + + let {width, height, data} = decompressMap(maps[mapId]) + let map = genMap(width, height, data, mapId) + let [success, result] = checkMap(map) + + if (!success) { + alert(result) + return false + } + + map.spawns = result as Vec2[] + + } + + return true +} + + export const updatePlayers = (data: GameState, input: Input) => { let startPressed = false; @@ -62,7 +84,13 @@ export const updatePlayers = (data: GameState, input: Input) => { } - startPressed ||= input.players[id].start; + if (input.players[id].start) { + let maps = input.players[id].maps + if (loadMaps(maps)) { + startPressed = true + } + } + if (input.players[id].key) data.input[id] = input.players[id].key |