extends Upgrade class_name CubeUpgrade enum TYPE { TIER, MAX_HEALTH, WAVE_HEALTH_REGEN, WAVE_MONEY, BOOST_REGEN_ENERGY, } @export var type : TYPE func isLevelMax() -> bool : return super.isLevelMax() || type == TYPE.TIER && Game.maxTier == Game.tier func canUpgrade() -> bool: return super.canUpgrade() && (type != TYPE.TIER || Game.maxTier > Game.tier) 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