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/logic.ts | 9 ++++++++- client/src/logic/players.ts | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) (limited to 'client/src/logic') 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 -- cgit v1.2.3-freya