gd: added menu template

This commit is contained in:
2025-06-10 18:46:20 +02:00
parent f9a6c42b14
commit c554e24b01
421 changed files with 12371 additions and 2 deletions

View File

@@ -0,0 +1,33 @@
extends Control
## Loads a simple ItemList node within a margin container. SceneLister updates
## the available scenes in the directory provided. Activating a level will update
## the GameState's current_level, and emit a signal. The main menu node will trigger
## a load action from that signal.
@onready var level_buttons_container: ItemList = %LevelButtonsContainer
@onready var scene_lister: SceneLister = $SceneLister
signal level_selected
func _ready() -> void:
add_levels_to_container()
## A fresh level list is propgated into the ItemList, and the file names are cleaned
func add_levels_to_container() -> void:
level_buttons_container.clear()
var max_level_reached := GameState.get_max_level_reached()
var level_iter := 0
for file_path in scene_lister.files:
if level_iter > max_level_reached : break
level_iter += 1
var file_name := file_path.get_file() # e.g., "level_1.tscn"
file_name = file_name.trim_suffix(".tscn") # Remove the ".tscn" extension
file_name = file_name.replace("_", " ") # Replace underscores with spaces
file_name = file_name.capitalize() # Convert to proper case
var button_name := str(file_name)
level_buttons_container.add_item(button_name)
func _on_level_buttons_container_item_activated(index: int) -> void:
GameState.set_current_level(index)
level_selected.emit()

View File

@@ -0,0 +1 @@
uid://x734txqgcn84

View File

