Files
GameJam2023/Scripts/Main.cs
2023-09-04 22:09:56 -07:00

64 lines
2.0 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 int NumberOfPlayers = 0;
public void LoadLevel(int indexToLoad, int numberOfPlayers)
{
var sceneToLoad = Levels.ElementAt(indexToLoad);
CallDeferred(nameof(DeferredGoToScene), sceneToLoad);
NumberOfPlayers = numberOfPlayers;
var gameManager = GameManager.Instantiate();
AddChild(gameManager);
var gameManagerInstance = (GameManager)gameManager;
gameManagerInstance.OnHandleCharacterSelectUI(gameManagerInstance.Players.ElementAt(0));
if (numberOfPlayers == 2)
gameManagerInstance.OnHandleCharacterSelectUI(gameManagerInstance.Players.ElementAt(1));
var bgmPlayer = GetTree().Root.GetNode<BGMPlayer>("BgmPlayer");
bgmPlayer.ProcessMode = ProcessModeEnum.Always;
bgmPlayer.SetBGMFromFilepath("Audio/BGM/level theme.wav");
bgmPlayer.PlayBGM();
GetTree().Paused = true;
}
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)
{
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
var newScene = nextScene.Instantiate();
GetTree().Root.AddChild(newScene);
GetTree().Paused = true;
}
private void DeferredGoToScene(PackedScene sceneToAdd, PackedScene sceneToRemove)
{
GetTree().GetFirstNodeInGroup("Level").QueueFree();
var nextScene = GD.Load<PackedScene>(sceneToAdd.ResourcePath);
var newScene = nextScene.Instantiate();
GetTree().Root.AddChild(newScene);
GetTree().Paused = true;
}
}