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 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()

View file

@ -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"]

View file

@ -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]

View file

@ -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()

View file

@ -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:

View file

@ -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):