@@ -0,0 +1,49 @@
[gd_scene load_steps=4 format=3 uid="uid://fybssggvts5q"]
[ext_resource type="Script" uid="uid://x734txqgcn84" path="res://menus/scenes/menus/level_select_menu/level_select_menu.gd" id="1_wxb4a"]
[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_oixp6"]
[ext_resource type="Script" uid="uid://wjq7li836lwj" path="res://addons/maaacks_game_template/extras/scripts/scene_lister.gd" id="3_stdqw"]
[node name="LevelSelectMenu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_wxb4a")
[node name="Control" type="Control" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("2_oixp6")
[node name="LevelButtonsContainer" type="ItemList" parent="Control"]
unique_name_in_owner = true
custom_minimum_size = Vector2(400, 0)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -200.0
offset_top = -17.5
offset_right = 200.0
offset_bottom = 17.5
grow_horizontal = 2
grow_vertical = 2
auto_height = true
item_count = 1
item_0/text = "1 - ExampleLevel"
[node name="SceneLister" type="Node" parent="."]
script = ExtResource("3_stdqw")
files = Array[String](["res://menus/scenes/game_scene/levels/level_1.tscn", "res://menus/scenes/game_scene/levels/level_2.tscn", "res://menus/scenes/game_scene/levels/level_3.tscn"])
directory = "res://menus/scenes/game_scene/levels"
[connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"]

View File

@@ -0,0 +1 @@
extends MainMenu

View File

@@ -0,0 +1 @@
uid://cns18c1ywt06b

View File

@@ -0,0 +1,12 @@
[gd_scene load_steps=5 format=3 uid="uid://1on734grcvxa"]
[ext_resource type="PackedScene" uid="uid://c6k5nnpbypshi" path="res://addons/maaacks_game_template/base/scenes/menus/main_menu/main_menu.tscn" id="1_557p1"]
[ext_resource type="Script" uid="uid://cns18c1ywt06b" path="res://menus/scenes/menus/main_menu/main_menu.gd" id="2_wwoqg"]
[ext_resource type="PackedScene" uid="uid://bq2ti3hrjlgdl" path="res://menus/scenes/menus/options_menu/master_options_menu_with_tabs.tscn" id="3_n1pnu"]
[ext_resource type="PackedScene" uid="uid://ct0yseu6qy88d" path="res://menus/scenes/credits/scrollable_credits.tscn" id="4_0emlv"]
[node name="MainMenu" instance=ExtResource("1_557p1")]
script = ExtResource("2_wwoqg")
game_scene_path = "res://menus/scenes/game_scene/game_ui.tscn"
options_packed_scene = ExtResource("3_n1pnu")
credits_packed_scene = ExtResource("4_0emlv")

View File

@@ -0,0 +1,69 @@
extends MainMenu
@export var level_select_packed_scene: PackedScene
var level_select_scene : Node
var animation_state_machine : AnimationNodeStateMachinePlayback
func load_game_scene() -> void:
GameState.start_game()
super.load_game_scene()
func new_game() -> void:
GlobalState.reset()
load_game_scene()
func intro_done() -> void:
animation_state_machine.travel("OpenMainMenu")
func _is_in_intro() -> bool:
return animation_state_machine.get_current_node() == "Intro"
func _event_is_mouse_button_released(event : InputEvent) -> bool:
return event is InputEventMouseButton and not event.is_pressed()
func _event_skips_intro(event : InputEvent) -> bool:
return event.is_action_released("ui_accept") or \
event.is_action_released("ui_select") or \
event.is_action_released("ui_cancel") or \
_event_is_mouse_button_released(event)
func _open_sub_menu(menu : Node) -> void:
super._open_sub_menu(menu)
animation_state_machine.travel("OpenSubMenu")
func _close_sub_menu() -> void:
super._close_sub_menu()
animation_state_machine.travel("OpenMainMenu")
func _input(event : InputEvent) -> void:
if _is_in_intro() and _event_skips_intro(event):
intro_done()
return
super._input(event)
func _add_level_select_if_set() -> void:
if level_select_packed_scene == null: return
if GameState.get_max_level_reached() <= 0 : return
level_select_scene = level_select_packed_scene.instantiate()
level_select_scene.hide()
%LevelSelectContainer.call_deferred("add_child", level_select_scene)
if level_select_scene.has_signal("level_selected"):
level_select_scene.connect("level_selected", load_game_scene)
%LevelSelectButton.show()
func _show_continue_if_set() -> void:
if GameState.has_game_state():
%ContinueGameButton.show()
func _ready() -> void:
super._ready()
_add_level_select_if_set()
_show_continue_if_set()
animation_state_machine = $MenuAnimationTree.get("parameters/playback")
func _on_continue_game_button_pressed() -> void:
load_game_scene()
func _on_level_select_button_pressed() -> void:
_open_sub_menu(level_select_scene)

View File

@@ -0,0 +1 @@
uid://c0ntfmiuw4ttg

View File

@@ -0,0 +1,417 @@
[gd_scene load_steps=18 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="Script" uid="uid://c0ntfmiuw4ttg" path="res://menus/scenes/menus/main_menu/main_menu_with_animations.gd" id="2_nyjay"]
[ext_resource type="PackedScene" uid="uid://bq2ti3hrjlgdl" path="res://menus/scenes/menus/options_menu/master_options_menu_with_tabs.tscn" id="3_f368h"]
[ext_resource type="PackedScene" uid="uid://ct0yseu6qy88d" path="res://menus/scenes/credits/scrollable_credits.tscn" id="4_85otm"]
[sub_resource type="Animation" id="1"]
resource_name = "Intro"
length = 2.4
tracks/0/type = "method"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(2.4),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"intro_done"
}]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MenuContainer/TitleMargin/TitleContainer:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MenuContainer/SubTitleMargin/SubTitleContainer:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.8, 1.6),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer:modulate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 1.6, 2.4),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("FlowControlContainer:mouse_filter")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 2.4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 2]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("VersionMargin/VersionContainer:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 1.6, 2.4),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="6"]
resource_name = "OpenMainMenu"
length = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MenuContainer/TitleMargin/TitleContainer:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MenuContainer/SubTitleMargin/SubTitleContainer:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("FlowControlContainer/FlowControl/BackButton:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("FlowControlContainer:mouse_filter")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [2]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("MenuContainer:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("VersionMargin/VersionContainer:modulate")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer:lock")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="4"]
resource_name = "OpenSubMenu"
length = 0.2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("FlowControlContainer/FlowControl/BackButton:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MenuContainer:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("FlowControlContainer/FlowControl/BackButton:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MenuContainer/TitleMargin/TitleContainer:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MenuContainer/SubTitleMargin/SubTitleContainer:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer:modulate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("FlowControlContainer:mouse_filter")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [2]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("MenuContainer:modulate")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("VersionMargin/VersionContainer:modulate")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer:lock")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2kqig"]
_data = {
&"Intro": SubResource("1"),
&"OpenMainMenu": SubResource("6"),
&"OpenSubMenu": SubResource("4"),
&"RESET": SubResource("2")
}
[sub_resource type="AnimationNodeAnimation" id="7"]
animation = &"Intro"
[sub_resource type="AnimationNodeAnimation" id="10"]
animation = &"OpenMainMenu"
[sub_resource type="AnimationNodeAnimation" id="13"]
animation = &"OpenSubMenu"
[sub_resource type="AnimationNodeStateMachineTransition" id="11"]
advance_condition = &"intro_done"
[sub_resource type="AnimationNodeStateMachineTransition" id="14"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_j0orr"]
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_63dxc"]
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_vikuh"]
states/End/position = Vector2(958, 123)
states/Intro/node = SubResource("7")
states/Intro/position = Vector2(259, 123)
states/OpenMainMenu/node = SubResource("10")
states/OpenMainMenu/position = Vector2(472, 123)
states/OpenSubMenu/node = SubResource("13")
states/OpenSubMenu/position = Vector2(734, 123)
states/Start/position = Vector2(82, 123)
transitions = ["Intro", "OpenMainMenu", SubResource("11"), "OpenMainMenu", "OpenSubMenu", SubResource("14"), "Start", "Intro", SubResource("AnimationNodeStateMachineTransition_j0orr"), "OpenSubMenu", "OpenMainMenu", SubResource("AnimationNodeStateMachineTransition_63dxc")]
graph_offset = Vector2(-180.277, 49)
[node name="MainMenu" instance=ExtResource("1_my8ii")]
script = ExtResource("2_nyjay")
level_select_packed_scene = null
game_scene_path = "uid://cxbskue0lj2gv"
options_packed_scene = ExtResource("3_f368h")
credits_packed_scene = ExtResource("4_85otm")
[node name="MenuAnimationPlayer" type="AnimationPlayer" parent="." index="1"]
libraries = {
&"": SubResource("AnimationLibrary_2kqig")
}
[node name="MenuAnimationTree" type="AnimationTree" parent="." index="2"]
tree_root = SubResource("AnimationNodeStateMachine_vikuh")
anim_player = NodePath("../MenuAnimationPlayer")
parameters/conditions/intro_done = false
[node name="BackgroundMusicPlayer" parent="." index="3"]
bus = &"Master"
[node name="VersionContainer" parent="VersionMargin" index="0"]
modulate = Color(1, 1, 1, 0)
[node name="TitleContainer" parent="MenuContainer/TitleMargin" index="0"]
modulate = Color(1, 1, 1, 0)
[node name="TitleLabel" parent="MenuContainer/TitleMargin/TitleContainer" index="0"]
text = "Movement tests"
[node name="SubTitleContainer" parent="MenuContainer/SubTitleMargin" index="0"]
modulate = Color(1, 1, 1, 0)
[node name="SubTitleLabel" parent="MenuContainer/SubTitleMargin/SubTitleContainer" index="0"]
text = "A prototype"
[node name="MenuButtonsContainer" parent="MenuContainer/MenuButtonsMargin" index="0"]
modulate = Color(1, 1, 1, 0)
[node name="MenuButtonsBoxContainer" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer" index="0"]
lock = true
[node name="ContinueGameButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="1"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Continue"
[node name="LevelSelectButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="2"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Level Select"
[node name="LevelSelectContainer" type="MarginContainer" parent="." index="9"]
unique_name_in_owner = true
layout_mode = 0
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 32
[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/ContinueGameButton" to="." method="_on_continue_game_button_pressed"]
[connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/LevelSelectButton" to="." method="_on_level_select_button_pressed"]

View File

@@ -0,0 +1,38 @@
@tool
extends ListOptionControl
func _set_input_device() -> void:
var current_setting : Variant = _get_setting(default_value)
if current_setting is bool:
current_setting = &"Default"
AudioServer.input_device = _get_setting(default_value)
func _add_microphone_audio_stream() -> void:
var instance := AudioStreamPlayer.new()
instance.stream = AudioStreamMicrophone.new()
instance.autoplay = true
add_child.call_deferred(instance)
instance.ready.connect(_set_input_device)
func _ready() -> void:
if ProjectSettings.get_setting("audio/driver/enable_input", false):
if AudioServer.input_device.is_empty():
_add_microphone_audio_stream()
else:
_set_input_device()
if not Engine.is_editor_hint():
option_values = AudioServer.get_input_device_list()
else:
hide()
super._ready()
func _on_setting_changed(value : Variant) -> void:
if value >= option_values.size(): return
AudioServer.input_device = option_values[value]
super._on_setting_changed(value)
func _value_title_map(value : Variant) -> String:
if value is String:
return value
else:
return super._value_title_map(value)

View File

@@ -0,0 +1 @@
uid://cx21fockjcehv

View File

@@ -0,0 +1,20 @@
[gd_scene load_steps=3 format=3 uid="uid://cimjrqopk7trl"]
[ext_resource type="PackedScene" uid="uid://b6bl3n5mp3m1e" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn" id="1_xywkw"]
[ext_resource type="Script" uid="uid://cx21fockjcehv" path="res://menus/scenes/menus/options_menu/audio/audio_input_option_control.gd" id="2_cgbct"]
[node name="AudioInputOptionControl" instance=ExtResource("1_xywkw")]
script = ExtResource("2_cgbct")
option_name = "Input Device"
option_section = 2
key = "InputDevice"
section = "AudioSettings"
property_type = 4
[node name="OptionLabel" parent="." index="0"]
text = "Input Device :"
[node name="OptionButton" parent="." index="1"]
size_flags_horizontal = 3
text_overrun_behavior = 1
clip_text = true

View File

@@ -0,0 +1 @@
extends AudioOptionsMenu

View File

@@ -0,0 +1 @@
uid://ccd8k37glks2h

View File

@@ -0,0 +1,11 @@
[gd_scene load_steps=4 format=3 uid="uid://c7ulxshxe636e"]
[ext_resource type="PackedScene" uid="uid://c8vnncjwqcpab" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/audio/audio_options_menu.tscn" id="1_8yusf"]
[ext_resource type="Script" uid="uid://ccd8k37glks2h" path="res://menus/scenes/menus/options_menu/audio/audio_options_menu.gd" id="2_85b82"]
[ext_resource type="PackedScene" uid="uid://cimjrqopk7trl" path="res://menus/scenes/menus/options_menu/audio/audio_input_option_control.tscn" id="3_3g00r"]
[node name="Audio" instance=ExtResource("1_8yusf")]
script = ExtResource("2_85b82")
[node name="AudioInputOptionControl" parent="VBoxContainer" index="2" instance=ExtResource("3_3g00r")]
layout_mode = 2

View File

@@ -0,0 +1,4 @@
extends Control
func _on_ResetGameControl_reset_confirmed() -> void:
GlobalState.reset()

View File

@@ -0,0 +1 @@
uid://do8gkcahgjpj2

View File

@@ -0,0 +1,26 @@
[gd_scene load_steps=4 format=3 uid="uid://csyeb55n3u6bs"]
[ext_resource type="Script" uid="uid://do8gkcahgjpj2" path="res://menus/scenes/menus/options_menu/game/game_options_menu.gd" id="1_u06ei"]
[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="2_vwave"]
[ext_resource type="PackedScene" uid="uid://dfjkn4yl3q1am" path="res://menus/scenes/menus/options_menu/game/reset_game_control/reset_game_control.tscn" id="3_hu6k8"]
[node name="Game" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
theme_override_constants/margin_top = 24
theme_override_constants/margin_bottom = 24
script = ExtResource("1_u06ei")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
custom_minimum_size = Vector2(400, 0)
layout_mode = 2
size_flags_horizontal = 4
alignment = 1
script = ExtResource("2_vwave")
search_depth = 2
[node name="ResetGameControl" parent="VBoxContainer" instance=ExtResource("3_hu6k8")]
layout_mode = 2
[connection signal="reset_confirmed" from="VBoxContainer/ResetGameControl" to="." method="_on_ResetGameControl_reset_confirmed"]

View File

@@ -0,0 +1,13 @@
extends HBoxContainer
signal reset_confirmed
func _on_ResetButton_pressed() -> void:
$ConfirmResetDialog.popup_centered()
$ResetButton.disabled = true
func _on_ConfirmResetDialog_confirmed() -> void:
reset_confirmed.emit()
func _on_confirm_reset_dialog_canceled() -> void:
$ResetButton.disabled = false

View File

@@ -0,0 +1 @@
uid://bijygd7ul853x

View File

@@ -0,0 +1,27 @@
[gd_scene load_steps=2 format=3 uid="uid://dfjkn4yl3q1am"]
[ext_resource type="Script" uid="uid://bijygd7ul853x" path="res://menus/scenes/menus/options_menu/game/reset_game_control/reset_game_control.gd" id="1_feltj"]
[node name="ResetGameControl" type="HBoxContainer"]
custom_minimum_size = Vector2(0, 32)
offset_top = 210.0
offset_right = 305.0
offset_bottom = 242.0
script = ExtResource("1_feltj")
[node name="ResetLabel" type="Label" parent="."]
layout_mode = 2
size_flags_horizontal = 3
text = "Reset Game :"
[node name="ResetButton" type="Button" parent="."]
custom_minimum_size = Vector2(72, 32)
layout_mode = 2
text = "Reset"
[node name="ConfirmResetDialog" type="ConfirmationDialog" parent="."]
dialog_text = "Do you want to reset your game data?"
[connection signal="pressed" from="ResetButton" to="." method="_on_ResetButton_pressed"]
[connection signal="canceled" from="ConfirmResetDialog" to="." method="_on_confirm_reset_dialog_canceled"]
[connection signal="confirmed" from="ConfirmResetDialog" to="." method="_on_ConfirmResetDialog_confirmed"]

View File

@@ -0,0 +1,65 @@
[gd_scene load_steps=3 format=3 uid="uid://ceehkbh6emrdm"]
[ext_resource type="Script" path="res://addons/maaacks_game_template/base/scripts/capture_focus.gd" id="1_goga1"]
[ext_resource type="PackedScene" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn" id="2_iyvrj"]
[node name="Inputs" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
theme_override_constants/separation = 8
script = ExtResource("1_goga1")
search_depth = 5
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_top = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 8
alignment = 1
[node name="MouseSensitivityControl" parent="VBoxContainer/MarginContainer/VBoxContainer" instance=ExtResource("2_iyvrj")]
layout_mode = 2
option_name = "Mouse Sensitivity"
option_section = 1
key = "MouseSensitivity"
section = "InputSettings"
[node name="OptionLabel" parent="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl" index="0"]
text = "Mouse Sensitivity :"
[node name="HSlider" parent="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl" index="1"]
min_value = 0.25
max_value = 2.0
tick_count = 8
[node name="JoypadSensitivityControl" parent="VBoxContainer/MarginContainer/VBoxContainer" instance=ExtResource("2_iyvrj")]
layout_mode = 2
option_name = "Joypad Sensitivity"
option_section = 1
key = "JoypadSensitivity"
section = "InputSettings"
[node name="OptionLabel" parent="VBoxContainer/MarginContainer/VBoxContainer/JoypadSensitivityControl" index="0"]
text = "Joypad Sensitivity :"
[node name="HSlider" parent="VBoxContainer/MarginContainer/VBoxContainer/JoypadSensitivityControl" index="1"]
min_value = 0.25
max_value = 2.0
tick_count = 8
[editable path="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl"]
[editable path="VBoxContainer/MarginContainer/VBoxContainer/JoypadSensitivityControl"]

View File

@@ -0,0 +1,2 @@
@tool
extends InputOptionsMenu

View File

@@ -0,0 +1 @@
uid://crmckg7rtbwok

View File

@@ -0,0 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://cmoeybw5t652d"]
[ext_resource type="PackedScene" uid="uid://dp3rgqaehb3xu" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.tscn" id="1_7pp6d"]
[ext_resource type="Script" uid="uid://crmckg7rtbwok" path="res://menus/scenes/menus/options_menu/input/input_options_menu.gd" id="2_0afnv"]
[node name="Controls" instance=ExtResource("1_7pp6d")]
script = ExtResource("2_0afnv")

View File

@@ -0,0 +1,41 @@
[gd_scene load_steps=4 format=3 uid="uid://6ykdvf4srto5"]
[ext_resource type="PackedScene" uid="uid://dp3rgqaehb3xu" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/input/input_options_menu.tscn" id="1_mva3c"]
[ext_resource type="Script" uid="uid://crmckg7rtbwok" path="res://menus/scenes/menus/options_menu/input/input_options_menu.gd" id="2_2ceeu"]
[ext_resource type="PackedScene" uid="uid://cl416gdb1fgwr" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/slider_option_control.tscn" id="3_pecdw"]
[node name="Controls" instance=ExtResource("1_mva3c")]
script = ExtResource("2_2ceeu")
[node name="VBoxContainer" parent="." index="0"]
theme_override_constants/separation = 16
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer" index="0"]
layout_mode = 2
theme_override_constants/margin_top = 32
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MarginContainer" index="0"]
layout_mode = 2
size_flags_vertical = 3
alignment = 1
[node name="MouseSensitivityControl" parent="VBoxContainer/MarginContainer/VBoxContainer" index="0" instance=ExtResource("3_pecdw")]
layout_mode = 2
option_name = "Mouse Sensitivity"
option_section = 1
key = "MouseSensitivity"
section = "InputSettings"
[node name="OptionLabel" parent="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl" index="0"]
text = "Mouse Sensitivity :"
[node name="HSlider" parent="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl" index="1"]
min_value = 0.25
max_value = 2.0
tick_count = 8
[node name="HSeparator" type="HSeparator" parent="VBoxContainer" index="1"]
layout_mode = 2
[editable path="VBoxContainer/MarginContainer/VBoxContainer/MouseSensitivityControl"]

View File

@@ -0,0 +1 @@
extends MasterOptionsMenu

View File

@@ -0,0 +1 @@
uid://bml584x67xpj2

View File

@@ -0,0 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://bh2anuw21xdwu"]
[ext_resource type="PackedScene" uid="uid://bvwl11s2p0hd" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/master_options_menu.tscn" id="1_ma1jo"]
[ext_resource type="Script" uid="uid://bml584x67xpj2" path="res://menus/scenes/menus/options_menu/master_options_menu.gd" id="2_mk4ln"]
[node name="MasterOptionsMenu" instance=ExtResource("1_ma1jo")]
script = ExtResource("2_mk4ln")

View File

@@ -0,0 +1,39 @@
[gd_scene load_steps=8 format=3 uid="uid://bq2ti3hrjlgdl"]
[ext_resource type="PackedScene" uid="uid://bvwl11s2p0hd" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/master_options_menu.tscn" id="1_iwcoa"]
[ext_resource type="Script" uid="uid://bml584x67xpj2" path="res://menus/scenes/menus/options_menu/master_options_menu.gd" id="2_36oo7"]
[ext_resource type="PackedScene" uid="uid://cmoeybw5t652d" path="res://menus/scenes/menus/options_menu/input/input_options_menu.tscn" id="3_l1ye5"]
[ext_resource type="PackedScene" uid="uid://ceehkbh6emrdm" path="res://menus/scenes/menus/options_menu/input/input_extras_menu.tscn" id="4_w27xj"]
[ext_resource type="PackedScene" uid="uid://c7ulxshxe636e" path="res://menus/scenes/menus/options_menu/audio/audio_options_menu.tscn" id="5_f0yn1"]
[ext_resource type="PackedScene" uid="uid://ct0i2rcp47pm7" path="res://menus/scenes/menus/options_menu/video/video_options_menu_with_extras.tscn" id="6_7ovpx"]
[ext_resource type="PackedScene" uid="uid://csyeb55n3u6bs" path="res://menus/scenes/menus/options_menu/game/game_options_menu.tscn" id="7_q1wy3"]
[node name="MasterOptionsMenu" instance=ExtResource("1_iwcoa")]
script = ExtResource("2_36oo7")
[node name="TabContainer" parent="." index="0"]
current_tab = 0
[node name="Controls" parent="TabContainer" index="1" instance=ExtResource("3_l1ye5")]
layout_mode = 2
metadata/_tab_index = 0
[node name="Inputs" parent="TabContainer" index="2" instance=ExtResource("4_w27xj")]
visible = false
layout_mode = 2
metadata/_tab_index = 1
[node name="Audio" parent="TabContainer" index="3" instance=ExtResource("5_f0yn1")]
visible = false
layout_mode = 2
metadata/_tab_index = 2
[node name="Video" parent="TabContainer" index="4" instance=ExtResource("6_7ovpx")]
visible = false
layout_mode = 2
metadata/_tab_index = 3
[node name="Game" parent="TabContainer" index="5" instance=ExtResource("7_q1wy3")]
visible = false
layout_mode = 2
metadata/_tab_index = 4

View File

@@ -0,0 +1 @@
extends MiniOptionsMenu

View File

@@ -0,0 +1 @@
uid://d230xsd8s1bgc

View File

@@ -0,0 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://bia3medhlsg3j"]
[ext_resource type="PackedScene" uid="uid://vh1ucj2rfbby" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.tscn" id="1_8lxe7"]
[ext_resource type="Script" uid="uid://d230xsd8s1bgc" path="res://menus/scenes/menus/options_menu/mini_options_menu.gd" id="2_ptjhm"]
[node name="MiniOptionsMenu" instance=ExtResource("1_8lxe7")]
script = ExtResource("2_ptjhm")

View File

@@ -0,0 +1,4 @@
extends MiniOptionsMenu
func _on_reset_game_control_reset_confirmed() -> void:
GlobalState.reset()

View File

@@ -0,0 +1 @@
uid://ceg0gjjapg77k

View File

@@ -0,0 +1,13 @@
[gd_scene load_steps=4 format=3 uid="uid://foajscu2dqkk"]
[ext_resource type="PackedScene" uid="uid://vh1ucj2rfbby" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/mini_options_menu.tscn" id="1_gcivb"]
[ext_resource type="Script" uid="uid://ceg0gjjapg77k" path="res://menus/scenes/menus/options_menu/mini_options_menu_with_reset.gd" id="2_oof6u"]
[ext_resource type="PackedScene" uid="uid://dfjkn4yl3q1am" path="res://menus/scenes/menus/options_menu/game/reset_game_control/reset_game_control.tscn" id="3_gss4d"]
[node name="MiniOptionsMenu" instance=ExtResource("1_gcivb")]
script = ExtResource("2_oof6u")
[node name="ResetGameControl" parent="." index="3" instance=ExtResource("3_gss4d")]
layout_mode = 2
[connection signal="reset_confirmed" from="ResetGameControl" to="." method="_on_reset_game_control_reset_confirmed"]

View File

@@ -0,0 +1 @@
extends VideoOptionsMenu

View File

@@ -0,0 +1 @@
uid://dihvdjypwmb1w

View File

@@ -0,0 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://df8nj4p82ic65"]
[ext_resource type="PackedScene" uid="uid://b2numvphf2kau" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.tscn" id="1_kdy5u"]
[ext_resource type="Script" uid="uid://dihvdjypwmb1w" path="res://menus/scenes/menus/options_menu/video/video_options_menu.gd" id="2_2gjg5"]
[node name="Video" instance=ExtResource("1_kdy5u")]
script = ExtResource("2_2gjg5")

View File

@@ -0,0 +1,33 @@
[gd_scene load_steps=4 format=3 uid="uid://ct0i2rcp47pm7"]
[ext_resource type="PackedScene" uid="uid://b2numvphf2kau" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/video/video_options_menu.tscn" id="1_iqoga"]
[ext_resource type="Script" uid="uid://dihvdjypwmb1w" path="res://menus/scenes/menus/options_menu/video/video_options_menu.gd" id="2_ti4vq"]
[ext_resource type="PackedScene" uid="uid://b6bl3n5mp3m1e" path="res://addons/maaacks_game_template/base/scenes/menus/options_menu/option_control/list_option_control.tscn" id="3_nxs4g"]
[node name="Video" instance=ExtResource("1_iqoga")]
script = ExtResource("2_ti4vq")
[node name="AntiAliasingControl" parent="VBoxContainer" index="3" instance=ExtResource("3_nxs4g")]
layout_mode = 2
lock_titles = true
option_values = [0, 1, 2, 3]
option_titles = Array[String](["Disabled (Fastest)", "2x", "4x", "8x (Slowest)"])
option_name = "Anti-Aliasing"
option_section = 3
key = "Anti-aliasing"
section = "VideoSettings"
property_type = 2
default_value = 0
[node name="CameraShakeControl" parent="VBoxContainer" index="4" instance=ExtResource("3_nxs4g")]
visible = false
layout_mode = 2
lock_titles = true
option_values = [1.0, 0.75, 0.5, 0.0]
option_titles = Array[String](["Normal", "Reduced", "Minimal", "None"])
option_name = "Camera Shake"
option_section = 3
key = "CameraShake"
section = "VideoSettings"
property_type = 3
default_value = 1.0