Add build directory to .gitignore, create export presets for Web and Windows Desktop, adjust z-index and mouse filter in level_1.tscn, add update_game_state function in level.gd, change main_scene path in project.godot, set rendering method to "gl_compatibility", add LevelSelect and related nodes in main_menu.tscn, create scene_manager.tscn with MainMenu node, implement functionality for menu button selection in main_menu.gd.

This commit is contained in:
Dan 2024-05-10 14:39:24 +01:00
parent ca4788ce6f
commit b6cdb68b4e
21 changed files with 499 additions and 10 deletions

View file

@ -4,9 +4,13 @@ extends Control
@onready var drones_label = get_node("%DronesUsed")
@onready var points_label = get_node("%TotalPoints")
@onready var main_menu_button = get_node("%MainMenu")
func _ready():
visible = false
main_menu_button.connect("pressed", Callable(self, "on_main_menu_pressed"))
func _process(_delta):
if GameState.level_complete == true:
update_points()
@ -15,4 +19,8 @@ func _process(_delta):
func update_points():
time_label.text = "Time Spent: " + Str.seconds_to_hms(GameState.level_timer)
drones_label.text = "Drones Used: " + str(GameState.drones_used)
points_label.text = "Total Points: " + Str.format_number(GameState.level_points)
points_label.text = "Total Points: " + Str.format_number(GameState.level_points)
func on_main_menu_pressed():
GameState.reset()
SceneMgr.load_scene("MAINMENU")

12
ui/scripts/pause_menu.gd Normal file
View file

@ -0,0 +1,12 @@
extends Control
class_name PauseMenu
signal resume_game
func _unhandled_input(event : InputEvent) -> void:
if event.is_action_pressed("ui_cancel"):
Log.pr("Pause Menu: ui_cancel pressed")
if get_tree().paused:
Log.pr("Sending unpause signal")
resume_game.emit()

View file

@ -11,14 +11,23 @@ var last_update : float = 0
@onready var level_timer_label = get_node("%LevelTimer")
@onready var par_text_label = get_node("%ParText")
func _ready():
var disable_pause : bool = false
func _ready():
hide_help_text()
update_ui()
%PauseMenu.hide()
%PauseMenu.connect("resume_game", Callable(self, "unpause_game"))
%QuitButton.connect("pressed", Callable(self, "quit_game"))
%ResumeButton.connect("pressed", Callable(self, "unpause_game"))
func _process(delta):
last_update += delta
disable_pause = false
if last_update > update_interval:
last_update = 0
update_ui()
@ -28,6 +37,13 @@ func _process(delta):
level_timer_label.text = Str.seconds_to_hms(GameState.level_timer)
func _unhandled_input(event : InputEvent) -> void:
if event.is_action_pressed("ui_cancel"):
Log.pr("UIComponent: ui_cancel pressed")
if get_tree().paused == false && disable_pause == false:
Log.pr("Game is not paused, so pausing it...")
pause_game()
func update_ui():
nectar_bar.value = GameState.gathered_nectar
nectar_bar.max_value = GameState.required_nectar
@ -46,4 +62,20 @@ func update_level_text(text: String):
level_text_label.text = text
func update_par_text(text: String):
par_text_label.text = text
par_text_label.text = text
func quit_game():
get_tree().paused = false
GameState.reset()
SceneMgr.load_scene("MAINMENU")
func pause_game():
get_tree().paused = true
%PauseMenu.show()
func unpause_game():
Log.pr("Pause Menu: Close button pressed")
disable_pause = true
%PauseMenu.hide()
get_tree().paused = false