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