summaryrefslogtreecommitdiff
path: root/scripts/player.gd
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/player.gd')
-rw-r--r--scripts/player.gd24
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