diff options
Diffstat (limited to 'Towers')
-rw-r--r-- | Towers/Components/TowerComponent.gd | 3 | ||||
-rw-r--r-- | Towers/Components/TowerComponent.tscn | 1 | ||||
-rw-r--r-- | Towers/Tower.gd | 56 | ||||
-rw-r--r-- | Towers/Tower.tscn | 5 |
4 files changed, 27 insertions, 38 deletions
diff --git a/Towers/Components/TowerComponent.gd b/Towers/Components/TowerComponent.gd index 9a16845..e9ecb94 100644 --- a/Towers/Components/TowerComponent.gd +++ b/Towers/Components/TowerComponent.gd @@ -13,6 +13,9 @@ enum ComponentType { Frost, Burn, Poison, + + Splash, + Aura, } @export var type: ComponentType diff --git a/Towers/Components/TowerComponent.tscn b/Towers/Components/TowerComponent.tscn index e2fbf3f..0ac2702 100644 --- a/Towers/Components/TowerComponent.tscn +++ b/Towers/Components/TowerComponent.tscn @@ -10,5 +10,6 @@ script = ExtResource("1_jb46t") texture_filter = 1 offset_right = 40.0 offset_bottom = 40.0 +mouse_filter = 2 stretch_mode = 5 metadata/_edit_use_anchors_ = true 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 diff --git a/Towers/Tower.tscn b/Towers/Tower.tscn index 3e59980..598c37f 100644 --- a/Towers/Tower.tscn +++ b/Towers/Tower.tscn @@ -88,7 +88,8 @@ centered = false position = Vector2(16, 16) shape = SubResource("RectangleShape2D_atm5x") -[node name="SelectableArea" parent="." instance=ExtResource("3_57d5u")] +[node name="SelectableArea" parent="." node_paths=PackedStringArray("root") instance=ExtResource("3_57d5u")] +root = NodePath("..") [node name="CollisionShape2D" type="CollisionShape2D" parent="SelectableArea"] position = Vector2(16, 16) @@ -99,6 +100,7 @@ unique_name_in_owner = true offset_right = 32.0 offset_bottom = 32.0 size_flags_vertical = 3 +mouse_filter = 2 theme_override_constants/h_separation = 0 theme_override_constants/v_separation = 0 reverse_fill = true @@ -109,7 +111,6 @@ position = Vector2(16, 29) [node name="CenterAnchor" type="Marker2D" parent="."] position = Vector2(16, 16) -[connection signal="input_event" from="." to="." method="_on_input_event"] [connection signal="tree_exiting" from="." to="." method="_on_tree_exiting"] [connection signal="hover_enter" from="SelectableArea" to="." method="_on_selectable_area_hover_enter"] [connection signal="hover_exit" from="SelectableArea" to="." method="_on_selectable_area_hover_exit"] |