Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
with
74 additions
and 33 deletions.
- +1 −1 levels/test/ai_test.json
- +4 −1 levels/test/entry_hall_update.json
- +12 −21 src/inventory.js
- +52 −0 src/inventory_item.js
- +3 −8 src/pickup.js
- +2 −2 src/player.js
@@ -0,0 +1,52 @@ | ||
function equip(i, effect, inventory) { | ||
let tmp = inventory.equipped[effect.target]; | ||
inventory.equipped[effect.target] = i; | ||
if(tmp) { | ||
inventory.items[inventory.selected] = tmp; | ||
} else { | ||
inventory.items.splice(inventory.selected, 1); | ||
inventory.selected--; | ||
if(inventory.selected == -1 && inventory.items.length) { | ||
inventory.selected = 0; | ||
} | ||
} | ||
console.log("Equipped"); | ||
} | ||
|
||
function heal(i, effect, player, inventory) { | ||
player.stats.health.value += effect.amount; | ||
player.stats.update(); | ||
remove_item(i, effect, inventory); | ||
} | ||
|
||
function remove_item(i, effect, inventory) { | ||
inventory.remove(i); | ||
} | ||
|
||
class InventoryItem { | ||
constructor(name, icon, effects=null) { | ||
this.name = name; | ||
this.icon = icon; | ||
this.effects = effects; | ||
} | ||
|
||
use(player) { | ||
///handle effects | ||
for(let e of this.effects) { | ||
switch(e['type']) { | ||
case 'equip': | ||
equip(this, e, player.inventory); | ||
break; | ||
case 'heal': | ||
heal(this, e, player, player.inventory); | ||
break; | ||
case null: | ||
break; | ||
default: | ||
console.log("Unhandled effect "+e['effect']); | ||
} | ||
} | ||
} | ||
} | ||
|
||
export default InventoryItem; |