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