From 4b5ac48e10d09f0b1728a980b567d68859ed6db2 Mon Sep 17 00:00:00 2001 From: Dan Date: Sun, 12 May 2024 09:39:02 +0100 Subject: [PATCH] Update cursor handling and reset functionality, improve UI elements. Reset game state cursor when needed. --- entities/scripts/director_drone.gd | 6 ++++-- scenes/scripts/drone_manager.gd | 3 ++- scenes/scripts/scene_manager.gd | 1 + ui/UiComponent.tscn | 15 ++++++++++++++- ui/scripts/ui_component.gd | 6 ++++++ utility/game_state.gd | 6 ++++++ 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/entities/scripts/director_drone.gd b/entities/scripts/director_drone.gd index de2c4b8..fbed59f 100644 --- a/entities/scripts/director_drone.gd +++ b/entities/scripts/director_drone.gd @@ -29,13 +29,15 @@ func _on_click_detection_mouse_exited(): if GameState.placing_drone == false: Log.pr("Mouse exited the director drone!") label.visible = false - Input.set_custom_mouse_cursor(null) + #Input.set_custom_mouse_cursor(null) + GameState.reset_cursor() func _on_click_detection_input_event(_viewport:Node, event:InputEvent, _shape_idx:int): if GameState.placing_drone == false: if (event is InputEventMouseButton && event.button_index == MOUSE_BUTTON_RIGHT && event.pressed): - Input.set_custom_mouse_cursor(null) + #Input.set_custom_mouse_cursor(null) + GameState.reset_cursor() queue_free() get_parent().get_parent().update_director_drone_list() diff --git a/scenes/scripts/drone_manager.gd b/scenes/scripts/drone_manager.gd index f9f1ccf..eb65e81 100644 --- a/scenes/scripts/drone_manager.gd +++ b/scenes/scripts/drone_manager.gd @@ -91,7 +91,8 @@ func place_drone(drone_type : String) -> void: spawning_type = drone_type func cancel_spawning() -> void: - Input.set_custom_mouse_cursor(null) + #Input.set_custom_mouse_cursor(null) + GameState.reset_cursor() drone_controls.reset_button_focus() drone_controls.enable_buttons() spawning_drone = false diff --git a/scenes/scripts/scene_manager.gd b/scenes/scripts/scene_manager.gd index 6a85f23..5eec2b0 100644 --- a/scenes/scripts/scene_manager.gd +++ b/scenes/scripts/scene_manager.gd @@ -28,6 +28,7 @@ func _ready(): func _on_change_scene(scene_name): Log.pr("Going to load a scene.", scene_name) if SCENES.has(scene_name): + GameState.reset() loading_scene_res = load(SCENES[scene_name]) Log.pr("Loading scene: ", loading_scene_res) $TransitionScene.transition() diff --git a/ui/UiComponent.tscn b/ui/UiComponent.tscn index d4d6d6e..053efd0 100644 --- a/ui/UiComponent.tscn +++ b/ui/UiComponent.tscn @@ -85,7 +85,11 @@ theme_override_constants/margin_top = 30 theme_override_constants/margin_right = 20 theme_override_constants/margin_bottom = 20 -[node name="LevelTimer" type="Label" parent="MarginContainer/MarginContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/MarginContainer"] +layout_mode = 2 +mouse_filter = 2 + +[node name="LevelTimer" type="Label" parent="MarginContainer/MarginContainer/VBoxContainer"] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 @@ -94,6 +98,15 @@ theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_font_sizes/font_size = 20 text = "00:00:00" +[node name="BeeCounter" type="Label" parent="MarginContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 16 +text = "Bees: 10/10" + [node name="HelpTextContainer" type="VBoxContainer" parent="MarginContainer/MarginContainer"] unique_name_in_owner = true layout_mode = 2 diff --git a/ui/scripts/ui_component.gd b/ui/scripts/ui_component.gd index 5fa4236..01ad1cb 100644 --- a/ui/scripts/ui_component.gd +++ b/ui/scripts/ui_component.gd @@ -10,6 +10,7 @@ var last_update : float = 0 @onready var level_text_label = get_node("%LevelText") @onready var level_timer_label = get_node("%LevelTimer") @onready var par_text_label = get_node("%ParText") +@onready var bee_counter = get_node("%BeeCounter") var disable_pause : bool = false @@ -23,6 +24,8 @@ func _ready(): %QuitButton.connect("pressed", Callable(self, "quit_game")) %ResumeButton.connect("pressed", Callable(self, "unpause_game")) + bee_counter.hide() + func _process(delta): last_update += delta @@ -47,6 +50,9 @@ func _unhandled_input(event : InputEvent) -> void: func update_ui(): nectar_bar.value = GameState.gathered_nectar nectar_bar.max_value = GameState.required_nectar + + bee_counter.text = "Bees: " + str(GameState.bees_available - GameState.dead_bees) + "/" + str(GameState.bees_available) + bee_counter.show() func hide_help_text(): for item in help_text_items: diff --git a/utility/game_state.gd b/utility/game_state.gd index 45c8b47..9d14cb0 100644 --- a/utility/game_state.gd +++ b/utility/game_state.gd @@ -1,5 +1,8 @@ class_name GameStateManager extends Node +## THIS SHOULD NOT EXIST HERE BUT I AM NOT GOING TO MAKE A NEW CLASS FOR IT RIGHT NOW +@onready var default_cursor = preload("res://resources/cursors/pointer_a.png") + var placing_drone : bool = false var level_timer : float = 0.0 @@ -84,3 +87,6 @@ func reset(): gathered_nectar = 0 drones_used = 0 dead_bees = 0 + +func reset_cursor(): + Input.set_custom_mouse_cursor(default_cursor, Input.CURSOR_ARROW, Vector2(8, 8))