diff options
Diffstat (limited to 'Towers/Tower.gd')
-rw-r--r-- | Towers/Tower.gd | 56 |
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 |