framework for adventurers

This commit is contained in:
2024-11-20 21:29:54 +01:00
parent 98cd9d829f
commit 53865f1349
5 changed files with 147 additions and 0 deletions
+38
View File
@@ -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;
}
}
+61
View File
@@ -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<Item|null> = [];
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;
}
}
+34
View File
@@ -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;
}
}
+8
View File
@@ -0,0 +1,8 @@
export enum ItemType {
HELMET = 'helmet',
ARMOR = 'armor',
BOOTS = 'boots',
WEAPON = 'weapon',
}
+6
View File
@@ -0,0 +1,6 @@
export default interface StatHolder {
getPower(): number;
getDefense(): number;
}