summaryrefslogtreecommitdiff
path: root/resources/js/classes
diff options
context:
space:
mode:
Diffstat (limited to 'resources/js/classes')
-rw-r--r--resources/js/classes/Area.js37
-rw-r--r--resources/js/classes/State.js15
-rw-r--r--resources/js/classes/Trainer.js33
3 files changed, 85 insertions, 0 deletions
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
@@ -5,6 +5,16 @@ class State {
language = 'en_US';
/**
+ * @type {Object.<string, Area>}
+ */
+ areaProgress = {};
+
+ /**
+ * @type {Area}
+ */
+ currentArea = null;
+
+ /**
* @type {number}
*/
turn = 0;
@@ -30,6 +40,11 @@ class State {
opponent = null;
/**
+ * @type {Monster}
+ */
+ rivalMonster = null;
+
+ /**
* @type {Technique}
*/
activeTechnique = null;
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);
+ }
+ }
}