summaryrefslogtreecommitdiff
path: root/scripts/tower_manager.gd
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-05-25 15:17:58 -0400
committerbd <bdunahu@operationnull.com>2025-05-25 15:17:58 -0400
commit39794265b361c2f259a58d677f9e2e10b64d00af (patch)
tree5fb9b7f027c9f721964c4ea494ddb184e11da043 /scripts/tower_manager.gd
parent2e0c1c719db8bd6949a98678d0848c314bdaa0d7 (diff)
Add more chaos to warlock bolts, fix crash with oob upgrades
Diffstat (limited to 'scripts/tower_manager.gd')
-rw-r--r--scripts/tower_manager.gd42
1 files changed, 18 insertions, 24 deletions
diff --git a/scripts/tower_manager.gd b/scripts/tower_manager.gd
index 7440a9a..89f037d 100644
--- a/scripts/tower_manager.gd
+++ b/scripts/tower_manager.gd
@@ -13,15 +13,6 @@ var _tower_data : Array[Dictionary] = [
"scene": preload("res://scenes/wyvern.tscn"),
"cost": game_stats_config.defenders[1]["cost"],
},
- # TODO -- space reserved for last two towers
- {
- "scene": preload("res://scenes/warlock.tscn"),
- "cost": game_stats_config.defenders[0]["cost"],
- },
- {
- "scene": preload("res://scenes/warlock.tscn"),
- "cost": game_stats_config.defenders[0]["cost"],
- },
]
func _ready():
@@ -31,24 +22,27 @@ func handle_tower_key(tower_index : int, tile_position : Vector2i):
if is_tile_occupied(tile_position):
_handle_upgrade(tower_index, _towers[tile_position])
elif is_valid_placement_tile(tile_position):
- _handle_place_tower(_tower_data[tower_index], tile_position)
+ _handle_place_tower(tower_index, tile_position)
func _handle_upgrade(upgrade_index : int, tower : StaticBody2D):
var upgrades = tower.tower_data["upgrades"]
- var upgrade_cost = upgrades[upgrade_index]["cost"]
-
- if GameData.get_life() >= upgrade_cost:
- GameData.subtract_life(upgrade_cost)
- tower.apply_upgrade(upgrades[upgrade_index]["effects"])
-
-func _handle_place_tower(tower : Dictionary, tile_position : Vector2i):
- var tower_cost = tower["cost"]
- if GameData.get_life() >= tower_cost:
- GameData.subtract_life(tower_cost)
- var tmp = tower["scene"].instantiate()
- add_child(tmp)
- tmp.global_position = tile_position
- _occupy_tile(tile_position, tmp)
+ if upgrades.size() > upgrade_index:
+ var upgrade_cost = upgrades[upgrade_index]["cost"]
+ if GameData.get_life() >= upgrade_cost:
+ GameData.subtract_life(upgrade_cost)
+ tower.apply_upgrade(upgrades[upgrade_index]["effects"])
+ upgrades.remove_at(upgrade_index)
+
+func _handle_place_tower(tower_index : int, tile_position : Vector2i):
+ if _tower_data.size() > tower_index:
+ var tower = _tower_data[tower_index]
+ var tower_cost = tower["cost"]
+ if GameData.get_life() >= tower_cost:
+ GameData.subtract_life(tower_cost)
+ var tmp = tower["scene"].instantiate()
+ add_child(tmp)
+ tmp.global_position = tile_position
+ _occupy_tile(tile_position, tmp)
func get_upgrades_at(tile_position : Vector2i) -> Array:
if _towers.has(tile_position):