summaryrefslogtreecommitdiff
path: root/Towers/Tower.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Towers/Tower.gd')
-rw-r--r--Towers/Tower.gd56
1 files changed, 20 insertions, 36 deletions
diff --git a/Towers/Tower.gd b/Towers/Tower.gd
index 141f588..0b923ca 100644
--- a/Towers/Tower.gd
+++ b/Towers/Tower.gd
@@ -5,8 +5,12 @@ extends StaticBody2D
signal selected
signal deselected
+signal selected_primary
signal selected_secondary
+signal hovered(is_hovered: bool)
+signal double_clicked
+
var is_selected := false:
set(value):
if value:
@@ -19,11 +23,8 @@ var is_selected := false:
var is_hovered := false:
set(value):
- if value:
- Input.set_default_cursor_shape(Input.CURSOR_POINTING_HAND)
- else:
- Input.set_default_cursor_shape(Input.CURSOR_ARROW)
is_hovered = value
+ hovered.emit(is_hovered)
queue_redraw()
var is_highlighted := false:
@@ -45,6 +46,9 @@ signal components_changed
@export var components: Dictionary
+@onready var ground_anchor: Marker2D = $GroundAnchor
+
+
func _init():
scale = Vector2(Client.current_stage.map.tile_set.tile_size) / Vector2(16, 16)
@@ -67,17 +71,6 @@ func _ready():
func _draw():
modulate = Color(1, 1, 1)
- if is_hovered:
- if Client.state is StateDefault:
- draw_circle(
- Vector2(Client.current_stage.map.tile_set.tile_size) / scale,
- 8 + components.get(TowerComponent.ComponentType.Range).range,
- Color(1, 1, 1, 0.5),
- false,
- 1.0
- )
- modulate = Color(1.25, 1.25, 1.25)
-
if is_selected:
modulate = Color(1.5, 1.5, 1.5)
@@ -98,19 +91,6 @@ func _process(delta: float) -> void:
component.process(delta)
-func _on_input_event(_viewport: Node, event: InputEvent, _shape_idx: int):
- # disable remote select for now
- if owner_id != multiplayer.get_unique_id():
- return
-
- if event.is_action_pressed("select_secondary"):
- selected_secondary.emit()
-
- if Client.state is StateBuild:
- if event.is_action_pressed("builder_cancel"):
- Client.remove_tower(self)
-
-
func _on_selectable_area_hover_enter() -> void:
is_hovered = true
@@ -122,14 +102,17 @@ func _on_selectable_area_select_primary(event: InputEvent) -> void:
if owner_id != multiplayer.get_unique_id():
return
- if Client.state is StateDefault:
- if Input.is_action_pressed("select_multiple") and is_selected:
- is_selected = false
- else:
- Client.select_tower(self)
-
- if event.is_double_click():
- Client.multi_select(3)
+ if event.is_double_click():
+ double_clicked.emit()
+ else:
+ selected_primary.emit()
+
+func _on_selectable_area_select_secondary(_event: InputEvent) -> void:
+ # disable remote select for now
+ if owner_id != multiplayer.get_unique_id():
+ return
+
+ selected_secondary.emit()
func add_component(component: TowerComponent):
@@ -176,6 +159,7 @@ func get_group_id() -> String:
func _on_tree_exiting() -> void:
if is_selected:
+ is_hovered = false
is_selected = false