mirror of
https://github.com/YouHaveTrouble/GuildMaster.git
synced 2026-05-11 22:16:59 +00:00
framework for adventurers
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
export enum ItemType {
|
||||
|
||||
HELMET = 'helmet',
|
||||
ARMOR = 'armor',
|
||||
BOOTS = 'boots',
|
||||
WEAPON = 'weapon',
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
export default interface StatHolder {
|
||||
|
||||
getPower(): number;
|
||||
getDefense(): number;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user