From d4c62243d8b4dff3e82f15813970b1c6dc02814b Mon Sep 17 00:00:00 2001 From: Varylios Date: Wed, 10 Sep 2025 23:48:22 +0200 Subject: [PATCH] fix: blueprint state, cube upgrade, lvl max management on btn --- Globals/Game.gd | 4 ++-- Towers/Scenes/aline.tscn | 2 ++ Towers/Tower.gd | 2 +- UI/UpgradeButton.gd | 20 ++++++++++---------- Upgrades/CubeUpgrade.gd | 6 +++++- Upgrades/Upgrade.gd | 10 ++++++---- 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/Globals/Game.gd b/Globals/Game.gd index 39c5965..d82f1a2 100644 --- a/Globals/Game.gd +++ b/Globals/Game.gd @@ -5,7 +5,7 @@ extends Node signal cube_integrity_changed signal money_changed -signal loose +signal lose signal allowed_tower_has_change @@ -100,6 +100,6 @@ func spendMoney(amount : int) -> bool: func death(): - loose.emit() + lose.emit() Transition.goto("res://UI/defeat_screen.tscn") resetGame() diff --git a/Towers/Scenes/aline.tscn b/Towers/Scenes/aline.tscn index f89c4c9..df4b828 100644 --- a/Towers/Scenes/aline.tscn +++ b/Towers/Scenes/aline.tscn @@ -35,6 +35,8 @@ price = 150 projectileRessource = SubResource("Resource_lhd8w") towerRange = SubResource("SphereShape3D_6bcjo") action_cooldown = 2.5 +max_energy = 100.0 +energy_regen = 10.0 energy_cost = 25.0 [node name="Sprite3D" parent="." index="5"] diff --git a/Towers/Tower.gd b/Towers/Tower.gd index aa40414..43aa403 100644 --- a/Towers/Tower.gd +++ b/Towers/Tower.gd @@ -59,7 +59,7 @@ var energy : float : energy = clampf(value, 0, max_energy) energyBar.value = energy energy_changed.emit() - if not energy: + if not energy && state != STATE.BLUEPRINT: state = STATE.EXHAUSTED var availableTargets : Array[Enemy] diff --git a/UI/UpgradeButton.gd b/UI/UpgradeButton.gd index 69c882b..6303e26 100644 --- a/UI/UpgradeButton.gd +++ b/UI/UpgradeButton.gd @@ -10,8 +10,8 @@ var upgrade: Upgrade func _ready() -> void: - Game.money_changed.connect(moneyChanged) - upgradeBtn.pressed.connect(upgradeTower) + Game.money_changed.connect(onMoneyChanged) + upgradeBtn.pressed.connect(onUpgradePressed) func setUpgrade(_upgrade: Upgrade) -> void: @@ -24,24 +24,24 @@ func setTower(_tower: Tower) -> void: updateVisuals() -func upgradeTower() -> void: +func onUpgradePressed() -> void: if upgrade.upgrade(tower): updateVisuals() func updateVisuals() -> void: $UpgradeName.text = upgrade.text - if upgrade.isLevelMax: + if upgrade.isLevelMax(): upgradeBtn.visible = false - $UpgradeName.text += " Lvl. max" + if upgrade.level: + $UpgradeName.text += " Lvl. max" return if upgrade.level: $UpgradeName.text += " Lvl. %d" % upgrade.level upgradeBtn.text = "%d €" % upgrade.cost - if not upgrade.canUpgrade(): - upgradeBtn.disabled = true - - -func moneyChanged() -> void: + upgradeBtn.disabled = not upgrade.canUpgrade() + + +func onMoneyChanged() -> void: upgradeBtn.disabled = not upgrade.canUpgrade() diff --git a/Upgrades/CubeUpgrade.gd b/Upgrades/CubeUpgrade.gd index c0edc68..d73463e 100644 --- a/Upgrades/CubeUpgrade.gd +++ b/Upgrades/CubeUpgrade.gd @@ -13,8 +13,12 @@ enum TYPE { @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) + return super.canUpgrade() && (type != TYPE.TIER || Game.maxTier > Game.tier) func upgrade(_subject = null) -> bool: diff --git a/Upgrades/Upgrade.gd b/Upgrades/Upgrade.gd index 5ee6875..ba3344b 100644 --- a/Upgrades/Upgrade.gd +++ b/Upgrades/Upgrade.gd @@ -27,8 +27,10 @@ enum UPGRADE_DIRECTION { INCREASE = 1, DECREASE = -1 } var cost : int var level : int = 0 -var isLevelMax : bool : - get(): return maxLevel == level && (tierLock.is_empty() || level == tierLock[Game.maxTier]) + + +func isLevelMax() -> bool : + return not tierLock.is_empty() && level == tierLock[Game.tier] func upgrade(_subject = null) -> bool: @@ -45,8 +47,8 @@ func upgradeUpgrade() -> void: cost = getNextValue(cost, costModificator, costScaleType) -func canUpgrade(): - return not isLevelMax && Game.money >= cost && (tierLock.is_empty() || tierLock[Game.tier] > level) +func canUpgrade() -> bool: + return not isLevelMax() && Game.money >= cost && (tierLock.is_empty() || tierLock[Game.tier] > level) func getNextValue(oldValue, baseValue, scaleType : SCALE_TYPE):