import { Player } from "../Player/Player"; import { UpgradeType } from "./UpgradeType"; export class Upgrader { private player: Player; private typeToAction: Map void> = new Map void>(); private typeToLevel: Map = new Map(); private typeToMaxLevel: Map = new Map(); public constructor(player: Player) { this.player = player; this.setTypeMaps(UpgradeType.WeaponLength, this.upgradeWeaponLength, 5); this.setTypeMaps(UpgradeType.WeaponDamage, this.upgradeWeaponDamage, 5); } public upgradeSkill(type: UpgradeType): void { if (!this.typeToAction.has(type)) throw new Error("Upgrade does not have " + type); this.typeToAction.get(type)(); } private setTypeMaps(upgradeType: UpgradeType, action: () => void, maxLevel: number): void { this.typeToAction.set(upgradeType, action); this.typeToLevel.set(upgradeType, 0); this.typeToMaxLevel.set(upgradeType, maxLevel); } private upgradeWeaponLength(): void { this.player.Weapon.upgradeWeaponLength(); } private upgradeWeaponDamage(): void { this.player.Weapon.upgradeWeaponDamage(); } }