47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
using Godot;
|
|
using Godot.Collections;
|
|
using System.Linq;
|
|
|
|
public partial class Main : Node
|
|
{
|
|
[Export]
|
|
public Array<PackedScene> Levels;
|
|
[Export]
|
|
public PackedScene GameManager;
|
|
|
|
public void LoadLevel(int indexToLoad)
|
|
{
|
|
var sceneToLoad = Levels.ElementAt(indexToLoad);
|
|
CallDeferred(nameof(DeferredGoToScene), sceneToLoad);
|
|
var gameManager = GameManager.Instantiate();
|
|
AddChild(gameManager);
|
|
}
|
|
|
|
public void LoadNextLevel(int currentSceneIndex)
|
|
{
|
|
if (currentSceneIndex < Levels.Count())
|
|
{
|
|
var currentScene = Levels.ToList().ElementAt(currentSceneIndex);
|
|
var nextScene = currentSceneIndex + 1;
|
|
CallDeferred(nameof(DeferredGoToScene), Levels.ElementAt(nextScene), currentScene);
|
|
}
|
|
}
|
|
|
|
private void DeferredGoToScene(PackedScene sceneToAdd)
|
|
{
|
|
GD.Print(sceneToAdd.ResourcePath);
|
|
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
|
|
var newScene = nextScene.Instantiate();
|
|
GetTree().Root.AddChild(newScene);
|
|
}
|
|
|
|
private void DeferredGoToScene(PackedScene sceneToAdd, PackedScene sceneToRemove)
|
|
{
|
|
GD.Print(sceneToAdd.ResourcePath);
|
|
GetTree().GetFirstNodeInGroup("Level").QueueFree();
|
|
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
|
|
var newScene = nextScene.Instantiate();
|
|
GetTree().Root.AddChild(newScene);
|
|
}
|
|
}
|