simple level selection menu, change level logic (#3)
This commit is contained in:
parent
9890e0a625
commit
59bed24acd
13 changed files with 199 additions and 134 deletions
|
@ -16,7 +16,7 @@ func _on_btn_exit_pressed() -> void:
|
|||
get_tree().quit()
|
||||
"
|
||||
|
||||
[node name="StartMenu" type="Control"]
|
||||
[node name="InitialMenu" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
42
menus/main/level_selection_menu.tscn
Normal file
42
menus/main/level_selection_menu.tscn
Normal file
|
@ -0,0 +1,42 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://d3b12iqla7uh6"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_rmgh7"]
|
||||
script/source = "extends Control
|
||||
|
||||
signal request_play_level
|
||||
|
||||
const levels = [
|
||||
preload(\"res://levels/base/level.tscn\"),
|
||||
preload(\"res://levels/forest/level.tscn\"),
|
||||
preload(\"res://levels/night/level.tscn\"),
|
||||
]
|
||||
var selected_level := -1
|
||||
|
||||
func _ready() -> void:
|
||||
for i in len(levels):
|
||||
var btn := Button.new()
|
||||
btn.text = \"Level \" + str(i + 1)
|
||||
btn.connect(\"pressed\", func(): request_play_level.emit(levels[i]))
|
||||
$VBoxContainer/Carousel.add_child(btn)
|
||||
"
|
||||
|
||||
[node name="LevelSelectionMenu" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = SubResource("GDScript_rmgh7")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Carousel" type="HBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
|
@ -1,38 +1,48 @@
|
|||
[gd_scene load_steps=10 format=3 uid="uid://ikeidrgprk8k"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://wlhsarkeqe8r" path="res://menus/main/panel.tscn" id="1_qfa5o"]
|
||||
[ext_resource type="PackedScene" uid="uid://cnnvwotv33u1b" path="res://elements/player.tscn" id="2_0jxef"]
|
||||
[ext_resource type="PackedScene" uid="uid://wlhsarkeqe8r" path="res://menus/main/panel.tscn" id="1_5vmsf"]
|
||||
[ext_resource type="PackedScene" uid="uid://cnnvwotv33u1b" path="res://elements/player.tscn" id="2_2rexg"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_bt14i"]
|
||||
script/source = "extends Node3D
|
||||
|
||||
signal request_start
|
||||
|
||||
var start_menu = preload(\"res://menus/main/start_menu.tscn\")
|
||||
var save_file_manager = preload(\"res://menus/main/save_file_manager.tscn\")
|
||||
var settings_menu = preload(\"res://menus/main/settings_menu.tscn\")
|
||||
signal request_play_level
|
||||
|
||||
# Display on Panel 1
|
||||
const res_initial_menu = preload(\"res://menus/main/initial_menu.tscn\")
|
||||
func _ready() -> void:
|
||||
$Menus/Panel2.connect(\"request_return\", func(): rotate_cube_to(0))
|
||||
$Menus/Panel3.connect(\"request_return\", func(): rotate_cube_to(90))
|
||||
$Menus/Panel4.connect(\"request_return\", func(): rotate_cube_to(180))
|
||||
|
||||
var sm = start_menu.instantiate()
|
||||
sm.connect(\"request_start\", start)
|
||||
sm.connect(\"request_settings\", settings)
|
||||
$Menus/Panel1.change_menu(sm, false)
|
||||
|
||||
func start() -> void:
|
||||
var svm = save_file_manager.instantiate()
|
||||
svm.connect(\"request_start\", func(): request_start.emit())
|
||||
$Menus/Panel2.change_menu(svm)
|
||||
rotate_cube_to(90)
|
||||
var initial_menu := res_initial_menu.instantiate()
|
||||
initial_menu.connect(\"request_start\", start)
|
||||
initial_menu.connect(\"request_settings\", settings)
|
||||
$Menus/Panel1.change_menu(initial_menu, false)
|
||||
|
||||
# Display on Panel 2
|
||||
const res_settings_menu = preload(\"res://menus/main/settings_menu.tscn\")
|
||||
func settings() -> void:
|
||||
var sm = settings_menu.instantiate()
|
||||
$Menus/Panel2.change_menu(sm)
|
||||
var settings_menu := res_settings_menu.instantiate()
|
||||
$Menus/Panel2.change_menu(settings_menu)
|
||||
rotate_cube_to(90)
|
||||
|
||||
const res_save_file_manager = preload(\"res://menus/main/save_file_manager.tscn\")
|
||||
func start() -> void:
|
||||
var save_file_manager := res_save_file_manager.instantiate()
|
||||
save_file_manager.connect(\"request_start\", level_selection)
|
||||
$Menus/Panel2.change_menu(save_file_manager)
|
||||
rotate_cube_to(90)
|
||||
|
||||
# Display on Panel 3
|
||||
const res_level_selection_menu = preload(\"res://menus/main/level_selection_menu.tscn\")
|
||||
func level_selection() -> void:
|
||||
var level_selection_menu := res_level_selection_menu.instantiate()
|
||||
level_selection_menu.connect(\"request_play_level\", func(level: PackedScene): request_play_level.emit(level))
|
||||
$Menus/Panel3.change_menu(level_selection_menu)
|
||||
rotate_cube_to(180)
|
||||
|
||||
# cube
|
||||
func rotate_cube_to(degrees: int) -> void:
|
||||
if $Menus/AnimationPlayer.is_playing():
|
||||
return
|
||||
|
@ -98,23 +108,23 @@ ambient_light_source = 3
|
|||
ambient_light_color = Color(0.986752, 0.986752, 0.986752, 1)
|
||||
reflected_light_source = 2
|
||||
|
||||
[node name="Area" type="Node3D"]
|
||||
[node name="MainMenu" type="Node3D"]
|
||||
process_mode = 3
|
||||
script = SubResource("GDScript_bt14i")
|
||||
|
||||
[node name="Menus" type="CSGBox3D" parent="."]
|
||||
use_collision = true
|
||||
|
||||
[node name="Panel1" parent="Menus" instance=ExtResource("1_qfa5o")]
|
||||
[node name="Panel1" parent="Menus" instance=ExtResource("1_5vmsf")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.501)
|
||||
|
||||
[node name="Panel2" parent="Menus" instance=ExtResource("1_qfa5o")]
|
||||
[node name="Panel2" parent="Menus" instance=ExtResource("1_5vmsf")]
|
||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.501, 0, 0)
|
||||
|
||||
[node name="Panel3" parent="Menus" instance=ExtResource("1_qfa5o")]
|
||||
[node name="Panel3" parent="Menus" instance=ExtResource("1_5vmsf")]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -0.501)
|
||||
|
||||
[node name="Panel4" parent="Menus" instance=ExtResource("1_qfa5o")]
|
||||
[node name="Panel4" parent="Menus" instance=ExtResource("1_5vmsf")]
|
||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.501, 0, 0)
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Menus"]
|
||||
|
@ -133,7 +143,7 @@ environment = SubResource("Environment_qfa5o")
|
|||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(0.819152, -0.412596, 0.39844, 0, 0.694658, 0.71934, -0.573576, -0.589249, 0.569031, 0, 0, 0)
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_0jxef")]
|
||||
[node name="Player" parent="." instance=ExtResource("2_2rexg")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.87335, 0)
|
||||
|
||||
[node name="Camera" parent="Player" index="0"]
|
|
@ -114,10 +114,12 @@ libraries = {
|
|||
}
|
||||
|
||||
[node name="Label" type="Label" parent="VSplitContainer"]
|
||||
custom_minimum_size = Vector2(1, 1)
|
||||
layout_mode = 2
|
||||
text = "MENU NAME"
|
||||
label_settings = SubResource("LabelSettings_2d4ws")
|
||||
horizontal_alignment = 1
|
||||
autowrap_mode = 3
|
||||
uppercase = true
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="VSplitContainer"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue