- commit
- dc752424237ab0679ce7ed34fe8952eb1856c3c0
- parent
- 89f06f6c76728d0c7eb45bccd0aa287353220b8c
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-09-27 17:15
implement client side item API
Diffstat
| M | static/main.js | 28 | +++++++++++++++++++++------- |
1 files changed, 21 insertions, 7 deletions
diff --git a/static/main.js b/static/main.js
@@ -52,10 +52,7 @@ var game = {
52 52 objects: {},
53 53 health: 1,
54 54 healthTotal: 1,
55 -1 inventory: {
56 -1 'potion': 1,
57 -1 'dagger': 1,
58 -1 },
-1 55 inventory: {},
59 56
60 57 getRect(pos, withWalls) {
61 58 for (const rect of this.rects) {
@@ -167,6 +164,7 @@ var screen = {
167 164 menuOpen: false,
168 165 menuCursor: 0,
169 166 menuOffset: 0,
-1 167 menuSelected: null,
170 168
171 169 updateSize() {
172 170 this.rows = binSearch(v => {
@@ -228,6 +226,8 @@ var screen = {
228 226 this.menuOffset = this.menuCursor;
229 227 }
230 228
-1 229 this.menuSelected = items.length ? items[this.menuCursor][0] : null;
-1 230
231 231 for (let i = 0; i < rows; i++) {
232 232 if (i + this.menuOffset < items.length) {
233 233 var [name, count] = items[i + this.menuOffset];
@@ -317,6 +317,16 @@ socket.onmessage = function(event) {
317 317 game.healthTotal = msg.healthTotal;
318 318 } else if (msg.action === 'remove') {
319 319 delete game.objects[msg.id];
-1 320 } else if (msg.action === 'addItem') {
-1 321 game.inventory[msg.item] = game.inventory[msg.item] || 0;
-1 322 game.inventory[msg.item] += msg.amount;
-1 323 } else if (msg.action === 'removeItem') {
-1 324 if (msg.item in game.inventory) {
-1 325 game.inventory[msg.item] -= msg.amount;
-1 326 if (game.inventory[msg.item] <= 0) {
-1 327 delete game.inventory[msg.item];
-1 328 }
-1 329 }
320 330 } else {
321 331 console.log(msg);
322 332 }
@@ -331,11 +341,15 @@ document.onkeydown = function(event) {
331 341 } else if (event.key === 'ArrowDown' || event.key === 's') {
332 342 screen.menuCursor += 1;
333 343 } else if (event.key === 'ArrowRight' || event.key === 'd') {
334 -1 // TODO: drop
-1 344 if (screen.menuSelected) {
-1 345 send({action: 'drop', item: screen.menuSelected});
-1 346 }
335 347 } else if (event.key === 'q') {
336 348 screen.toggleMenu();
337 349 } else if (event.key === 'Enter' || event.key === 'e') {
338 -1 // TODO: use
-1 350 if (screen.menuSelected) {
-1 351 send({action: 'use', item: screen.menuSelected});
-1 352 }
339 353 } else {
340 354 return;
341 355 }
@@ -352,7 +366,7 @@ document.onkeydown = function(event) {
352 366 } else if (event.key === 'q') {
353 367 screen.toggleMenu();
354 368 } else if (event.key === 'Enter' || event.key === 'e') {
355 -1 // TODO: pick up
-1 369 send({action: 'pickup'});
356 370 } else {
357 371 return;
358 372 }