summaryrefslogtreecommitdiff
path: root/client/src/logic/items.ts
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-06-16 20:38:55 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-06-16 20:38:55 -0400
commit44334fc3852eb832280a335f72e6416c93a9f19f (patch)
tree4a97b6064a97c4ad58c07d89050ad8a11e7a4f70 /client/src/logic/items.ts
parentbetter map bg renderer (diff)
downloadtuxman-44334fc3852eb832280a335f72e6416c93a9f19f.tar.gz
tuxman-44334fc3852eb832280a335f72e6416c93a9f19f.tar.bz2
tuxman-44334fc3852eb832280a335f72e6416c93a9f19f.zip
ts
Diffstat (limited to '')
-rw-r--r--client/src/logic/items.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/client/src/logic/items.ts b/client/src/logic/items.ts
new file mode 100644
index 0000000..5f8a38e
--- /dev/null
+++ b/client/src/logic/items.ts
@@ -0,0 +1,41 @@
+import { getMap, getItemKey } from "../map.js"
+import { GameState, Map, Player } from "../types.js"
+
+const ceilHalf = (n: number): number => {
+ return Math.ceil(n*2)/2
+}
+
+const floorHalf = (n: number): number => {
+ return Math.floor(n*2)/2
+}
+
+const eatItems = (data: GameState, map: Map, player: Player) => {
+
+ let pos = player.pos
+
+ for (let x = ceilHalf(pos.x-.5); x <= floorHalf(pos.x+.5); x += .5) {
+ for (let y = ceilHalf(pos.y-.5); y <= floorHalf(pos.y+.5); y += .5) {
+ let item_key = getItemKey(x, y, map.width)
+ delete data.items[item_key]
+ }
+ }
+}
+
+export const updateItems = (data: GameState) => {
+
+ let map = getMap(data.mapId)
+ if (!map) return
+
+ for(const id in data.input) {
+
+ const player = data.players[id]
+
+ if(!player) {
+ continue;
+ }
+
+ eatItems(data, map, player)
+
+ }
+
+}