extends Upgrade class_name TowerUpgrade enum TYPE { MAX_ENERGY, ENERGY_REGEN, ENERGY_COST, DAMAGE, AOE_INCREASE, COOLDOWN, } @export var type : TYPE func upgrade(tower: Tower) -> void: match type: TYPE.MAX_ENERGY: upgradeTowerProperty(tower, "max_energy") TYPE.ENERGY_REGEN: upgradeTowerProperty(tower, "energy_regen") TYPE.ENERGY_COST: upgradeTowerProperty(tower, "energy_cost") TYPE.DAMAGE: upgradeTowerProperty(tower.projectileRessource, "damage") TYPE.AOE_INCREASE: upgradeTowerProperty(tower.projectileRessource.damageArea, "radius") TYPE.COOLDOWN: upgradeTowerProperty(tower, "action_cooldown") upgradeUpgrade() func upgradeTowerProperty(tower: Variant, property: String) -> void: tower.set(property, getNextValue(tower.get(property)))