laneya2

cave exploration game
git clone https://git.ce9e.org/laneya2.git

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         }