diff options
Diffstat (limited to 'scripts/tower_manager.gd')
-rw-r--r-- | scripts/tower_manager.gd | 42 |
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): |