2025-09-07 19:48:58 +02:00
|
|
|
extends Upgrade
|
2025-09-03 18:39:58 +02:00
|
|
|
class_name CubeUpgrade
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum TYPE {
|
2025-09-07 19:48:58 +02:00
|
|
|
TIER,
|
|
|
|
|
MAX_HEALTH,
|
|
|
|
|
WAVE_HEALTH_REGEN,
|
|
|
|
|
WAVE_MONEY,
|
|
|
|
|
BOOST_REGEN_ENERGY,
|
2025-09-03 18:39:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@export var type : TYPE
|
|
|
|
|
|
2025-09-07 19:48:58 +02:00
|
|
|
|
2025-09-10 23:48:22 +02:00
|
|
|
func isLevelMax() -> bool :
|
|
|
|
|
return super.isLevelMax() || type == TYPE.TIER && Game.maxTier == Game.tier
|
|
|
|
|
|
|
|
|
|
|
2025-09-07 19:48:58 +02:00
|
|
|
func canUpgrade() -> bool:
|
2025-09-10 23:48:22 +02:00
|
|
|
return super.canUpgrade() && (type != TYPE.TIER || Game.maxTier > Game.tier)
|
2025-09-07 19:48:58 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
func upgrade(_subject = null) -> bool:
|
|
|
|
|
if not canUpgrade():
|
|
|
|
|
return false
|
|
|
|
|
|
|
|
|
|
match type:
|
|
|
|
|
TYPE.TIER: upgradeProperty(Game, "tier")
|
|
|
|
|
TYPE.MAX_HEALTH: upgradeProperty(Game, "max_health")
|
|
|
|
|
TYPE.WAVE_HEALTH_REGEN: upgradeProperty(Game, "wave_health_regen")
|
|
|
|
|
TYPE.WAVE_MONEY: upgradeProperty(Game, "wave_money")
|
|
|
|
|
TYPE.BOOST_REGEN_ENERGY: upgradeProperty(Game, "energy_boost")
|
|
|
|
|
|
|
|
|
|
upgradeUpgrade()
|
|
|
|
|
|
|
|
|
|
#Game.changed.emit()
|
|
|
|
|
return true
|