54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
import { Item } from './Item.js';
|
|
|
|
/**
|
|
* Registry for all items in the game
|
|
*/
|
|
export class ItemRegistry {
|
|
static items = new Map();
|
|
|
|
static {
|
|
// Register items
|
|
// Weapons
|
|
this.register(this.createWeapon('iron_sword', 'Iron Sword', 15, 5));
|
|
this.register(this.createWeapon('steel_claw', 'Steel Claw', 20, 3));
|
|
|
|
// Armor
|
|
this.register(this.createArmor('leather_armor', 'Leather Armor', 10, 5));
|
|
|
|
// Consumables
|
|
this.register(this.createConsumable('health_potion', 'Health Potion', 50));
|
|
}
|
|
|
|
static register(item) {
|
|
this.items.set(item.id, item);
|
|
}
|
|
|
|
static get(id) {
|
|
return this.items.get(id);
|
|
}
|
|
|
|
static createWeapon(id, name, damage, speed) {
|
|
const item = new Item(id, name, 'weapon');
|
|
item.damage = damage;
|
|
item.attackSpeed = speed;
|
|
item.description = `Weapon: +${damage} damage, ${speed} speed`;
|
|
return item;
|
|
}
|
|
|
|
static createArmor(id, name, defense, hp) {
|
|
const item = new Item(id, name, 'armor');
|
|
item.defense = defense;
|
|
item.maxHp = hp;
|
|
item.description = `Armor: +${defense} defense, +${hp} HP`;
|
|
return item;
|
|
}
|
|
|
|
static createConsumable(id, name, healAmount) {
|
|
const item = new Item(id, name, 'consumable');
|
|
item.healAmount = healAmount;
|
|
item.description = `Restores ${healAmount} HP`;
|
|
return item;
|
|
}
|
|
}
|
|
|
|
|