From 484409b64d0a1dadcf35fa664ecf3dcd4808a83a Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Thu, 29 Jun 2023 21:52:26 -0400 Subject: custom map overrides --- client/src/logic/players.ts | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'client/src/logic/players.ts') 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 -- cgit v1.2.3-freya