From 53865f13494f6c8cbfdb26067f53e52254b6dd05 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Wed, 20 Nov 2024 21:29:54 +0100 Subject: [PATCH] framework for adventurers --- src/models/Adventurer.ts | 38 +++++++++++++++++++ src/models/AdventurerInventory.ts | 61 +++++++++++++++++++++++++++++++ src/models/Item.ts | 34 +++++++++++++++++ src/models/ItemType.ts | 8 ++++ src/models/StatHolder.ts | 6 +++ 5 files changed, 147 insertions(+) create mode 100644 src/models/Adventurer.ts create mode 100644 src/models/AdventurerInventory.ts create mode 100644 src/models/Item.ts create mode 100644 src/models/ItemType.ts create mode 100644 src/models/StatHolder.ts diff --git a/src/models/Adventurer.ts b/src/models/Adventurer.ts new file mode 100644 index 0000000..b0b540a --- /dev/null +++ b/src/models/Adventurer.ts @@ -0,0 +1,38 @@ +import type StatHolder from "@/models/StatHolder.ts"; +import type AdventurerInventory from "@/models/AdventurerInventory.ts"; + +export default class Adventurer implements StatHolder { + + name: string; + experience: number = 0; + basePower: number = 0; + baseDefense: number = 0; + inventory: AdventurerInventory; + + constructor( + name: string, + experience: number = 0, + basePower: number = 0, + baseDefense: number = 0, + inventory: AdventurerInventory + ) { + this.name = name; + this.experience = experience; + this.basePower = basePower; + this.baseDefense = baseDefense; + this.inventory = inventory; + } + + getPower(): number { + let power = this.basePower; + power += this.inventory.getPower(); + return power; + } + + getDefense(): number { + let defense = this.baseDefense; + defense += this.inventory.getDefense(); + return defense; + } + +} diff --git a/src/models/AdventurerInventory.ts b/src/models/AdventurerInventory.ts new file mode 100644 index 0000000..1c71f17 --- /dev/null +++ b/src/models/AdventurerInventory.ts @@ -0,0 +1,61 @@ +import type Item from "@/models/Item.ts"; +import type StatHolder from "@/models/StatHolder.ts"; + +export default class AdventurerInventory implements StatHolder { + + helmetId = 0; + armorId = 1; + bootsId = 2; + weaponId = 3; + + items: Array = []; + + constructor( + helmet: Item | null = null, + armor: Item | null = null, + boots: Item | null = null, + weapon: Item | null = null + ) { + this.items[this.helmetId] = helmet; + this.items[this.armorId] = armor; + this.items[this.bootsId] = boots; + this.items[this.weaponId] = weapon; + } + + getHelmet(): Item | null { + return this.items[this.helmetId]; + } + + getArmor(): Item | null { + return this.items[this.armorId]; + } + + getBoots(): Item | null { + return this.items[this.bootsId]; + } + + getWeapon(): Item | null { + return this.items[this.weaponId]; + } + + getDefense(): number { + let defense = 0; + for (let item of this.items) { + if (item !== null) { + defense += item.getDefense(); + } + } + return defense + } + + getPower(): number { + let power = 0; + for (let item of this.items) { + if (item !== null) { + power += item.getPower(); + } + } + return power; + } + +} diff --git a/src/models/Item.ts b/src/models/Item.ts new file mode 100644 index 0000000..6277de9 --- /dev/null +++ b/src/models/Item.ts @@ -0,0 +1,34 @@ +import type StatHolder from "@/models/StatHolder.ts"; +import type {ItemType} from "@/models/ItemType.ts"; + +export default class Item implements StatHolder { + + name: string; + description: string; + power: number; + defense: number; + type: ItemType; + + constructor( + name: string, + description: string, + power: number, + defense: number, + type: ItemType + ) { + this.name = name; + this.description = description; + this.power = power; + this.defense = defense; + this.type = type; + } + + getDefense(): number { + return this.defense; + } + + getPower(): number { + return this.power; + } + +} diff --git a/src/models/ItemType.ts b/src/models/ItemType.ts new file mode 100644 index 0000000..228fe48 --- /dev/null +++ b/src/models/ItemType.ts @@ -0,0 +1,8 @@ +export enum ItemType { + + HELMET = 'helmet', + ARMOR = 'armor', + BOOTS = 'boots', + WEAPON = 'weapon', + +} diff --git a/src/models/StatHolder.ts b/src/models/StatHolder.ts new file mode 100644 index 0000000..c7a89f6 --- /dev/null +++ b/src/models/StatHolder.ts @@ -0,0 +1,6 @@ +export default interface StatHolder { + + getPower(): number; + getDefense(): number; + +}