2025-04-27 21:30:03 +02:00
|
|
|
[gd_scene load_steps=16 format=3 uid="uid://ikeidrgprk8k"]
|
2025-03-27 16:00:39 +01:00
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
[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"]
|
2025-03-27 16:00:39 +01:00
|
|
|
|
|
|
|
[sub_resource type="GDScript" id="GDScript_bt14i"]
|
|
|
|
script/source = "extends Node3D
|
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
signal request_play_level
|
2025-03-27 16:00:39 +01:00
|
|
|
|
2025-04-27 21:30:03 +02:00
|
|
|
func _enter_tree() -> void:
|
|
|
|
$Camera3D/AnimationPlayer.play_backwards(\"camera_pan\")
|
|
|
|
PhysicsServer3D.area_set_param(
|
|
|
|
get_viewport().find_world_3d().space,
|
|
|
|
PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR,
|
|
|
|
Vector3.DOWN
|
|
|
|
)
|
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
# Display on Panel 1
|
|
|
|
const res_initial_menu = preload(\"res://menus/main/initial_menu.tscn\")
|
2025-03-27 16:00:39 +01:00
|
|
|
func _ready() -> void:
|
2025-03-30 15:40:22 +02:00
|
|
|
$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))
|
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
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)
|
2025-03-27 16:00:39 +01:00
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
# Display on Panel 2
|
|
|
|
const res_settings_menu = preload(\"res://menus/main/settings_menu.tscn\")
|
|
|
|
func settings() -> void:
|
|
|
|
var settings_menu := res_settings_menu.instantiate()
|
|
|
|
$Menus/Panel2.change_menu(settings_menu)
|
2025-04-16 00:16:39 +02:00
|
|
|
rotate_cube_to(90)
|
2025-03-27 16:00:39 +01:00
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
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)
|
2025-03-30 15:40:22 +02:00
|
|
|
rotate_cube_to(90)
|
2025-03-27 16:00:39 +01:00
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
# 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()
|
2025-04-27 21:30:03 +02:00
|
|
|
level_selection_menu.connect(\"request_play_level\", func(level: Level, scene: PackedScene):
|
|
|
|
$Camera3D/AnimationPlayer.play(\"camera_pan\")
|
|
|
|
await get_tree().create_timer(1.5).timeout
|
|
|
|
request_play_level.emit(level, scene)
|
|
|
|
)
|
2025-04-24 14:54:54 +02:00
|
|
|
$Menus/Panel3.change_menu(level_selection_menu)
|
|
|
|
rotate_cube_to(180)
|
|
|
|
|
|
|
|
# cube
|
2025-03-30 15:40:22 +02:00
|
|
|
func rotate_cube_to(degrees: int) -> void:
|
2025-03-27 16:00:39 +01:00
|
|
|
if $Menus/AnimationPlayer.is_playing():
|
|
|
|
return
|
|
|
|
|
2025-04-27 21:30:03 +02:00
|
|
|
var cube_animation: Animation = $Menus/AnimationPlayer.get_animation(\"rotate\")
|
|
|
|
cube_animation.track_set_key_value(0, 0, $Menus.rotation_degrees)
|
|
|
|
cube_animation.track_set_key_value(0, 1, Vector3(0, -degrees, 0))
|
2025-03-27 16:00:39 +01:00
|
|
|
$Menus/AnimationPlayer.play(\"rotate\")
|
2025-04-27 21:30:03 +02:00
|
|
|
|
|
|
|
if $AnimationPlayer.is_playing():
|
|
|
|
await get_tree().create_timer($AnimationPlayer.current_animation_length).timeout
|
|
|
|
var sky_animation: Animation = $AnimationPlayer.get_animation(\"sky_brightness\")
|
|
|
|
sky_animation.track_set_key_value(0, 0, $WorldEnvironment.environment.sky.sky_material.energy_multiplier)
|
|
|
|
sky_animation.track_set_key_value(0, 1, max(90, degrees * 2) / 90)
|
|
|
|
$AnimationPlayer.play(\"sky_brightness\")
|
2025-03-27 16:00:39 +01:00
|
|
|
"
|
|
|
|
|
|
|
|
[sub_resource type="Animation" id="Animation_0jxef"]
|
|
|
|
length = 0.001
|
|
|
|
tracks/0/type = "value"
|
|
|
|
tracks/0/imported = false
|
|
|
|
tracks/0/enabled = true
|
|
|
|
tracks/0/path = NodePath(".:rotation_degrees")
|
|
|
|
tracks/0/interp = 1
|
|
|
|
tracks/0/loop_wrap = true
|
|
|
|
tracks/0/keys = {
|
|
|
|
"times": PackedFloat32Array(0),
|
|
|
|
"transitions": PackedFloat32Array(1),
|
|
|
|
"update": 0,
|
|
|
|
"values": [Vector3(0, 0, 0)]
|
|
|
|
}
|
|
|
|
|
|
|
|
[sub_resource type="Animation" id="Animation_bt14i"]
|
|
|
|
resource_name = "rotate"
|
|
|
|
length = 0.3
|
|
|
|
step = 0.3
|
|
|
|
tracks/0/type = "value"
|
|
|
|
tracks/0/imported = false
|
|
|
|
tracks/0/enabled = true
|
|
|
|
tracks/0/path = NodePath(".:rotation_degrees")
|
|
|
|
tracks/0/interp = 2
|
|
|
|
tracks/0/loop_wrap = true
|
|
|
|
tracks/0/keys = {
|
|
|
|
"times": PackedFloat32Array(0, 0.3),
|
|
|
|
"transitions": PackedFloat32Array(1, 1),
|
|
|
|
"update": 0,
|
|
|
|
"values": [Vector3(0, 0, 0), Vector3(0, 0, 0)]
|
|
|
|
}
|
|
|
|
|
|
|
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_3bwb0"]
|
|
|
|
_data = {
|
|
|
|
&"RESET": SubResource("Animation_0jxef"),
|
|
|
|
&"rotate": SubResource("Animation_bt14i")
|
|
|
|
}
|
|
|
|
|
2025-04-27 21:30:03 +02:00
|
|
|
[sub_resource type="Animation" id="Animation_2rexg"]
|
|
|
|
length = 0.001
|
|
|
|
tracks/0/type = "value"
|
|
|
|
tracks/0/imported = false
|
|
|
|
tracks/0/enabled = true
|
|
|
|
tracks/0/path = NodePath("WorldEnvironment:environment:sky:sky_material:energy_multiplier")
|
|
|
|
tracks/0/interp = 1
|
|
|
|
tracks/0/loop_wrap = true
|
|
|
|
tracks/0/keys = {
|
|
|
|
"times": PackedFloat32Array(0),
|
|
|
|
"transitions": PackedFloat32Array(1),
|
|
|
|
"update": 0,
|
|
|
|
"values": [1.0]
|
|
|
|
}
|
|
|
|
tracks/1/type = "value"
|
|
|
|
tracks/1/imported = false
|
|
|
|
tracks/1/enabled = true
|
|
|
|
tracks/1/path = NodePath("Camera3D:fov")
|
|
|
|
tracks/1/interp = 1
|
|
|
|
tracks/1/loop_wrap = true
|
|
|
|
tracks/1/keys = {
|
|
|
|
"times": PackedFloat32Array(0),
|
|
|
|
"transitions": PackedFloat32Array(1),
|
|
|
|
"update": 0,
|
|
|
|
"values": [40.0]
|
|
|
|
}
|
|
|
|
tracks/2/type = "value"
|
|
|
|
tracks/2/imported = false
|
|
|
|
tracks/2/enabled = true
|
|
|
|
tracks/2/path = NodePath("Camera3D:position")
|
|
|
|
tracks/2/interp = 1
|
|
|
|
tracks/2/loop_wrap = true
|
|
|
|
tracks/2/keys = {
|
|
|
|
"times": PackedFloat32Array(0),
|
|
|
|
"transitions": PackedFloat32Array(1),
|
|
|
|
"update": 0,
|
|
|
|
"values": [Vector3(0, 0, 2.5)]
|
|
|
|
}
|
|
|
|
|
|
|
|
[sub_resource type="Animation" id="Animation_jinmx"]
|
|
|
|
resource_name = "camera_pan"
|
|
|
|
length = 1.5
|
|
|
|
step = 0.1
|
|
|
|
tracks/0/type = "value"
|
|
|
|
tracks/0/imported = false
|
|
|
|
tracks/0/enabled = true
|
|
|
|
tracks/0/path = NodePath("Camera3D:fov")
|
|
|
|
tracks/0/interp = 2
|
|
|
|
tracks/0/loop_wrap = true
|
|
|
|
tracks/0/keys = {
|
|
|
|
"times": PackedFloat32Array(0, 1.5),
|
|
|
|
"transitions": PackedFloat32Array(1, 1),
|
|
|
|
"update": 0,
|
|
|
|
"values": [40.0, 75.0]
|
|
|
|
}
|
|
|
|
tracks/1/type = "value"
|
|
|
|
tracks/1/imported = false
|
|
|
|
tracks/1/enabled = true
|
|
|
|
tracks/1/path = NodePath("Camera3D:position")
|
|
|
|
tracks/1/interp = 2
|
|
|
|
tracks/1/loop_wrap = true
|
|
|
|
tracks/1/keys = {
|
|
|
|
"times": PackedFloat32Array(0, 1.5),
|
|
|
|
"transitions": PackedFloat32Array(1, 1),
|
|
|
|
"update": 0,
|
|
|
|
"values": [Vector3(0, 0, 2.5), Vector3(0, 0, 15)]
|
|
|
|
}
|
|
|
|
|
|
|
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_jinmx"]
|
|
|
|
_data = {
|
|
|
|
&"RESET": SubResource("Animation_2rexg"),
|
|
|
|
&"camera_pan": SubResource("Animation_jinmx")
|
|
|
|
}
|
|
|
|
|
2025-03-30 15:40:22 +02:00
|
|
|
[sub_resource type="PhysicalSkyMaterial" id="PhysicalSkyMaterial_bt14i"]
|
2025-04-27 21:30:03 +02:00
|
|
|
ground_color = Color(1, 0.484315, 0.700558, 1)
|
2025-03-30 15:40:22 +02:00
|
|
|
|
|
|
|
[sub_resource type="Sky" id="Sky_0jxef"]
|
|
|
|
sky_material = SubResource("PhysicalSkyMaterial_bt14i")
|
|
|
|
|
2025-03-27 16:00:39 +01:00
|
|
|
[sub_resource type="Environment" id="Environment_qfa5o"]
|
2025-03-30 15:40:22 +02:00
|
|
|
background_mode = 2
|
2025-03-27 16:00:39 +01:00
|
|
|
background_color = Color(0.804743, 0.804743, 0.804743, 1)
|
2025-03-30 15:40:22 +02:00
|
|
|
sky = SubResource("Sky_0jxef")
|
|
|
|
ambient_light_source = 3
|
|
|
|
ambient_light_color = Color(0.986752, 0.986752, 0.986752, 1)
|
|
|
|
reflected_light_source = 2
|
2025-03-27 16:00:39 +01:00
|
|
|
|
2025-04-29 21:18:04 +02:00
|
|
|
[sub_resource type="Animation" id="Animation_j2kye"]
|
|
|
|
length = 0.001
|
2025-04-27 21:30:03 +02:00
|
|
|
tracks/0/type = "value"
|
|
|
|
tracks/0/imported = false
|
|
|
|
tracks/0/enabled = true
|
|
|
|
tracks/0/path = NodePath("../../WorldEnvironment:environment:sky:sky_material:energy_multiplier")
|
|
|
|
tracks/0/interp = 1
|
|
|
|
tracks/0/loop_wrap = true
|
|
|
|
tracks/0/keys = {
|
2025-04-29 21:18:04 +02:00
|
|
|
"times": PackedFloat32Array(0),
|
|
|
|
"transitions": PackedFloat32Array(1),
|
2025-04-27 21:30:03 +02:00
|
|
|
"update": 0,
|
2025-04-29 21:18:04 +02:00
|
|
|
"values": [1.0]
|
2025-04-27 21:30:03 +02:00
|
|
|
}
|
|
|
|
|
2025-04-29 21:18:04 +02:00
|
|
|
[sub_resource type="Animation" id="Animation_gma2u"]
|
|
|
|
resource_name = "sky_brightness"
|
|
|
|
length = 0.3
|
|
|
|
step = 0.1
|
2025-04-27 21:30:03 +02:00
|
|
|
tracks/0/type = "value"
|
|
|
|
tracks/0/imported = false
|
|
|
|
tracks/0/enabled = true
|
|
|
|
tracks/0/path = NodePath("../../WorldEnvironment:environment:sky:sky_material:energy_multiplier")
|
|
|
|
tracks/0/interp = 1
|
|
|
|
tracks/0/loop_wrap = true
|
|
|
|
tracks/0/keys = {
|
2025-04-29 21:18:04 +02:00
|
|
|
"times": PackedFloat32Array(0, 0.3),
|
|
|
|
"transitions": PackedFloat32Array(1, 1),
|
2025-04-27 21:30:03 +02:00
|
|
|
"update": 0,
|
2025-04-29 21:18:04 +02:00
|
|
|
"values": [1.0, 1.0]
|
2025-04-27 21:30:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wruj6"]
|
|
|
|
_data = {
|
|
|
|
&"RESET": SubResource("Animation_j2kye"),
|
|
|
|
&"sky_brightness": SubResource("Animation_gma2u")
|
|
|
|
}
|
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
[node name="MainMenu" type="Node3D"]
|
2025-03-27 16:00:39 +01:00
|
|
|
process_mode = 3
|
|
|
|
script = SubResource("GDScript_bt14i")
|
|
|
|
|
|
|
|
[node name="Menus" type="CSGBox3D" parent="."]
|
2025-03-30 15:40:22 +02:00
|
|
|
use_collision = true
|
2025-03-27 16:00:39 +01:00
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
[node name="Panel1" parent="Menus" instance=ExtResource("1_5vmsf")]
|
2025-03-27 16:00:39 +01:00
|
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.501)
|
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
[node name="Panel2" parent="Menus" instance=ExtResource("1_5vmsf")]
|
2025-03-27 16:00:39 +01:00
|
|
|
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.501, 0, 0)
|
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
[node name="Panel3" parent="Menus" instance=ExtResource("1_5vmsf")]
|
2025-03-27 16:00:39 +01:00
|
|
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -0.501)
|
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
[node name="Panel4" parent="Menus" instance=ExtResource("1_5vmsf")]
|
2025-03-27 16:00:39 +01:00
|
|
|
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"]
|
|
|
|
libraries = {
|
|
|
|
&"": SubResource("AnimationLibrary_3bwb0")
|
|
|
|
}
|
|
|
|
|
|
|
|
[node name="Camera3D" type="Camera3D" parent="."]
|
2025-03-30 15:40:22 +02:00
|
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2.5)
|
|
|
|
current = true
|
|
|
|
fov = 40.0
|
2025-03-27 16:00:39 +01:00
|
|
|
|
2025-04-27 21:30:03 +02:00
|
|
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="Camera3D"]
|
|
|
|
root_node = NodePath("../..")
|
|
|
|
libraries = {
|
|
|
|
&"": SubResource("AnimationLibrary_jinmx")
|
|
|
|
}
|
|
|
|
|
2025-03-27 16:00:39 +01:00
|
|
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
|
|
|
environment = SubResource("Environment_qfa5o")
|
2025-03-30 15:40:22 +02:00
|
|
|
|
|
|
|
[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)
|
|
|
|
|
2025-04-24 14:54:54 +02:00
|
|
|
[node name="Player" parent="." instance=ExtResource("2_2rexg")]
|
2025-04-27 21:30:03 +02:00
|
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0)
|
2025-03-30 15:40:22 +02:00
|
|
|
|
|
|
|
[node name="Camera" parent="Player" index="0"]
|
|
|
|
visible = false
|
|
|
|
current = false
|
|
|
|
|
|
|
|
[node name="GPUParticles3D" parent="Player/Sphere" index="2"]
|
|
|
|
visible = false
|
|
|
|
|
2025-04-27 21:30:03 +02:00
|
|
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
|
|
|
root_node = NodePath("../Camera3D/AnimationPlayer")
|
|
|
|
libraries = {
|
|
|
|
&"": SubResource("AnimationLibrary_wruj6")
|
|
|
|
}
|
|
|
|
|
2025-03-30 15:40:22 +02:00
|
|
|
[editable path="Player"]
|