From 43a28ad77190f2e55e2e6ba65a9a7b5b1f5dea6c Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 20 Aug 2023 20:48:29 +0200 Subject: area progression, item usage --- resources/js/classes/InventoryItem.js | 3 ++- resources/js/classes/Monster.js | 4 ++++ resources/js/classes/State.js | 5 +++++ resources/js/classes/Trainer.js | 36 +++++++++++++++++++++++++---------- 4 files changed, 37 insertions(+), 11 deletions(-) (limited to 'resources/js/classes') diff --git a/resources/js/classes/InventoryItem.js b/resources/js/classes/InventoryItem.js index d6eb311..9db42ff 100644 --- a/resources/js/classes/InventoryItem.js +++ b/resources/js/classes/InventoryItem.js @@ -12,8 +12,9 @@ class InventoryItem { /** * @param {Item} item */ - constructor (item) { + constructor (item, quantity = 1) { this.item = item; + this.quantity = quantity; } /* Item */ diff --git a/resources/js/classes/Monster.js b/resources/js/classes/Monster.js index 5c930f8..69bb654 100644 --- a/resources/js/classes/Monster.js +++ b/resources/js/classes/Monster.js @@ -66,6 +66,10 @@ class Monster { return DB.monsters[this.slug].types; } + get category () { + return DB.monsters[this.slug].category; + } + get moveset () { return DB.monsters[this.slug].moveset; } diff --git a/resources/js/classes/State.js b/resources/js/classes/State.js index 5d3cfff..6180c52 100644 --- a/resources/js/classes/State.js +++ b/resources/js/classes/State.js @@ -48,4 +48,9 @@ class State { * @type {Technique} */ activeTechnique = null; + + /** + * @type {InventoryItem} + */ + activeBall = null; }; diff --git a/resources/js/classes/Trainer.js b/resources/js/classes/Trainer.js index f2c2df9..d63e52d 100644 --- a/resources/js/classes/Trainer.js +++ b/resources/js/classes/Trainer.js @@ -7,6 +7,9 @@ class Trainer { */ type = 'trainer'; + name = ''; + sprite = ''; + /** * @type {Monster[]} */ @@ -22,28 +25,41 @@ class Trainer { */ activeMonster = []; - constructor (monsters, inventory = []) { - this.#monsters = monsters; - this.#inventory = inventory; + /** + * @param {(Monster[]|Object[])} monsters + * @param {(InventoryItem[]|Object[])} inventory + */ + constructor (trainerData) { + this.#monsters = trainerData.monsters; + this.#inventory = trainerData.inventory || []; + this.name = trainerData.name; + this.sprite = trainerData.sprite; } async initialize () { for (const monsterData of this.#monsters) { - const monster = await fetchMonster(monsterData.slug); + if (monsterData instanceof Monster) { + this.monsters.push(monsterData); + } else { + const monster = await fetchMonster(monsterData.slug); - monster.level = monsterData.level || monster.level; + monster.level = monsterData.level || monster.level; - this.monsters.push(monster); + this.monsters.push(monster); + } } this.activeMonster = this.monsters[0]; for (const itemData of this.#inventory) { - const item = new InventoryItem(await fetchItem(itemData.slug)); - - item.amount = itemData.amount || 1; + if (itemData instanceof InventoryItem) { + this.inventory.push(itemData); + } else { + const item = new InventoryItem(await fetchItem(itemData.slug)); - this.inventory.push(item); + item.quantity = itemData.quantity || 1; + this.inventory.push(item); + } } } } -- cgit v1.2.3