laneya2

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

commit
3e693ef5041a924e27e3a98e0b2d25f7463d6926
parent
52b433470da6a6bca848ef253ac286e55e5ed502
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2024-10-05 09:58
display equipped items in client

Diffstat

M player.go 16 ++++++++++++++++
M static/main.js 21 +++++++++++++++++----

2 files changed, 33 insertions, 4 deletions


diff --git a/player.go b/player.go

@@ -118,12 +118,20 @@ func (player *Player) RemoveItem(name string) {
  118   118 			if item, ok := Items[name]; ok {
  119   119 				player.UnapplyItem(item)
  120   120 				player.CommitStats()
   -1   121 				player.Enqueue(Message{
   -1   122 					"action": "setWeapon",
   -1   123 					"item":   player.Weapon,
   -1   124 				})
  121   125 			}
  122   126 		} else if name == player.Armor {
  123   127 			player.Armor = ""
  124   128 			if item, ok := Items[name]; ok {
  125   129 				player.UnapplyItem(item)
  126   130 				player.CommitStats()
   -1   131 				player.Enqueue(Message{
   -1   132 					"action": "setArmor",
   -1   133 					"item":   player.Armor,
   -1   134 				})
  127   135 			}
  128   136 		}
  129   137 	}
@@ -209,6 +217,10 @@ func (player *Player) UseItem(name string) {
  209   217 		} else {
  210   218 			player.Weapon = ""
  211   219 		}
   -1   220 		player.Enqueue(Message{
   -1   221 			"action": "setWeapon",
   -1   222 			"item":   player.Weapon,
   -1   223 		})
  212   224 	case ARMOR:
  213   225 		if old, ok := Items[player.Armor]; ok {
  214   226 			player.UnapplyItem(old)
@@ -219,6 +231,10 @@ func (player *Player) UseItem(name string) {
  219   231 		} else {
  220   232 			player.Armor = ""
  221   233 		}
   -1   234 		player.Enqueue(Message{
   -1   235 			"action": "setArmor",
   -1   236 			"item":   player.Armor,
   -1   237 		})
  222   238 	}
  223   239 
  224   240 	player.CommitStats()

diff --git a/static/main.js b/static/main.js

@@ -61,6 +61,8 @@ var game = {
   61    61         lineOfSight: 0,
   62    62     },
   63    63     inventory: {},
   -1    64     weapon: '',
   -1    65     armor: '',
   64    66 
   65    67     getRect(pos, withWalls) {
   66    68         for (const rect of this.rects) {
@@ -210,16 +212,16 @@ var screen = {
  210   212         }
  211   213     },
  212   214 
  213    -1     table(items, cols) {
   -1   215     table(stats, cols) {
  214   216         var c = Math.floor(cols / 3);
  215   217         var item = ITEMS[this.menuSelected] || {};
  216    -1         var rows = items.map(([label, key]) => [
   -1   218         var rows = stats.map(([label, key]) => [
  217   219             label,
  218   220             '' + game.stats[key],
  219   221             item[key] ? ((item[key] > 0 ? '+' : '') + item[key]) : '',
  220   222             item[key],
  221   223         ]);
  222    -1         var l1 = Math.max(...rows.map(row => row[0].length));
   -1   224         var l1 = Math.max('Weapon'.length, 'Armor'.length, ...rows.map(row => row[0].length));
  223   225         var l2 = Math.max(...rows.map(row => row[1].length));
  224   226         var l3 = Math.max(...rows.map(row => row[2].length));
  225   227 
@@ -239,6 +241,13 @@ var screen = {
  239   241                 $pre.append('\n');
  240   242             }
  241   243         });
   -1   244 
   -1   245         this.commitSpan(('Weapon'.substr(0, l1) + ':').padEnd(l1 + 2), -1);
   -1   246         this.commitSpan(game.weapon.padEnd(c - (l1 + 2)), 1);
   -1   247 
   -1   248         this.commitSpan(('Armor'.substr(0, l1) + ':').padEnd(l1 + 2), -1);
   -1   249         this.commitSpan(game.armor, 3);
   -1   250         $pre.append('\n');
  242   251     },
  243   252 
  244   253     renderHealth() {
@@ -249,7 +258,7 @@ var screen = {
  249   258     },
  250   259 
  251   260     renderMenu() {
  252    -1         var rows = this.rows - 4;
   -1   261         var rows = this.rows - 5;
  253   262         var items = Object.entries(game.inventory);
  254   263         items.sort();
  255   264 
@@ -373,6 +382,10 @@ socket.onmessage = function(event) {
  373   382             } else {
  374   383                 delete game.inventory[msg.item];
  375   384             }
   -1   385         } else if (msg.action === 'setWeapon') {
   -1   386             game.weapon = msg.item;
   -1   387         } else if (msg.action === 'setArmor') {
   -1   388             game.armor = msg.item;
  376   389         } else {
  377   390             console.log(msg);
  378   391         }