31 lines
771 B
GDScript3
31 lines
771 B
GDScript3
|
|
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)))
|