diff options
Diffstat (limited to '')
-rw-r--r-- | client/src/logic/players.ts | 32 |
1 files changed, 30 insertions, 2 deletions
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 |