implement the new main menu into the actual game

This commit is contained in:
Taevas 2025-03-30 15:40:22 +02:00
parent a73b32610e
commit 8f18e43af7
6 changed files with 96 additions and 226 deletions

View file

@ -1,37 +1,45 @@
[gd_scene load_steps=7 format=3 uid="uid://ikeidrgprk8k"]
[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"]
[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\")
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)
$Menus/Panel1.change_menu(sm, false)
func start() -> void:
var svm = save_file_manager.instantiate()
$Menus/Panel2.change_menu(svm)
rotate_cube(90)
request_start.emit()
#var svm = save_file_manager.instantiate()
#$Menus/Panel2.change_menu(svm)
#rotate_cube_to(90)
func settings() -> void:
var sm = settings_menu.instantiate()
$Menus/Panel2.change_menu(sm)
rotate_cube(90)
rotate_cube_to(90)
func rotate_cube(degrees: int) -> void:
func rotate_cube_to(degrees: int) -> void:
if $Menus/AnimationPlayer.is_playing():
return
degrees = -degrees
var animation: Animation = $Menus/AnimationPlayer.get_animation(\"rotate\")
var new_rotation = $Menus.rotation_degrees + Vector3(0, degrees, 0)
var new_rotation = Vector3(0, degrees, 0)
animation.track_set_key_value(0, 0, $Menus.rotation_degrees)
animation.track_set_key_value(0, 1, new_rotation)
@ -76,18 +84,26 @@ _data = {
&"rotate": SubResource("Animation_bt14i")
}
[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_bt14i"]
ground_color = Color(0.794232, 0.673177, 0.531056, 1)
[sub_resource type="Sky" id="Sky_0jxef"]
sky_material = SubResource("PhysicalSkyMaterial_bt14i")
[sub_resource type="Environment" id="Environment_qfa5o"]
background_mode = 1
background_mode = 2
background_color = Color(0.804743, 0.804743, 0.804743, 1)
sky = SubResource("Sky_0jxef")
ambient_light_source = 3
ambient_light_color = Color(0.986752, 0.986752, 0.986752, 1)
reflected_light_source = 2
[node name="Area" type="Node3D"]
process_mode = 3
script = SubResource("GDScript_bt14i")
[node name="SpotLight3D" type="SpotLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 1.90692, 0)
[node name="Menus" type="CSGBox3D" parent="."]
use_collision = true
[node name="Panel1" parent="Menus" instance=ExtResource("1_qfa5o")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.501)
@ -107,7 +123,24 @@ libraries = {
}
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(0.975535, 0, 0.219846, 0, 1, 0, -0.219846, 0, 0.975535, 0.86618, 0.217345, 1.76032)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2.5)
current = true
fov = 40.0
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
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")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.87335, 0)
[node name="Camera" parent="Player" index="0"]
visible = false
current = false
[node name="GPUParticles3D" parent="Player/Sphere" index="2"]
visible = false
[editable path="Player"]

View file

@ -73,8 +73,11 @@ func _mouse_input_event(_camera: Camera3D, event: InputEvent, event_position: Ve
# original code
func change_menu(new_menu: Control):
$SubViewport/Menu.add(new_menu)
signal request_return
func change_menu(new_menu: Control, return_button: bool = true):
$SubViewport/Menu.add(new_menu, return_button)
$SubViewport/Menu.connect(\"disabled\", func(): request_return.emit())
"
[sub_resource type="QuadMesh" id="QuadMesh_gfsnp"]
@ -85,7 +88,6 @@ viewport_path = NodePath("SubViewport")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a5lkq"]
resource_local_to_scene = true
transparency = 1
shading_mode = 0
albedo_texture = SubResource("ViewportTexture_gfsnp")
[sub_resource type="BoxShape3D" id="BoxShape3D_gfsnp"]

View file

@ -3,7 +3,9 @@
[sub_resource type="GDScript" id="GDScript_18a3y"]
script/source = "extends MarginContainer
func add(node: Control):
signal disabled
func add(node: Control, return_button: bool):
var add_to := $VSplitContainer/MarginContainer/ColorRect
var children := add_to.get_children(true)
for child in children:
@ -16,8 +18,18 @@ func add(node: Control):
add_to.add_child(node)
$VSplitContainer/AnimationPlayer.play(\"split_offset\")
#await get_tree().create_timer(3.0).timeout
#$VSplitContainer/AnimationPlayer.play_backwards(\"split_offset\")
if return_button:
var button = Button.new()
button.text = \"Return\"
button.anchor_top = 1.0
button.anchor_bottom = 1.0
button.grow_vertical = Control.GROW_DIRECTION_BEGIN
button.connect(\"pressed\", disable)
node.add_child(button)
func disable():
$VSplitContainer/AnimationPlayer.play_backwards(\"split_offset\")
disabled.emit()
"
[sub_resource type="Animation" id="Animation_y8e4h"]