From b227fc9c2ef361f8aa5ee2f24aa1ade6bc972a73 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 20 Aug 2023 14:32:40 +0200 Subject: area progress --- resources/js/classes/Area.js | 37 +++++++++++++++++++++++++++++++++++++ resources/js/classes/State.js | 15 +++++++++++++++ resources/js/classes/Trainer.js | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 resources/js/classes/Area.js (limited to 'resources/js/classes') diff --git a/resources/js/classes/Area.js b/resources/js/classes/Area.js new file mode 100644 index 0000000..3451757 --- /dev/null +++ b/resources/js/classes/Area.js @@ -0,0 +1,37 @@ +class Area { + slug = ''; + + monsterProgress = 0; + trainerProgress = 0; + isCompleted = false; + + constructor (slug) { + this.slug = slug; + } + + async initialize () {} + + get encounters () { + return DB.areas[this.slug].encounters; + } + + get requiredEncounters () { + return DB.areas[this.slug].requiredEncounters; + } + + get trainers () { + return DB.areas[this.slug].trainers; + } + + get environment () { + return DB.areas[this.slug].environment; + } + + get previousArea () { + return DB.areas[this.slug].previousArea; + } + + get nextArea () { + return DB.areas[this.slug].nextArea; + } +} diff --git a/resources/js/classes/State.js b/resources/js/classes/State.js index 4b209e2..5d3cfff 100644 --- a/resources/js/classes/State.js +++ b/resources/js/classes/State.js @@ -4,6 +4,16 @@ class State { */ language = 'en_US'; + /** + * @type {Object.} + */ + areaProgress = {}; + + /** + * @type {Area} + */ + currentArea = null; + /** * @type {number} */ @@ -29,6 +39,11 @@ class State { */ opponent = null; + /** + * @type {Monster} + */ + rivalMonster = null; + /** * @type {Technique} */ diff --git a/resources/js/classes/Trainer.js b/resources/js/classes/Trainer.js index 668c92b..f2c2df9 100644 --- a/resources/js/classes/Trainer.js +++ b/resources/js/classes/Trainer.js @@ -1,4 +1,12 @@ class Trainer { + #monsters = []; + #inventory = []; + + /** + * @type {('trainer' | 'monster')} + */ + type = 'trainer'; + /** * @type {Monster[]} */ @@ -13,4 +21,29 @@ class Trainer { * @type {Monster} */ activeMonster = []; + + constructor (monsters, inventory = []) { + this.#monsters = monsters; + this.#inventory = inventory; + } + + async initialize () { + for (const monsterData of this.#monsters) { + const monster = await fetchMonster(monsterData.slug); + + monster.level = monsterData.level || monster.level; + + 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; + + this.inventory.push(item); + } + } } -- cgit v1.2.3