From ba3dbff06cacc7127d8ae536c6ecb2445cd6c5e3 Mon Sep 17 00:00:00 2001 From: david Date: Sun, 9 Feb 2025 11:06:56 +0100 Subject: [PATCH] 2.12 loading the next level --- general/utils.cs | 4 ++ scenes/characters/Player.cs | 9 +++-- scenes/levels/LandingPad.cs | 8 ++++ scenes/levels/level_1.tscn | 7 +++- scenes/levels/level_2.tscn | 70 ++++++++++++++++++++++++++++++++++ scenes/levels/level_3.tscn | 76 +++++++++++++++++++++++++++++++++++++ 6 files changed, 168 insertions(+), 6 deletions(-) create mode 100644 scenes/levels/LandingPad.cs create mode 100644 scenes/levels/level_2.tscn create mode 100644 scenes/levels/level_3.tscn diff --git a/general/utils.cs b/general/utils.cs index 000d8a1..e9fde20 100644 --- a/general/utils.cs +++ b/general/utils.cs @@ -4,4 +4,8 @@ static class DeferredCalls { public static void ReloadCurrentScene(this Node node) { node.GetTree().CallDeferred("reload_current_scene"); } + + public static void ChangeSceneToFile(this Node node, string nextLevel) { + node.GetTree().CallDeferred("change_scene_to_file", nextLevel); + } } \ No newline at end of file diff --git a/scenes/characters/Player.cs b/scenes/characters/Player.cs index 72385d2..c6d2255 100644 --- a/scenes/characters/Player.cs +++ b/scenes/characters/Player.cs @@ -32,9 +32,10 @@ public partial class Player : RigidBody3D private void OnPlayerCollision(Node body) { - if (body.GetGroups().Contains("Goal")) + if (body.GetGroups().Contains("Goal") && body is LandingPad) { - CompleteLevel(); + LandingPad landingPad = (LandingPad)body; + CompleteLevel(landingPad.nextLevel); } if (body.GetGroups().Contains("Hazard")) { @@ -47,7 +48,7 @@ public partial class Player : RigidBody3D DeferredCalls.ReloadCurrentScene(this); } - private void CompleteLevel(){ - GetTree().Quit(); + private void CompleteLevel(string nextLevel){ + DeferredCalls.ChangeSceneToFile(this, nextLevel); } } diff --git a/scenes/levels/LandingPad.cs b/scenes/levels/LandingPad.cs new file mode 100644 index 0000000..ce6708f --- /dev/null +++ b/scenes/levels/LandingPad.cs @@ -0,0 +1,8 @@ +using Godot; +using System; + +public partial class LandingPad : CsgBox3D +{ + [Export(PropertyHint.File, "*.tscn")] + public string nextLevel; +} diff --git a/scenes/levels/level_1.tscn b/scenes/levels/level_1.tscn index 0d07882..144dc47 100644 --- a/scenes/levels/level_1.tscn +++ b/scenes/levels/level_1.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=8 format=3 uid="uid://dfhg7e2uhkh5t"] +[gd_scene load_steps=9 format=3 uid="uid://dfhg7e2uhkh5t"] +[ext_resource type="Script" path="res://scenes/levels/LandingPad.cs" id="1_6hf30"] [ext_resource type="PackedScene" uid="uid://cuduv6fwqtocs" path="res://scenes/characters/player.tscn" id="1_8cxtr"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_51aor"] @@ -24,7 +25,7 @@ albedo_color = Color(0.269949, 0.472736, 0.828875, 1) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cjryw"] albedo_color = Color(0.270588, 0.662745, 0.321569, 1) -[node name="Level1" type="Node3D"] +[node name="Level" type="Node3D"] [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_mlv3m") @@ -50,6 +51,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0) use_collision = true size = Vector3(2, 0.4, 2) material = SubResource("StandardMaterial3D_cjryw") +script = ExtResource("1_6hf30") +nextLevel = "res://scenes/levels/level_2.tscn" [node name="Camera3D" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 0, 5, 10) diff --git a/scenes/levels/level_2.tscn b/scenes/levels/level_2.tscn new file mode 100644 index 0000000..c4fceb4 --- /dev/null +++ b/scenes/levels/level_2.tscn @@ -0,0 +1,70 @@ +[gd_scene load_steps=10 format=3 uid="uid://de65xxlydp5ee"] + +[ext_resource type="Script" path="res://scenes/levels/LandingPad.cs" id="1_xk07w"] +[ext_resource type="PackedScene" uid="uid://cuduv6fwqtocs" path="res://scenes/characters/player.tscn" id="2_1eb7h"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_51aor"] +sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) +ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) + +[sub_resource type="Sky" id="Sky_qesig"] +sky_material = SubResource("ProceduralSkyMaterial_51aor") + +[sub_resource type="Environment" id="Environment_mlv3m"] +background_mode = 2 +sky = SubResource("Sky_qesig") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pdpk6"] +albedo_color = Color(0.52, 0.203233, 0.078, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_isbkj"] +albedo_color = Color(1, 0.34902, 1, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5641g"] +albedo_color = Color(0.269949, 0.472736, 0.828875, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cjryw"] +albedo_color = Color(0.270588, 0.662745, 0.321569, 1) + +[node name="Level" type="Node3D"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_mlv3m") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75, -0.433013, 0, 0, 0) +shadow_enabled = true + +[node name="Floor" type="CSGBox3D" parent="." groups=["Hazard"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4, 0) +use_collision = true +size = Vector3(30, 8, 5) +material = SubResource("StandardMaterial3D_pdpk6") + +[node name="Obstacle" type="CSGBox3D" parent="." groups=["Hazard"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) +use_collision = true +size = Vector3(3, 2, 3) +material = SubResource("StandardMaterial3D_isbkj") + +[node name="LaunchPad" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0) +use_collision = true +size = Vector3(2, 0.4, 2) +material = SubResource("StandardMaterial3D_5641g") + +[node name="LandingPad" type="CSGBox3D" parent="." groups=["Goal"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0) +use_collision = true +size = Vector3(2, 0.4, 2) +material = SubResource("StandardMaterial3D_cjryw") +script = ExtResource("1_xk07w") +nextLevel = "res://scenes/levels/level_3.tscn" + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 0, 5, 10) + +[node name="Player" parent="." instance=ExtResource("2_1eb7h")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 1.22214, 0) diff --git a/scenes/levels/level_3.tscn b/scenes/levels/level_3.tscn new file mode 100644 index 0000000..9532deb --- /dev/null +++ b/scenes/levels/level_3.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=10 format=3 uid="uid://d28am3qcuyvgl"] + +[ext_resource type="Script" path="res://scenes/levels/LandingPad.cs" id="1_2xhoj"] +[ext_resource type="PackedScene" uid="uid://cuduv6fwqtocs" path="res://scenes/characters/player.tscn" id="2_nqrhm"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_51aor"] +sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) +ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) + +[sub_resource type="Sky" id="Sky_qesig"] +sky_material = SubResource("ProceduralSkyMaterial_51aor") + +[sub_resource type="Environment" id="Environment_mlv3m"] +background_mode = 2 +sky = SubResource("Sky_qesig") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pdpk6"] +albedo_color = Color(0.52, 0.203233, 0.078, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_isbkj"] +albedo_color = Color(1, 0.34902, 1, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5641g"] +albedo_color = Color(0.269949, 0.472736, 0.828875, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cjryw"] +albedo_color = Color(0.270588, 0.662745, 0.321569, 1) + +[node name="Level" type="Node3D"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_mlv3m") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75, -0.433013, 0, 0, 0) +shadow_enabled = true + +[node name="Floor" type="CSGBox3D" parent="." groups=["Hazard"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -4, 0) +use_collision = true +size = Vector3(30, 8, 5) +material = SubResource("StandardMaterial3D_pdpk6") + +[node name="Obstacle" type="CSGBox3D" parent="." groups=["Hazard"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) +use_collision = true +size = Vector3(10, 2, 3) +material = SubResource("StandardMaterial3D_isbkj") + +[node name="Obstacle2" type="CSGBox3D" parent="." groups=["Hazard"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9, 0) +use_collision = true +size = Vector3(10, 2, 3) +material = SubResource("StandardMaterial3D_isbkj") + +[node name="LaunchPad" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0) +use_collision = true +size = Vector3(2, 0.4, 2) +material = SubResource("StandardMaterial3D_5641g") + +[node name="LandingPad" type="CSGBox3D" parent="." groups=["Goal"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0) +use_collision = true +size = Vector3(2, 0.4, 2) +material = SubResource("StandardMaterial3D_cjryw") +script = ExtResource("1_2xhoj") +nextLevel = "res://scenes/levels/level_1.tscn" + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 0, 5, 10) + +[node name="Player" parent="." instance=ExtResource("2_nqrhm")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 1.22214, 0)