fix: blueprint state, cube upgrade, lvl max management on btn

This commit is contained in:
Varylios 2025-09-10 23:48:22 +02:00
parent 4bd9a76d64
commit d4c62243d8
6 changed files with 26 additions and 18 deletions

View file

@ -5,7 +5,7 @@ extends Node
signal cube_integrity_changed signal cube_integrity_changed
signal money_changed signal money_changed
signal loose signal lose
signal allowed_tower_has_change signal allowed_tower_has_change
@ -100,6 +100,6 @@ func spendMoney(amount : int) -> bool:
func death(): func death():
loose.emit() lose.emit()
Transition.goto("res://UI/defeat_screen.tscn") Transition.goto("res://UI/defeat_screen.tscn")
resetGame() resetGame()

View file

@ -35,6 +35,8 @@ price = 150
projectileRessource = SubResource("Resource_lhd8w") projectileRessource = SubResource("Resource_lhd8w")
towerRange = SubResource("SphereShape3D_6bcjo") towerRange = SubResource("SphereShape3D_6bcjo")
action_cooldown = 2.5 action_cooldown = 2.5
max_energy = 100.0
energy_regen = 10.0
energy_cost = 25.0 energy_cost = 25.0
[node name="Sprite3D" parent="." index="5"] [node name="Sprite3D" parent="." index="5"]

View file

@ -59,7 +59,7 @@ var energy : float :
energy = clampf(value, 0, max_energy) energy = clampf(value, 0, max_energy)
energyBar.value = energy energyBar.value = energy
energy_changed.emit() energy_changed.emit()
if not energy: if not energy && state != STATE.BLUEPRINT:
state = STATE.EXHAUSTED state = STATE.EXHAUSTED
var availableTargets : Array[Enemy] var availableTargets : Array[Enemy]

View file

@ -10,8 +10,8 @@ var upgrade: Upgrade
func _ready() -> void: func _ready() -> void:
Game.money_changed.connect(moneyChanged) Game.money_changed.connect(onMoneyChanged)
upgradeBtn.pressed.connect(upgradeTower) upgradeBtn.pressed.connect(onUpgradePressed)
func setUpgrade(_upgrade: Upgrade) -> void: func setUpgrade(_upgrade: Upgrade) -> void:
@ -24,24 +24,24 @@ func setTower(_tower: Tower) -> void:
updateVisuals() updateVisuals()
func upgradeTower() -> void: func onUpgradePressed() -> void:
if upgrade.upgrade(tower): if upgrade.upgrade(tower):
updateVisuals() updateVisuals()
func updateVisuals() -> void: func updateVisuals() -> void:
$UpgradeName.text = upgrade.text $UpgradeName.text = upgrade.text
if upgrade.isLevelMax: if upgrade.isLevelMax():
upgradeBtn.visible = false upgradeBtn.visible = false
if upgrade.level:
$UpgradeName.text += " Lvl. max" $UpgradeName.text += " Lvl. max"
return return
if upgrade.level: if upgrade.level:
$UpgradeName.text += " Lvl. %d" % upgrade.level $UpgradeName.text += " Lvl. %d" % upgrade.level
upgradeBtn.text = "%d" % upgrade.cost upgradeBtn.text = "%d" % upgrade.cost
if not upgrade.canUpgrade(): upgradeBtn.disabled = not upgrade.canUpgrade()
upgradeBtn.disabled = true
func onMoneyChanged() -> void:
func moneyChanged() -> void:
upgradeBtn.disabled = not upgrade.canUpgrade() upgradeBtn.disabled = not upgrade.canUpgrade()

View file

@ -13,8 +13,12 @@ enum TYPE {
@export var type : TYPE @export var type : TYPE
func isLevelMax() -> bool :
return super.isLevelMax() || type == TYPE.TIER && Game.maxTier == Game.tier
func canUpgrade() -> bool: 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: func upgrade(_subject = null) -> bool:

View file

@ -27,8 +27,10 @@ enum UPGRADE_DIRECTION { INCREASE = 1, DECREASE = -1 }
var cost : int var cost : int
var level : int = 0 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: func upgrade(_subject = null) -> bool:
@ -45,8 +47,8 @@ func upgradeUpgrade() -> void:
cost = getNextValue(cost, costModificator, costScaleType) cost = getNextValue(cost, costModificator, costScaleType)
func canUpgrade(): func canUpgrade() -> bool:
return not isLevelMax && Game.money >= cost && (tierLock.is_empty() || tierLock[Game.tier] > level) return not isLevelMax() && Game.money >= cost && (tierLock.is_empty() || tierLock[Game.tier] > level)
func getNextValue(oldValue, baseValue, scaleType : SCALE_TYPE): func getNextValue(oldValue, baseValue, scaleType : SCALE_TYPE):