imported main menu scene addon
This commit is contained in:
@@ -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.
|
||||
|
||||
signal level_selected
|
||||
|
||||
@onready var level_buttons_container: ItemList = %LevelButtonsContainer
|
||||
@onready var scene_lister: SceneLister = $SceneLister
|
||||
var level_paths : Array[String]
|
||||
|
||||
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()
|
||||
level_paths.clear()
|
||||
var game_state := GameState.get_or_create_state()
|
||||
for file_path in game_state.level_states.keys():
|
||||
var file_name : String = 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)
|
||||
level_paths.append(file_path)
|
||||
|
||||
func _on_level_buttons_container_item_activated(index: int) -> void:
|
||||
GameState.set_checkpoint_level_path(level_paths[index])
|
||||
level_selected.emit()
|
||||
@@ -0,0 +1 @@
|
||||
uid://b2722vtbsd4q1
|
||||
@@ -0,0 +1,49 @@
|
||||
[gd_scene format=3 uid="uid://ccab8m5dn7vjx"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/menus/level_select_menu/level_select_menu.gd" id="1_a0tqu"]
|
||||
[ext_resource type="Script" path="res://addons/maaacks_game_template/base/nodes/utilities/capture_focus.gd" id="2_tjb7s"]
|
||||
[ext_resource type="Script" path="res://addons/maaacks_game_template/extras/scripts/scene_lister.gd" id="3_le4jx"]
|
||||
|
||||
[node name="LevelSelectMenu" type="Control" unique_id=1470024191]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_a0tqu")
|
||||
|
||||
[node name="Control" type="Control" parent="." unique_id=1541649425]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("2_tjb7s")
|
||||
|
||||
[node name="LevelButtonsContainer" type="ItemList" parent="Control" unique_id=17921809]
|
||||
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="." unique_id=1851760223]
|
||||
script = ExtResource("3_le4jx")
|
||||
files = Array[String](["res://scenes/game_scene/levels/level_1.tscn", "res://scenes/game_scene/levels/level_2.tscn", "res://scenes/game_scene/levels/level_3.tscn"])
|
||||
directory = "res://scenes/game_scene/levels"
|
||||
|
||||
[connection signal="item_activated" from="Control/LevelButtonsContainer" to="." method="_on_level_buttons_container_item_activated"]
|
||||
Reference in New Issue
Block a user