summaryrefslogtreecommitdiff
path: root/client/src/logic/players.ts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--client/src/logic/players.ts32
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