From 7aac67b7655c1e1f1527bfde8606223dee532ab7 Mon Sep 17 00:00:00 2001 From: Daydreel Date: Sun, 7 Sep 2025 11:52:50 +0200 Subject: [PATCH] GUI blocks mouse input on map --- Globals/EventBus.gd | 10 ++++++++++ Towers/TowerManager.gd | 17 ++++++++++++++++ UI/gui.gd | 12 ++++++++++++ UI/gui.tscn | 44 +++++++++++++++++++++++++----------------- UI/gui_button.tscn | 5 ++++- UI/upgrade_button.tscn | 2 ++ 6 files changed, 71 insertions(+), 19 deletions(-) diff --git a/Globals/EventBus.gd b/Globals/EventBus.gd index cdf6683..6bb3c4b 100644 --- a/Globals/EventBus.gd +++ b/Globals/EventBus.gd @@ -41,4 +41,14 @@ signal wave_has_change(waveNumber : int, timeRemaining : float) ## [b]Subscriber[/b] : [WorldManager] signal lauch_next_wave + +## [b]Emitter[/b] : [gui.gd][br] +## [b]Subscriber[/b] : [TowerManager] +signal mouse_entered_gui + + +## [b]Emitter[/b] : [gui.gd][br] +## [b]Subscriber[/b] : [TowerManager] +signal mouse_exited_gui + @warning_ignore_restore("unused_signal") diff --git a/Towers/TowerManager.gd b/Towers/TowerManager.gd index 68bde0e..5cc60a7 100644 --- a/Towers/TowerManager.gd +++ b/Towers/TowerManager.gd @@ -10,11 +10,14 @@ var usedLocations : Dictionary var selectedTile : Vector3 var selected_tower : Tower var buildedTower : int = 0 +var is_on_gui : bool = false func _ready() -> void: EventBus.tower_selected.connect(onTowerSelect) #$AnimationPlayer.play("arrow_bobbing") + EventBus.mouse_entered_gui.connect(onMouseEnteredGui) + EventBus.mouse_exited_gui.connect(onMouseExitedGui) func _process(_delta: float) -> void: @@ -46,6 +49,10 @@ func _input(event: InputEvent) -> void: func handle_player_controls() -> Node3D: + #If the player has the mouse on the GUI, player can't place tower + if is_on_gui: + return + var space_state : PhysicsDirectSpaceState3D = get_world_3d().direct_space_state var mouse_pos : Vector2 = get_viewport().get_mouse_position() @@ -147,3 +154,13 @@ func handleTowerShortCuts(event: InputEventKey) -> void: if Game.towers.has(towerType): selectTower(towerType, true) + + +func onMouseEnteredGui() -> void: + is_on_gui = true + print(is_on_gui) + + +func onMouseExitedGui() -> void: + is_on_gui = false + print(is_on_gui) diff --git a/UI/gui.gd b/UI/gui.gd index a6024bb..dfbf1bd 100644 --- a/UI/gui.gd +++ b/UI/gui.gd @@ -24,6 +24,10 @@ func _ready() -> void: %QuitLevelBtn.pressed.connect(Helper.showConfirmPopup.bind("Quit level ?", self, Game.quitLevel)) %QuitGameBtn.pressed.connect(Helper.showConfirmPopup.bind("Quit game ?", self, Game.quitGame)) $TowerInfoPanel.visible = false + $TowerInfoPanel.mouse_entered.connect(onMouseEnteredGui) + $TowerInfoPanel.mouse_exited.connect(onMouseExitedGui) + $TowerButtonPanel.mouse_entered.connect(onMouseEnteredGui) + $TowerButtonPanel.mouse_exited.connect(onMouseExitedGui) if Engine.is_editor_hint(): var allowedTowers : Array[Tower.TYPE] @@ -73,3 +77,11 @@ func createTowerButton(towerType : Tower.TYPE) -> void: else: btn.disabled = true buttonContainer.add_child(btn) + + +func onMouseEnteredGui() -> void: + EventBus.mouse_entered_gui.emit() + + +func onMouseExitedGui() -> void: + EventBus.mouse_exited_gui.emit() diff --git a/UI/gui.tscn b/UI/gui.tscn index 0627762..4b5cc7b 100644 --- a/UI/gui.tscn +++ b/UI/gui.tscn @@ -54,7 +54,7 @@ theme_override_font_sizes/font_size = 40 [node name="Timer" type="Timer" parent="WaveCooldown"] wait_time = 0.1 -[node name="HBoxContainer" type="HBoxContainer" parent="."] +[node name="TowerButtonPanel" type="HBoxContainer" parent="."] layout_mode = 1 anchors_preset = 3 anchor_left = 1.0 @@ -67,22 +67,23 @@ grow_horizontal = 0 grow_vertical = 0 theme_override_constants/separation = 0 -[node name="InfoPanel" type="PanelContainer" parent="HBoxContainer"] +[node name="InfoPanel" type="PanelContainer" parent="TowerButtonPanel"] custom_minimum_size = Vector2(200, 0) layout_mode = 2 +mouse_filter = 1 theme_override_styles/panel = SubResource("StyleBoxFlat_h4fn5") -[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/InfoPanel"] +[node name="MarginContainer" type="MarginContainer" parent="TowerButtonPanel/InfoPanel"] layout_mode = 2 theme_override_constants/margin_left = 10 theme_override_constants/margin_top = 10 theme_override_constants/margin_right = 10 theme_override_constants/margin_bottom = 10 -[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/InfoPanel/MarginContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="TowerButtonPanel/InfoPanel/MarginContainer"] layout_mode = 2 -[node name="LabelMoney" type="Label" parent="HBoxContainer/InfoPanel/MarginContainer/VBoxContainer"] +[node name="LabelMoney" type="Label" parent="TowerButtonPanel/InfoPanel/MarginContainer/VBoxContainer"] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 1 @@ -93,7 +94,7 @@ text = "1'000'000 €" horizontal_alignment = 2 vertical_alignment = 2 -[node name="LabelTowerInCube" type="Label" parent="HBoxContainer/InfoPanel/MarginContainer/VBoxContainer"] +[node name="LabelTowerInCube" type="Label" parent="TowerButtonPanel/InfoPanel/MarginContainer/VBoxContainer"] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Le nombre de héros disponible dans le cube !" @@ -102,7 +103,7 @@ theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1) text = "0" horizontal_alignment = 2 -[node name="LabelTowerOnTerrain" type="Label" parent="HBoxContainer/InfoPanel/MarginContainer/VBoxContainer"] +[node name="LabelTowerOnTerrain" type="Label" parent="TowerButtonPanel/InfoPanel/MarginContainer/VBoxContainer"] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Le nombre de héros en action sur le terrain !" @@ -111,17 +112,18 @@ theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1) text = "0" horizontal_alignment = 2 -[node name="WaveNumber" type="Label" parent="HBoxContainer/InfoPanel/MarginContainer/VBoxContainer"] +[node name="WaveNumber" type="Label" parent="TowerButtonPanel/InfoPanel/MarginContainer/VBoxContainer"] unique_name_in_owner = true layout_mode = 2 theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1) -[node name="CubeIntegrity" type="ProgressBar" parent="HBoxContainer"] +[node name="CubeIntegrity" type="ProgressBar" parent="TowerButtonPanel"] unique_name_in_owner = true custom_minimum_size = Vector2(10, 0) layout_mode = 2 size_flags_vertical = 1 tooltip_text = "Les points d'intégrités du Cube. S'ils arrivent à 0, fin de la partie." +mouse_filter = 1 theme_override_styles/background = SubResource("StyleBoxFlat_nxmp4") theme_override_styles/fill = SubResource("StyleBoxFlat_epgl5") max_value = 50.0 @@ -129,12 +131,13 @@ value = 50.0 fill_mode = 3 show_percentage = false -[node name="ControlPanelBase" type="PanelContainer" parent="HBoxContainer"] +[node name="ControlPanelBase" type="PanelContainer" parent="TowerButtonPanel"] layout_mode = 2 size_flags_horizontal = 3 +mouse_filter = 1 theme_override_styles/panel = SubResource("StyleBoxFlat_3lugd") -[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/ControlPanelBase"] +[node name="MarginContainer" type="MarginContainer" parent="TowerButtonPanel/ControlPanelBase"] layout_mode = 2 size_flags_vertical = 0 theme_override_constants/margin_left = 10 @@ -142,34 +145,37 @@ theme_override_constants/margin_top = 10 theme_override_constants/margin_right = 10 theme_override_constants/margin_bottom = 10 -[node name="ButtonContainer" type="GridContainer" parent="HBoxContainer/ControlPanelBase/MarginContainer"] +[node name="ButtonContainer" type="GridContainer" parent="TowerButtonPanel/ControlPanelBase/MarginContainer"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 0 size_flags_vertical = 0 columns = 4 -[node name="CubeBtn" parent="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] +[node name="CubeBtn" parent="TowerButtonPanel/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] layout_mode = 2 +mouse_filter = 1 texture = ExtResource("7_fffne") -[node name="QuitLevelBtn" parent="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] +[node name="QuitLevelBtn" parent="TowerButtonPanel/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] unique_name_in_owner = true layout_mode = 2 +mouse_filter = 1 texture = ExtResource("8_decjp") -[node name="QuitGameBtn" parent="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] +[node name="QuitGameBtn" parent="TowerButtonPanel/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] unique_name_in_owner = true layout_mode = 2 +mouse_filter = 1 texture = ExtResource("9_reygo") -[node name="NextWaveBtn" parent="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] +[node name="NextWaveBtn" parent="TowerButtonPanel/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] unique_name_in_owner = true layout_mode = 2 +mouse_filter = 1 texture = ExtResource("8_ay13l") [node name="TowerInfoPanel" type="HBoxContainer" parent="."] -visible = false layout_mode = 1 anchors_preset = 2 anchor_top = 1.0 @@ -183,6 +189,7 @@ script = ExtResource("9_3lugd") [node name="InfoPanel" type="PanelContainer" parent="TowerInfoPanel"] custom_minimum_size = Vector2(200, 0) layout_mode = 2 +mouse_filter = 1 theme_override_styles/panel = SubResource("StyleBoxFlat_h4fn5") [node name="MarginContainer" type="MarginContainer" parent="TowerInfoPanel/InfoPanel"] @@ -259,6 +266,7 @@ horizontal_alignment = 2 [node name="PanelContainer" type="PanelContainer" parent="TowerInfoPanel"] layout_mode = 2 +mouse_filter = 1 theme_override_styles/panel = SubResource("StyleBoxFlat_3lugd") [node name="MarginContainer" type="MarginContainer" parent="TowerInfoPanel/PanelContainer"] @@ -274,4 +282,4 @@ layout_mode = 2 size_flags_horizontal = 0 size_flags_vertical = 0 -[connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/CubeBtn" to="." method="_on_button_cube_pressed"] +[connection signal="pressed" from="TowerButtonPanel/ControlPanelBase/MarginContainer/ButtonContainer/CubeBtn" to="." method="_on_button_cube_pressed"] diff --git a/UI/gui_button.tscn b/UI/gui_button.tscn index 2948708..0341c5f 100644 --- a/UI/gui_button.tscn +++ b/UI/gui_button.tscn @@ -25,6 +25,7 @@ offset_bottom = 80.0 size_flags_horizontal = 4 size_flags_vertical = 4 tooltip_text = "Sélectionner Pierre" +mouse_filter = 1 mouse_default_cursor_shape = 2 script = ExtResource("1_snobr") metadata/_custom_type_script = "uid://dyhtr6g7kd1g2" @@ -44,6 +45,7 @@ layout_mode = 0 offset_top = 70.0 offset_right = 80.0 offset_bottom = 80.0 +mouse_filter = 1 theme_override_styles/fill = SubResource("StyleBoxFlat_i47ne") show_percentage = false @@ -57,10 +59,11 @@ anchor_bottom = 1.0 offset_top = -36.0 grow_horizontal = 2 grow_vertical = 0 -mouse_filter = 2 +mouse_filter = 1 theme_override_styles/panel = SubResource("StyleBoxFlat_snobr") [node name="Label" type="Label" parent="LeFond"] layout_mode = 2 +mouse_filter = 1 label_settings = SubResource("LabelSettings_snobr") horizontal_alignment = 1 diff --git a/UI/upgrade_button.tscn b/UI/upgrade_button.tscn index aeea310..82b0067 100644 --- a/UI/upgrade_button.tscn +++ b/UI/upgrade_button.tscn @@ -12,12 +12,14 @@ script = ExtResource("1_xoo7y") [node name="UpgradeName" type="Label" parent="."] layout_mode = 2 size_flags_horizontal = 3 +mouse_filter = 1 theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_font_sizes/font_size = 24 text = "test" [node name="UpgradeButton" type="Button" parent="."] layout_mode = 2 +mouse_filter = 1 theme_override_font_sizes/font_size = 18 text = "Lvl. 0 "