summaryrefslogtreecommitdiff
path: root/client/src/logic
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-06-29 21:52:26 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-06-29 21:52:26 -0400
commit484409b64d0a1dadcf35fa664ecf3dcd4808a83a (patch)
treeba9bd26d0914f369d3eafa8a04b12bec69a70fcc /client/src/logic
parentwhen players die, they should acutally fucking die (diff)
downloadtuxman-484409b64d0a1dadcf35fa664ecf3dcd4808a83a.tar.gz
tuxman-484409b64d0a1dadcf35fa664ecf3dcd4808a83a.tar.bz2
tuxman-484409b64d0a1dadcf35fa664ecf3dcd4808a83a.zip
custom map overrides
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