diff options
author | bd <bdunahu@operationnull.com> | 2025-05-29 17:07:41 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-29 17:07:41 -0400 |
commit | 8ec9e91860722288f844e01938b7b6489aff122a (patch) | |
tree | c04663d0e7fa8df245172520acb3a6ddbb1b34c9 /scripts/player.gd | |
parent | 4a24041fdadcef8548da302922095ca2d359941a (diff) |
Add visible tower range on hover
Diffstat (limited to 'scripts/player.gd')
-rw-r--r-- | scripts/player.gd | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/scripts/player.gd b/scripts/player.gd index 4a37965..3289796 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -7,6 +7,8 @@ var game_stats_config = preload("res://resources/game_stats_config.tres") var _max_x : int var _max_y : int +var _hovered_tower : StaticBody2D + var dirs = { "move_right": Vector2.RIGHT, "move_left": Vector2.LEFT, @@ -40,7 +42,7 @@ func _unhandled_input(event): _tm.handle_tower_key(tower_ids[id], global_position) if event.is_action_pressed("advance_wave"): GameData.start_spawning() - emit_signal("curr_tile", _get_tile_state()) + _update_ui() func handle_move(dir): position += dir * map_config.tile_size @@ -49,13 +51,25 @@ func handle_move(dir): position.x = min(position.x, _max_x - (map_config.tile_size / 2)) position.y = min(position.y, _max_y - (map_config.tile_size / 2)) +func _update_ui(): + var curr_hovered = _tm.get_tower_at(position) + if curr_hovered != _hovered_tower: + if _hovered_tower: + _hovered_tower.hide_collision() + _hovered_tower = curr_hovered + if _hovered_tower: + _hovered_tower.show_collision() + + emit_signal("curr_tile", _get_tile_upgrades()) + + # this method of getting uniform menu for the panel # was specifically designed that way in game stats config -# it may be inefficient and is somewhat messy -func _get_tile_state(): +# it is somewhat unconventional +func _get_tile_upgrades(): var tile_info = null - if _tm.is_tile_occupied(position): - tile_info = _tm.get_upgrades_at(position) + if _hovered_tower: + tile_info = _hovered_tower.tower_data["upgrades"] elif _tm.is_valid_placement_tile(position): tile_info = game_stats_config.defenders return tile_info |