feat: add upgrade UI + connect it
This commit is contained in:
parent
4303b430ac
commit
c467282cfb
13 changed files with 177 additions and 82 deletions
|
|
@ -25,15 +25,9 @@ func _ready() -> void:
|
||||||
troopTimer.timeout.connect(spawnTroop)
|
troopTimer.timeout.connect(spawnTroop)
|
||||||
|
|
||||||
|
|
||||||
func onProjectileShooted(projectile: Projectile, startPosition: Vector3) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
add_child(projectile)
|
if event.is_action_pressed("spawn_next_wave"):
|
||||||
projectile.global_position = startPosition
|
changeState(STATE.SPAWN)
|
||||||
|
|
||||||
|
|
||||||
func changeState(newState: STATE) -> void:
|
|
||||||
match newState:
|
|
||||||
STATE.SPAWN when [STATE.IDLE, STATE.WAVE_END].has(state):
|
|
||||||
state = newState
|
|
||||||
|
|
||||||
|
|
||||||
func _process(_delta: float) -> void:
|
func _process(_delta: float) -> void:
|
||||||
|
|
@ -55,6 +49,12 @@ func _process(_delta: float) -> void:
|
||||||
state = STATE.SPAWN
|
state = STATE.SPAWN
|
||||||
|
|
||||||
|
|
||||||
|
func changeState(newState: STATE) -> void:
|
||||||
|
match newState:
|
||||||
|
STATE.SPAWN when [STATE.IDLE, STATE.WAVE_END].has(state):
|
||||||
|
state = newState
|
||||||
|
|
||||||
|
|
||||||
func spawnNextWave() -> void:
|
func spawnNextWave() -> void:
|
||||||
currentTroopIdx = 0
|
currentTroopIdx = 0
|
||||||
wave += 1
|
wave += 1
|
||||||
|
|
@ -126,3 +126,8 @@ func addMap(mapScene : PackedScene) -> void:
|
||||||
Game.money = level.startingMoney
|
Game.money = level.startingMoney
|
||||||
Game.allowedTowers = level.allowedTowers
|
Game.allowedTowers = level.allowedTowers
|
||||||
state = STATE.SPAWN if level.auto_start else STATE.IDLE
|
state = STATE.SPAWN if level.auto_start else STATE.IDLE
|
||||||
|
|
||||||
|
|
||||||
|
func onProjectileShooted(projectile: Projectile, startPosition: Vector3) -> void:
|
||||||
|
add_child(projectile)
|
||||||
|
projectile.global_position = startPosition
|
||||||
|
|
|
||||||
|
|
@ -24,54 +24,54 @@ radius = 5.0
|
||||||
script = ExtResource("5_wvh05")
|
script = ExtResource("5_wvh05")
|
||||||
type = 0
|
type = 0
|
||||||
icon = ExtResource("6_wnw3f")
|
icon = ExtResource("6_wnw3f")
|
||||||
text = "Upgrade"
|
text = "Max energy"
|
||||||
baseCost = 50
|
baseCost = 50
|
||||||
value = 50.0
|
value = 50.0
|
||||||
maxLevel = -1
|
maxLevel = -1
|
||||||
upgradeDirection = 1
|
upgradeDirection = 1
|
||||||
upgradeScaleType = 0
|
upgradeScaleType = 0
|
||||||
costScaleType = 0
|
costScaleType = 1
|
||||||
costModificator = 0.0
|
costModificator = 10.0
|
||||||
metadata/_custom_type_script = "uid://bg0x4egeu17qb"
|
metadata/_custom_type_script = "uid://bg0x4egeu17qb"
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_556ww"]
|
[sub_resource type="Resource" id="Resource_556ww"]
|
||||||
script = ExtResource("5_wvh05")
|
script = ExtResource("5_wvh05")
|
||||||
type = 1
|
type = 1
|
||||||
icon = ExtResource("6_wnw3f")
|
icon = ExtResource("6_wnw3f")
|
||||||
text = "Upgrade"
|
text = "Energy regen"
|
||||||
baseCost = 50
|
baseCost = 150
|
||||||
value = 10.0
|
value = 10.0
|
||||||
maxLevel = 5
|
maxLevel = 5
|
||||||
upgradeDirection = 1
|
upgradeDirection = 1
|
||||||
upgradeScaleType = 0
|
upgradeScaleType = 0
|
||||||
costScaleType = 0
|
costScaleType = 1
|
||||||
costModificator = 0.0
|
costModificator = 150.0
|
||||||
metadata/_custom_type_script = "uid://bg0x4egeu17qb"
|
metadata/_custom_type_script = "uid://bg0x4egeu17qb"
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_wvh05"]
|
[sub_resource type="Resource" id="Resource_wvh05"]
|
||||||
script = ExtResource("5_wvh05")
|
script = ExtResource("5_wvh05")
|
||||||
type = 3
|
type = 3
|
||||||
icon = ExtResource("6_wnw3f")
|
icon = ExtResource("6_wnw3f")
|
||||||
text = "Upgrade"
|
text = "Damage"
|
||||||
baseCost = 50
|
baseCost = 100
|
||||||
value = 1.0
|
value = 1.0
|
||||||
maxLevel = -1
|
maxLevel = -1
|
||||||
upgradeDirection = 1
|
upgradeDirection = 1
|
||||||
upgradeScaleType = 0
|
upgradeScaleType = 0
|
||||||
costScaleType = 0
|
costScaleType = 1
|
||||||
costModificator = 0.0
|
costModificator = 50.0
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_wnw3f"]
|
[sub_resource type="Resource" id="Resource_wnw3f"]
|
||||||
script = ExtResource("5_wvh05")
|
script = ExtResource("5_wvh05")
|
||||||
type = 5
|
type = 5
|
||||||
icon = ExtResource("6_wnw3f")
|
icon = ExtResource("6_wnw3f")
|
||||||
text = "Upgrade"
|
text = "Cooldown"
|
||||||
baseCost = 2000
|
baseCost = 2000
|
||||||
value = 0.2
|
value = 0.2
|
||||||
maxLevel = 2
|
maxLevel = 2
|
||||||
upgradeDirection = 1
|
upgradeDirection = 1
|
||||||
upgradeScaleType = 0
|
upgradeScaleType = 0
|
||||||
costScaleType = 0
|
costScaleType = 1
|
||||||
costModificator = 0.0
|
costModificator = 0.0
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_r52mr"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_r52mr"]
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ func _process(_delta: float) -> void:
|
||||||
|
|
||||||
if isTileFree(collider):
|
if isTileFree(collider):
|
||||||
placeTower()
|
placeTower()
|
||||||
elif tower && (not selected_tower || not selected_tower.builded):
|
elif tower && (not selected_tower || selected_tower.builded):
|
||||||
EventBus.tower_selected.emit(tower.type)
|
EventBus.tower_selected.emit(tower.type)
|
||||||
|
|
||||||
if Input.is_action_just_pressed("rest"):
|
if Input.is_action_just_pressed("rest"):
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
extends HBoxContainer
|
extends HBoxContainer
|
||||||
|
|
||||||
|
|
||||||
|
const upgradeBtnScene : PackedScene = preload("res://UI/upgrade_button.tscn")
|
||||||
|
|
||||||
|
|
||||||
var tower : Tower
|
var tower : Tower
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
EventBus.tower_selected.connect(onTowerSelected)
|
EventBus.tower_selected.connect(onTowerSelected)
|
||||||
EventBus.tower_changed.connect(onEnergyChanged)
|
EventBus.tower_changed.connect(onTowerChange)
|
||||||
|
|
||||||
|
|
||||||
func onTowerSelected(towerType : Tower.TYPE) -> void:
|
func onTowerSelected(towerType : Tower.TYPE) -> void:
|
||||||
|
|
@ -16,16 +19,31 @@ func onTowerSelected(towerType : Tower.TYPE) -> void:
|
||||||
return
|
return
|
||||||
|
|
||||||
tower = Game.towers.get(towerType)
|
tower = Game.towers.get(towerType)
|
||||||
%TowerIcon.texture = tower.icone
|
|
||||||
%TowerName.text = tower.tower_name
|
|
||||||
%TowerDamage.text = "Dmg : %d" % tower.projectileRessource.damage
|
|
||||||
%TowerCooldown.text = "cooldown : %.1f" % tower.action_cooldown
|
|
||||||
# TODO Check for better UI to display it
|
|
||||||
#%TowerBio.text = tower.bio
|
|
||||||
onEnergyChanged(tower)
|
|
||||||
visible = true
|
visible = true
|
||||||
|
onTowerChange(tower)
|
||||||
|
if not tower.builded:
|
||||||
|
%UpgradeContainer.visible = false
|
||||||
|
return
|
||||||
|
|
||||||
|
createTowerUpgradeButton()
|
||||||
|
|
||||||
|
|
||||||
func onEnergyChanged(_tower : Tower) -> void:
|
func onTowerChange(_tower : Tower) -> void:
|
||||||
if _tower == tower:
|
if _tower == tower:
|
||||||
|
%TowerIcon.texture = tower.icone
|
||||||
|
%TowerName.text = tower.tower_name
|
||||||
|
%TowerDamage.text = "Dmg : %d" % tower.projectileRessource.damage
|
||||||
|
%TowerCooldown.text = "cooldown : %.1f" % tower.action_cooldown
|
||||||
|
# TODO Check for better UI to display it
|
||||||
|
#%TowerBio.text = tower.bio
|
||||||
%TowerEnergy.text = "%d/%d" % [ tower.energy, tower.max_energy ]
|
%TowerEnergy.text = "%d/%d" % [ tower.energy, tower.max_energy ]
|
||||||
|
|
||||||
|
|
||||||
|
func createTowerUpgradeButton() -> void:
|
||||||
|
%UpgradeContainer.visible = true
|
||||||
|
%UpgradeContainer.get_children().map(func(btn): btn.queue_free())
|
||||||
|
for upgrade in tower.upgrades:
|
||||||
|
prints(upgrade.baseCost, upgrade.cost)
|
||||||
|
var btn : UpgradeButton = upgradeBtnScene.instantiate()
|
||||||
|
%UpgradeContainer.add_child(btn)
|
||||||
|
btn.setData(tower, upgrade)
|
||||||
|
|
|
||||||
43
UI/UpgradeButton.gd
Normal file
43
UI/UpgradeButton.gd
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
extends HBoxContainer
|
||||||
|
class_name UpgradeButton
|
||||||
|
|
||||||
|
|
||||||
|
var tower: Tower
|
||||||
|
var upgrade: TowerUpgrade
|
||||||
|
|
||||||
|
|
||||||
|
@onready var upgradeBtn : Button = $UpgradeButton
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
Game.money_changed.connect(moneyChanged)
|
||||||
|
upgradeBtn.pressed.connect(upgradeTower)
|
||||||
|
|
||||||
|
|
||||||
|
func setData(_tower: Tower, _upgrade: TowerUpgrade) -> void:
|
||||||
|
tower = _tower
|
||||||
|
upgrade = _upgrade
|
||||||
|
updateVisuals()
|
||||||
|
|
||||||
|
|
||||||
|
func upgradeTower() -> void:
|
||||||
|
if upgrade.upgrade(tower):
|
||||||
|
updateVisuals()
|
||||||
|
|
||||||
|
|
||||||
|
func updateVisuals() -> void:
|
||||||
|
$UpgradeName.text = upgrade.text
|
||||||
|
if upgrade.isLevelMax:
|
||||||
|
upgradeBtn.visible = false
|
||||||
|
$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()
|
||||||
1
UI/UpgradeButton.gd.uid
Normal file
1
UI/UpgradeButton.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bjetiiimo62du
|
||||||
31
UI/gui.tscn
31
UI/gui.tscn
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=16 format=3 uid="uid://p6a6rb7sgeqd"]
|
[gd_scene load_steps=15 format=3 uid="uid://p6a6rb7sgeqd"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bhylcok1l6eke" path="res://UI/gui.gd" id="2_sac4j"]
|
[ext_resource type="Script" uid="uid://bhylcok1l6eke" path="res://UI/gui.gd" id="2_sac4j"]
|
||||||
[ext_resource type="Script" uid="uid://blnmjxmusrsa7" path="res://UI/GameStyleBoxFlat.gd" id="4_h4fn5"]
|
[ext_resource type="Script" uid="uid://blnmjxmusrsa7" path="res://UI/GameStyleBoxFlat.gd" id="4_h4fn5"]
|
||||||
|
|
@ -10,7 +10,6 @@
|
||||||
[ext_resource type="Script" uid="uid://s4t3oa4v87xe" path="res://UI/TowerPanel.gd" id="9_3lugd"]
|
[ext_resource type="Script" uid="uid://s4t3oa4v87xe" path="res://UI/TowerPanel.gd" id="9_3lugd"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b4m5ejfdrm8s0" path="res://Assets/Icones/power-button.svg" id="9_reygo"]
|
[ext_resource type="Texture2D" uid="uid://b4m5ejfdrm8s0" path="res://Assets/Icones/power-button.svg" id="9_reygo"]
|
||||||
[ext_resource type="Texture2D" uid="uid://uptdcefxlv4c" path="res://Assets/Icones/ppdf_bio_image_placeholder_2.png" id="10_parkk"]
|
[ext_resource type="Texture2D" uid="uid://uptdcefxlv4c" path="res://Assets/Icones/ppdf_bio_image_placeholder_2.png" id="10_parkk"]
|
||||||
[ext_resource type="Script" uid="uid://bjetiiimo62du" path="res://UI/UpgradeButton.gd" id="11_parkk"]
|
|
||||||
|
|
||||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h4fn5"]
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h4fn5"]
|
||||||
bg_color = Color(0.933333, 0.933333, 0.933333, 1)
|
bg_color = Color(0.933333, 0.933333, 0.933333, 1)
|
||||||
|
|
@ -233,37 +232,31 @@ mouse_filter = 1
|
||||||
theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1)
|
theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1)
|
||||||
horizontal_alignment = 2
|
horizontal_alignment = 2
|
||||||
|
|
||||||
[node name="UpgradeContainer" type="PanelContainer" parent="TowerInfoPanel"]
|
[node name="PanelContainer" type="PanelContainer" parent="TowerInfoPanel"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_styles/panel = SubResource("StyleBoxFlat_3lugd")
|
theme_override_styles/panel = SubResource("StyleBoxFlat_3lugd")
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="TowerInfoPanel/UpgradeContainer"]
|
[node name="MarginContainer" type="MarginContainer" parent="TowerInfoPanel/PanelContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_constants/margin_left = 10
|
theme_override_constants/margin_left = 10
|
||||||
theme_override_constants/margin_top = 10
|
theme_override_constants/margin_top = 10
|
||||||
theme_override_constants/margin_right = 10
|
theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 10
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
[node name="ButtonContainer" type="GridContainer" parent="TowerInfoPanel/UpgradeContainer/MarginContainer"]
|
[node name="UpgradeContainer" type="GridContainer" parent="TowerInfoPanel/PanelContainer/MarginContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 0
|
size_flags_horizontal = 0
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
columns = 4
|
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="TowerInfoPanel/UpgradeContainer/MarginContainer/ButtonContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
theme_override_font_sizes/font_size = 20
|
|
||||||
text = "Améliorer"
|
|
||||||
script = ExtResource("11_parkk")
|
|
||||||
|
|
||||||
[connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/CubeBtn" to="." method="_on_button_cube_pressed"]
|
[connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/CubeBtn" to="." method="_on_button_cube_pressed"]
|
||||||
[connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/QuitLevelBtn" to="." method="quitLevel"]
|
[connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/QuitLevelBtn" to="." method="quitLevel"]
|
||||||
[connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/QuitGameBtn" to="." method="quitGame"]
|
[connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/QuitGameBtn" to="." method="quitGame"]
|
||||||
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/TowerButton" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/TowerButton" method="buttonToggled"]
|
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/TowerButton" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/TowerButton" method="buttonToggled"]
|
||||||
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71848" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71848" method="buttonToggled"]
|
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38055" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38055" method="buttonToggled"]
|
||||||
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71849" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71849" method="buttonToggled"]
|
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38056" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38056" method="buttonToggled"]
|
||||||
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71850" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71850" method="buttonToggled"]
|
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38057" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38057" method="buttonToggled"]
|
||||||
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71851" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71851" method="buttonToggled"]
|
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38058" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38058" method="buttonToggled"]
|
||||||
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71852" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71852" method="buttonToggled"]
|
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38059" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38059" method="buttonToggled"]
|
||||||
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71853" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71853" method="buttonToggled"]
|
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38060" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38060" method="buttonToggled"]
|
||||||
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71854" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71854" method="buttonToggled"]
|
[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38061" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@38061" method="buttonToggled"]
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
extends Button
|
|
||||||
class_name UpgradeButton
|
|
||||||
|
|
||||||
@export var upgrade : Upgrade
|
|
||||||
@export var towerType : Tower.TYPE
|
|
||||||
|
|
||||||
|
|
||||||
func _on_pressed() -> void:
|
|
||||||
EventBus.tower_upgraded.emit(towerType, upgrade)
|
|
||||||
queue_free()
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://tn3qdhcyaxsg
|
|
||||||
|
|
@ -1,3 +1,23 @@
|
||||||
[gd_scene format=3 uid="uid://cpdr2a3xqscfa"]
|
[gd_scene load_steps=2 format=3 uid="uid://dfp5q5gek4ve7"]
|
||||||
|
|
||||||
[node name="UpgradeButton" type="Button"]
|
[ext_resource type="Script" uid="uid://bjetiiimo62du" path="res://UI/UpgradeButton.gd" id="1_xoo7y"]
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer"]
|
||||||
|
offset_right = 58.0
|
||||||
|
offset_bottom = 34.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
script = ExtResource("1_xoo7y")
|
||||||
|
|
||||||
|
[node name="UpgradeName" type="Label" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||||
|
theme_override_font_sizes/font_size = 24
|
||||||
|
text = "test"
|
||||||
|
|
||||||
|
[node name="UpgradeButton" type="Button" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_font_sizes/font_size = 18
|
||||||
|
text = "Lvl. 0
|
||||||
|
"
|
||||||
|
|
|
||||||
|
|
@ -15,16 +15,19 @@ enum TYPE {
|
||||||
@export var type : TYPE
|
@export var type : TYPE
|
||||||
|
|
||||||
|
|
||||||
func upgrade(tower: Tower) -> void:
|
func upgrade(tower: Tower) -> bool:
|
||||||
|
if not canUpgrade():
|
||||||
|
return false
|
||||||
|
|
||||||
match type:
|
match type:
|
||||||
TYPE.MAX_ENERGY: upgradeTowerProperty(tower, "max_energy")
|
TYPE.MAX_ENERGY: upgradeProperty(tower, "max_energy")
|
||||||
TYPE.ENERGY_REGEN: upgradeTowerProperty(tower, "energy_regen")
|
TYPE.ENERGY_REGEN: upgradeProperty(tower, "energy_regen")
|
||||||
TYPE.ENERGY_COST: upgradeTowerProperty(tower, "energy_cost")
|
TYPE.ENERGY_COST: upgradeProperty(tower, "energy_cost")
|
||||||
TYPE.DAMAGE: upgradeTowerProperty(tower.projectileRessource, "damage")
|
TYPE.DAMAGE: upgradeProperty(tower.projectileRessource, "damage")
|
||||||
TYPE.AOE_INCREASE: upgradeTowerProperty(tower.projectileRessource.damageArea, "radius")
|
TYPE.AOE_INCREASE: upgradeProperty(tower.projectileRessource.damageArea, "radius")
|
||||||
TYPE.COOLDOWN: upgradeTowerProperty(tower, "action_cooldown")
|
TYPE.COOLDOWN: upgradeProperty(tower, "action_cooldown")
|
||||||
|
|
||||||
upgradeUpgrade()
|
upgradeUpgrade()
|
||||||
|
|
||||||
func upgradeTowerProperty(tower: Variant, property: String) -> void:
|
EventBus.tower_changed.emit(tower)
|
||||||
tower.set(property, getNextValue(tower.get(property)))
|
return true
|
||||||
|
|
|
||||||
|
|
@ -2,35 +2,40 @@ extends Resource
|
||||||
class_name Upgrade
|
class_name Upgrade
|
||||||
|
|
||||||
|
|
||||||
enum SCALE_TYPE { LINEAR, EXP, LOG }
|
enum SCALE_TYPE { NONE, LINEAR, EXP, LOG }
|
||||||
enum UPGRADE_DIRECTION { INCREASE = 1, DECREASE = -1 }
|
enum UPGRADE_DIRECTION { INCREASE = 1, DECREASE = -1 }
|
||||||
|
|
||||||
|
|
||||||
@export var icon : Texture2D = preload("res://Assets/Icones/medal2.png")
|
@export var icon : Texture2D = preload("res://Assets/Icones/medal2.png")
|
||||||
@export var text : String = "Upgrade"
|
@export var text : String
|
||||||
@export var baseCost : int = 50
|
@export var baseCost : int :
|
||||||
|
set(value):
|
||||||
|
baseCost = value
|
||||||
|
cost = value
|
||||||
@export_range(0.001, 999, 0.001, "hide_slider") var value : float
|
@export_range(0.001, 999, 0.001, "hide_slider") var value : float
|
||||||
@export_range(-1, 100, 1, "hide_slider") var maxLevel : int = -1 ##[param -1] for infinite leveling
|
@export_range(-1, 100, 1, "hide_slider") var maxLevel : int = -1 ##[param -1] for infinite leveling
|
||||||
|
|
||||||
@export_group("Upgrade Scaling")
|
@export_group("Upgrade Scaling")
|
||||||
@export var upgradeDirection : UPGRADE_DIRECTION = UPGRADE_DIRECTION.INCREASE
|
@export var upgradeDirection : UPGRADE_DIRECTION = UPGRADE_DIRECTION.INCREASE
|
||||||
@export var upgradeScaleType : SCALE_TYPE = SCALE_TYPE.LINEAR
|
@export var upgradeScaleType : SCALE_TYPE = SCALE_TYPE.NONE
|
||||||
@export var costScaleType : SCALE_TYPE = SCALE_TYPE.LINEAR
|
@export var costScaleType : SCALE_TYPE = SCALE_TYPE.LINEAR
|
||||||
@export var costModificator : float
|
@export var costModificator : float
|
||||||
|
|
||||||
|
|
||||||
var cost : int = baseCost
|
var cost : int
|
||||||
var level : int = 0
|
var level : int = 0
|
||||||
var isLevelMax : bool :
|
var isLevelMax : bool :
|
||||||
get(): return maxLevel == level
|
get(): return maxLevel == level
|
||||||
|
|
||||||
|
|
||||||
func upgrade(subject) -> void:
|
func upgradeProperty(tower: Variant, property: String) -> void:
|
||||||
pass
|
tower.set(property, getNextValue(tower.get(property)))
|
||||||
|
|
||||||
|
|
||||||
func upgradeUpgrade() -> void:
|
func upgradeUpgrade() -> void:
|
||||||
cost += baseCost
|
level += 1
|
||||||
|
Game.money -= cost
|
||||||
|
cost += costModificator
|
||||||
|
|
||||||
|
|
||||||
func canUpgrade():
|
func canUpgrade():
|
||||||
|
|
@ -38,4 +43,6 @@ func canUpgrade():
|
||||||
|
|
||||||
|
|
||||||
func getNextValue(oldValue):
|
func getNextValue(oldValue):
|
||||||
return oldValue + (value * upgradeDirection * level)
|
match upgradeScaleType:
|
||||||
|
SCALE_TYPE.NONE: return oldValue + value
|
||||||
|
SCALE_TYPE.LINEAR: return oldValue + (value * upgradeDirection * level)
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,17 @@ folder_colors={
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
|
ui_accept={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
ui_select={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
build={
|
build={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(344, 20),"global_position":Vector2(353, 68),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(344, 20),"global_position":Vector2(353, 68),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||||
|
|
@ -62,6 +73,11 @@ rest={
|
||||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(263, 18),"global_position":Vector2(272, 66),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(263, 18),"global_position":Vector2(272, 66),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
spawn_next_wave={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[layer_names]
|
[layer_names]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue