can quit menus using B button
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 18s
Create tag and build when new code gets to main / Export (push) Successful in 6m5s

This commit is contained in:
2025-11-14 11:41:11 +01:00
parent ac14352e7f
commit 5b3d6c9f19
10 changed files with 58 additions and 25 deletions

View File

@@ -6,6 +6,9 @@ extends Control
@export var options_packed_scene : PackedScene @export var options_packed_scene : PackedScene
@export var credits_packed_scene : PackedScene @export var credits_packed_scene : PackedScene
@export var menu_context : GUIDEMappingContext
@export var back_action : GUIDEAction
var options_scene var options_scene
var credits_scene var credits_scene
var sub_menu var sub_menu
@@ -73,7 +76,12 @@ func _ready() -> void:
_add_or_hide_options() _add_or_hide_options()
_add_or_hide_credits() _add_or_hide_credits()
_hide_new_game_if_unset() _hide_new_game_if_unset()
_setup_inputs()
func _setup_inputs() -> void:
GUIDE.enable_mapping_context(menu_context)
back_action.triggered.connect(_on_back_button_pressed)
func _on_new_game_button_pressed() -> void: func _on_new_game_button_pressed() -> void:
new_game() new_game()

View File

@@ -9,16 +9,19 @@ extends OverlaidMenu
var popup_open : Node var popup_open : Node
var previous_mapping_contexts : Array var previous_mapping_contexts : Array
func on_enter_tree() -> void: var is_listening_to_inputs = true
pass
#previous_mapping_contexts = GUIDE.get_enabled_mapping_contexts() func _enter_tree() -> void:
#GUIDE.enable_mapping_context(menu_context) super._enter_tree()
previous_mapping_contexts = GUIDE.get_enabled_mapping_contexts()
for previous_context in previous_mapping_contexts:
GUIDE.disable_mapping_context(previous_context)
GUIDE.enable_mapping_context(menu_context)
func on_exit_tree() -> void: func _exit_tree() -> void:
pass GUIDE.disable_mapping_context(menu_context)
#GUIDE.disable_mapping_context(menu_context) for previous_context in previous_mapping_contexts:
#for previous_context in previous_mapping_contexts: GUIDE.enable_mapping_context(previous_context)
#GUIDE.enable_mapping_context(previous_context)
func close_popup() -> void: func close_popup() -> void:
if popup_open != null: if popup_open != null:
@@ -43,10 +46,15 @@ func open_options_menu() -> void:
var options_scene := options_packed_scene.instantiate() var options_scene := options_packed_scene.instantiate()
add_child(options_scene) add_child(options_scene)
_disable_focus.call_deferred() _disable_focus.call_deferred()
is_listening_to_inputs = false
await options_scene.tree_exiting await options_scene.tree_exiting
is_listening_to_inputs = true
_enable_focus.call_deferred() _enable_focus.call_deferred()
func _handle_cancel_input() -> void: func _handle_cancel_input() -> void:
if not is_listening_to_inputs:
return
if popup_open != null: if popup_open != null:
close_popup() close_popup()
else: else:
@@ -68,6 +76,8 @@ func _ready() -> void:
_hide_exit_for_web() _hide_exit_for_web()
_hide_options_if_unset() _hide_options_if_unset()
_hide_main_menu_if_unset() _hide_main_menu_if_unset()
back_action.triggered.connect(_handle_cancel_input)
func _on_restart_button_pressed() -> void: func _on_restart_button_pressed() -> void:
%ConfirmRestart.popup_centered() %ConfirmRestart.popup_centered()

View File

@@ -11,6 +11,8 @@ extends Control
process_mode = PROCESS_MODE_INHERIT process_mode = PROCESS_MODE_INHERIT
@export var makes_mouse_visible : bool = true @export var makes_mouse_visible : bool = true
@export var back_action : GUIDEAction
signal menu_closing signal menu_closing
var _initial_pause_state : bool = false var _initial_pause_state : bool = false
@@ -38,7 +40,7 @@ func _unhandled_input(event : InputEvent) -> void:
func _on_close_button_pressed() -> void: func _on_close_button_pressed() -> void:
close() close()
func _enter_tree() -> void: func _enter_tree() -> void:
_scene_tree = get_tree() _scene_tree = get_tree()
_initial_pause_state = _scene_tree.paused _initial_pause_state = _scene_tree.paused

View File

@@ -12,3 +12,11 @@ extends OverlaidMenu
if menu_scene: if menu_scene:
var _instance = menu_scene.instantiate() var _instance = menu_scene.instantiate()
%MenuContainer.add_child(_instance) %MenuContainer.add_child(_instance)
func blocking_close() -> void:
get_viewport().set_input_as_handled()
super.close()
func _ready() -> void:
back_action.triggered.connect(blocking_close)

View File

@@ -7,15 +7,18 @@ extends Node
@export var player : CharacterBody3D @export var player : CharacterBody3D
@export_group("Inputs") @export_group("Inputs")
@export var base_mode:GUIDEMappingContext
@export var pause:GUIDEAction @export var pause:GUIDEAction
var menu_already_open = false
func _ready() -> void: func _ready() -> void:
# GUIDE.enable_mapping_context(base_mode)
pause.triggered.connect(on_input_pause) pause.triggered.connect(on_input_pause)
func on_input_pause(): func on_input_pause():
if menu_already_open:
return
menu_already_open = true
if not focused_viewport: if not focused_viewport:
focused_viewport = get_viewport() focused_viewport = get_viewport()
var _initial_focus_control = focused_viewport.gui_get_focus_owner() var _initial_focus_control = focused_viewport.gui_get_focus_owner()
@@ -25,9 +28,6 @@ func on_input_pause():
get_tree().current_scene.call_deferred("add_child", current_menu) get_tree().current_scene.call_deferred("add_child", current_menu)
await current_menu.tree_exited await current_menu.tree_exited
menu_already_open = false
if is_inside_tree() and _initial_focus_control: if is_inside_tree() and _initial_focus_control:
_initial_focus_control.grab_focus() _initial_focus_control.grab_focus()
func _unhandled_input(event : InputEvent) -> void:
if event.is_action_pressed("ui_cancel"):
pass

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=42 format=3 uid="uid://dmkw8cmalm5k"] [gd_scene load_steps=41 format=3 uid="uid://dmkw8cmalm5k"]
[ext_resource type="PackedScene" uid="uid://bei4nhkf8lwdo" path="res://player_controller/PlayerController.tscn" id="1_2vsi6"] [ext_resource type="PackedScene" uid="uid://bei4nhkf8lwdo" path="res://player_controller/PlayerController.tscn" id="1_2vsi6"]
[ext_resource type="Script" uid="uid://blenis2y55fmg" path="res://tools/city_helpers.gd" id="1_qwuk2"] [ext_resource type="Script" uid="uid://blenis2y55fmg" path="res://tools/city_helpers.gd" id="1_qwuk2"]
@@ -7,7 +7,6 @@
[ext_resource type="Texture2D" uid="uid://7kcmi16gedd0" path="res://assets/LD-0001.png" id="3_ruo5i"] [ext_resource type="Texture2D" uid="uid://7kcmi16gedd0" path="res://assets/LD-0001.png" id="3_ruo5i"]
[ext_resource type="Script" uid="uid://cyh0d64pfygbl" path="res://addons/maaacks_game_template/base/scripts/pause_menu_controller.gd" id="7_ukfuy"] [ext_resource type="Script" uid="uid://cyh0d64pfygbl" path="res://addons/maaacks_game_template/base/scripts/pause_menu_controller.gd" id="7_ukfuy"]
[ext_resource type="PackedScene" uid="uid://ccqajqchiw4xu" path="res://menus/scenes/overlaid_menus/pause_menu.tscn" id="8_wctvs"] [ext_resource type="PackedScene" uid="uid://ccqajqchiw4xu" path="res://menus/scenes/overlaid_menus/pause_menu.tscn" id="8_wctvs"]
[ext_resource type="Resource" uid="uid://bl5crtu1gkrtr" path="res://systems/inputs/base_mode/base_mode.tres" id="9_eca4n"]
[ext_resource type="PackedScene" uid="uid://bkcsjsk2ciff" path="res://addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn" id="9_i2xii"] [ext_resource type="PackedScene" uid="uid://bkcsjsk2ciff" path="res://addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn" id="9_i2xii"]
[ext_resource type="Resource" uid="uid://dgluj0ql5vth7" path="res://systems/inputs/base_mode/pause.tres" id="10_0ari0"] [ext_resource type="Resource" uid="uid://dgluj0ql5vth7" path="res://systems/inputs/base_mode/pause.tres" id="10_0ari0"]
[ext_resource type="AudioStream" uid="uid://f8cvr5s041ej" path="res://assets/audio/ambiance/637083__nox_sound__ambiance_nature_night_cricket_calm_loop_stereo.wav" id="10_eca4n"] [ext_resource type="AudioStream" uid="uid://f8cvr5s041ej" path="res://assets/audio/ambiance/637083__nox_sound__ambiance_nature_night_cricket_calm_loop_stereo.wav" id="10_eca4n"]
@@ -133,7 +132,6 @@ transform = Transform3D(10000, 0, 0, 0, 1, 0, 0, 0, 10000, 0, 4.03932, -186.2594
script = ExtResource("7_ukfuy") script = ExtResource("7_ukfuy")
pause_menu_packed = ExtResource("8_wctvs") pause_menu_packed = ExtResource("8_wctvs")
player = NodePath("../Player") player = NodePath("../Player")
base_mode = ExtResource("9_eca4n")
pause = ExtResource("10_0ari0") pause = ExtResource("10_0ari0")
[node name="BackgroundMusicPlayer" parent="." instance=ExtResource("9_i2xii")] [node name="BackgroundMusicPlayer" parent="." instance=ExtResource("9_i2xii")]

View File

@@ -1,8 +1,10 @@
[gd_scene load_steps=17 format=3 uid="uid://vm22i5sv3p3s"] [gd_scene load_steps=19 format=3 uid="uid://vm22i5sv3p3s"]
[ext_resource type="PackedScene" uid="uid://c6k5nnpbypshi" path="res://addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.tscn" id="1_my8ii"] [ext_resource type="PackedScene" uid="uid://c6k5nnpbypshi" path="res://addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.tscn" id="1_my8ii"]
[ext_resource type="Script" uid="uid://c0ntfmiuw4ttg" path="res://menus/scenes/menus/main_menu/main_menu_with_animations.gd" id="2_nyjay"] [ext_resource type="Script" uid="uid://c0ntfmiuw4ttg" path="res://menus/scenes/menus/main_menu/main_menu_with_animations.gd" id="2_nyjay"]
[ext_resource type="AudioStream" uid="uid://f8cvr5s041ej" path="res://assets/audio/ambiance/637083__nox_sound__ambiance_nature_night_cricket_calm_loop_stereo.wav" id="3_tvvjd"] [ext_resource type="AudioStream" uid="uid://f8cvr5s041ej" path="res://assets/audio/ambiance/637083__nox_sound__ambiance_nature_night_cricket_calm_loop_stereo.wav" id="3_tvvjd"]
[ext_resource type="Resource" uid="uid://c2hpxkcujyc13" path="res://systems/inputs/menu_mode/menu_mode.tres" id="3_ytpwg"]
[ext_resource type="Resource" uid="uid://ck43v3q5ype3f" path="res://systems/inputs/menu_mode/back.tres" id="4_8i6b8"]
[sub_resource type="Animation" id="1"] [sub_resource type="Animation" id="1"]
resource_name = "Intro" resource_name = "Intro"
@@ -352,6 +354,8 @@ graph_offset = Vector2(-180.277, 49)
script = ExtResource("2_nyjay") script = ExtResource("2_nyjay")
level_select_packed_scene = null level_select_packed_scene = null
game_scene_path = "uid://dmkw8cmalm5k" game_scene_path = "uid://dmkw8cmalm5k"
menu_context = ExtResource("3_ytpwg")
back_action = ExtResource("4_8i6b8")
[node name="MenuAnimationPlayer" type="AnimationPlayer" parent="." index="1"] [node name="MenuAnimationPlayer" type="AnimationPlayer" parent="." index="1"]
libraries = { libraries = {

View File

@@ -1,7 +1,9 @@
[gd_scene load_steps=3 format=3 uid="uid://dim045la3mijk"] [gd_scene load_steps=4 format=3 uid="uid://dim045la3mijk"]
[ext_resource type="PackedScene" uid="uid://cikf3o5omnunl" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/mini_options_overlaid_menu.tscn" id="1_5piya"] [ext_resource type="PackedScene" uid="uid://cikf3o5omnunl" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/mini_options_overlaid_menu.tscn" id="1_5piya"]
[ext_resource type="PackedScene" uid="uid://foajscu2dqkk" path="res://menus/scenes/menus/options_menu/mini_options_menu_with_reset.tscn" id="2_3u5po"] [ext_resource type="PackedScene" uid="uid://foajscu2dqkk" path="res://menus/scenes/menus/options_menu/mini_options_menu_with_reset.tscn" id="2_3u5po"]
[ext_resource type="Resource" uid="uid://ck43v3q5ype3f" path="res://systems/inputs/menu_mode/back.tres" id="3_i7tty"]
[node name="MiniOptionsOverlaidMenu" instance=ExtResource("1_5piya")] [node name="MiniOptionsOverlaidMenu" instance=ExtResource("1_5piya")]
menu_scene = ExtResource("2_3u5po") menu_scene = ExtResource("2_3u5po")
back_action = ExtResource("3_i7tty")

View File

@@ -1,15 +1,17 @@
[gd_scene load_steps=5 format=3 uid="uid://ccqajqchiw4xu"] [gd_scene load_steps=6 format=3 uid="uid://ccqajqchiw4xu"]
[ext_resource type="PackedScene" uid="uid://b5cd6sa8qq4vc" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.tscn" id="1_0paax"] [ext_resource type="PackedScene" uid="uid://b5cd6sa8qq4vc" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.tscn" id="1_0paax"]
[ext_resource type="Script" uid="uid://bwvomv4eww4fg" path="res://menus/scenes/overlaid_menus/pause_menu.gd" id="2_ek1hy"] [ext_resource type="Script" uid="uid://bwvomv4eww4fg" path="res://menus/scenes/overlaid_menus/pause_menu.gd" id="2_ek1hy"]
[ext_resource type="PackedScene" uid="uid://dim045la3mijk" path="res://menus/scenes/overlaid_menus/mini_options_overlaid_menu.tscn" id="3_e0t2r"] [ext_resource type="PackedScene" uid="uid://dim045la3mijk" path="res://menus/scenes/overlaid_menus/mini_options_overlaid_menu.tscn" id="3_e0t2r"]
[ext_resource type="Resource" uid="uid://c2hpxkcujyc13" path="res://systems/inputs/menu_mode/menu_mode.tres" id="4_nfx08"] [ext_resource type="Resource" uid="uid://c2hpxkcujyc13" path="res://systems/inputs/menu_mode/menu_mode.tres" id="4_nfx08"]
[ext_resource type="Resource" uid="uid://ck43v3q5ype3f" path="res://systems/inputs/menu_mode/back.tres" id="5_su1bt"]
[node name="PauseMenu" instance=ExtResource("1_0paax")] [node name="PauseMenu" instance=ExtResource("1_0paax")]
script = ExtResource("2_ek1hy") script = ExtResource("2_ek1hy")
options_packed_scene = ExtResource("3_e0t2r") options_packed_scene = ExtResource("3_e0t2r")
main_menu_scene = "res://menus/scenes/menus/main_menu/main_menu_with_animations.tscn" main_menu_scene = "res://menus/scenes/menus/main_menu/main_menu_with_animations.tscn"
menu_context = ExtResource("4_nfx08") menu_context = ExtResource("4_nfx08")
back_action = ExtResource("5_su1bt")
[connection signal="tree_entered" from="." to="." method="on_enter_tree"] [connection signal="tree_entered" from="." to="." method="on_enter_tree"]
[connection signal="tree_exited" from="." to="." method="on_exit_tree"] [connection signal="tree_exited" from="." to="." method="on_exit_tree"]

View File

@@ -20,7 +20,6 @@ static func get_level_state(level_state_key : String) -> LevelState:
return new_level_state return new_level_state
static func has_game_state() -> bool: static func has_game_state() -> bool:
return false
return GlobalState.has_state(STATE_NAME) return GlobalState.has_state(STATE_NAME)
static func get_game_state() -> GameState: static func get_game_state() -> GameState: