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