summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/base_defender.gd2
-rw-r--r--scripts/game_stats_config.gd21
-rw-r--r--scripts/tower_manager.gd2
-rw-r--r--scripts/ui.gd1
-rw-r--r--scripts/ui_panel.gd5
5 files changed, 24 insertions, 7 deletions
diff --git a/scripts/base_defender.gd b/scripts/base_defender.gd
index a10c4b6..0f1003b 100644
--- a/scripts/base_defender.gd
+++ b/scripts/base_defender.gd
@@ -15,7 +15,7 @@ var _attack_texture : Texture
func set_tower_stats(tower_index : int):
var collision_shape = $Tower/CollisionShape2D
collision_shape.shape = CircleShape2D.new()
- tower_data = game_stats_config.defenders[tower_index].duplicate()
+ tower_data = game_stats_config.defenders[tower_index].duplicate(true)
tower_key = tower_data["desc"]
reset_tower_range()
diff --git a/scripts/game_stats_config.gd b/scripts/game_stats_config.gd
index 8b2e544..3b19b69 100644
--- a/scripts/game_stats_config.gd
+++ b/scripts/game_stats_config.gd
@@ -14,9 +14,14 @@ class_name GameStatsConfig
},
{
5: {"fodder": 6},
- 15: {"soldier": 3},
- 20: {"fodder": 10, "soldier": 6},
- 30: {"fodder": 5, "gnome": 1},
+ 10: {"soldier": 2},
+ 20: {"fodder": 5, "soldier": 6},
+ 30: {"fodder": 5},
+ },
+ {
+ 7: {"gnome": 10},
+ 14: {"soldier": 4},
+ 30: {"gnome": 6, "soldier": 8}
}
]
@@ -25,6 +30,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
@export var defenders : Array[Dictionary] = [
{
"desc": "Warlock",
+ "is_valid": true,
"damage" : 4.0,
"fire_rate" : 1.2,
"range": 75.0,
@@ -38,6 +44,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
"upgrades": [
{
"desc": "Phoenix (DMG)",
+ "is_valid": false,
"sprite_panel": Vector2i(32, 5),
"cost": 9999,
"effects": {
@@ -45,6 +52,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
},
{
"desc": "Falcon (RNGE)",
+ "is_valid": true,
"sprite_panel": Vector2i(34, 4),
"cost": 15,
"effects": {
@@ -57,6 +65,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
},
{
"desc": "Sparrow (DUP)",
+ "is_valid": false,
"sprite_panel": Vector2i(35, 5),
"cost": 9999,
"effects": {
@@ -66,6 +75,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
},
{
"desc": "Wyvern",
+ "is_valid": true,
"damage" : 1.0,
"fire_delay" : 1.0,
"range": 40.0,
@@ -80,6 +90,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
"upgrades": [
{
"desc": "Skittles (SPD)",
+ "is_valid": true,
"sprite_panel": Vector2i(28, 12),
"cost": 7,
"effects": {
@@ -88,6 +99,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
},
{
"desc": "Pop Rocks (RNGE)",
+ "is_valid": true,
"sprite_panel": Vector2i(31, 12),
"cost": 30.0,
"effects": {
@@ -100,6 +112,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
},
{
"desc": "Twizzlers (DUP)",
+ "is_valid": false,
"sprite_panel": Vector2i(27, 12),
"cost": 9999,
"effects": {
@@ -110,6 +123,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
# TODO
{
"desc": "Werewolf",
+ "is_valid": false,
"damage": 1.0,
"fire_rate": 1.0,
"range": 1.0,
@@ -121,6 +135,7 @@ enum defenders_index {WARLOCK, WYVERN, WEREWOLF, WELLSPRING}
},
{
"desc": "Wellspring",
+ "is_valid": false,
"damage": 1.0,
"fire_rate": 1.0,
"range": 1.0,
diff --git a/scripts/tower_manager.gd b/scripts/tower_manager.gd
index 89f037d..808052e 100644
--- a/scripts/tower_manager.gd
+++ b/scripts/tower_manager.gd
@@ -31,7 +31,7 @@ func _handle_upgrade(upgrade_index : int, tower : StaticBody2D):
if GameData.get_life() >= upgrade_cost:
GameData.subtract_life(upgrade_cost)
tower.apply_upgrade(upgrades[upgrade_index]["effects"])
- upgrades.remove_at(upgrade_index)
+ upgrades[upgrade_index]["is_valid"] = false
func _handle_place_tower(tower_index : int, tile_position : Vector2i):
if _tower_data.size() > tower_index:
diff --git a/scripts/ui.gd b/scripts/ui.gd
index 031236b..e450581 100644
--- a/scripts/ui.gd
+++ b/scripts/ui.gd
@@ -30,5 +30,6 @@ func _update_options(data):
var option = ui_option.instantiate()
option.desc = i["desc"]
option.cost = i["cost"]
+ option.is_valid = i["is_valid"]
option.sprite_atlas = i["sprite_panel"]
options_container.add_child(option)
diff --git a/scripts/ui_panel.gd b/scripts/ui_panel.gd
index 3786410..e32115c 100644
--- a/scripts/ui_panel.gd
+++ b/scripts/ui_panel.gd
@@ -4,6 +4,7 @@ extends Panel
@export var desc: String
@export var cost: int
+@export var is_valid : bool
@export var sprite_atlas : Vector2i
func _ready():
@@ -11,7 +12,7 @@ func _ready():
$HBoxContainer/Texture.texture = texture
$HBoxContainer/Texture.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
$HBoxContainer/VBoxContainer/Label.text = desc
- $HBoxContainer/VBoxContainer/Label2.text = str(cost)
+ $HBoxContainer/VBoxContainer/Label2.text = str(cost) if is_valid else "-"
$ColorRect.color = get_theme_stylebox("panel").bg_color
$ColorRect.modulate.a = 0.0
@@ -19,7 +20,7 @@ func _ready():
_update_affordability()
func _update_affordability():
- if (GameData.get_life() >= cost):
+ if (GameData.get_life() >= cost && is_valid):
$ColorRect.modulate.a = 0.0
else:
$ColorRect.modulate.a = 0.75