58 lines
1.3 KiB
C#
58 lines
1.3 KiB
C#
using Godot;
|
|
using Newlon.Components.Level;
|
|
|
|
namespace Newlon;
|
|
|
|
//
|
|
// Class that gives access to level data, pools and etc.
|
|
//
|
|
|
|
public partial class LevelController : Node
|
|
{
|
|
public static LevelController Instance { get; private set; }
|
|
|
|
private bool _isLevelRunning = false;
|
|
|
|
public override void _EnterTree()
|
|
{
|
|
Instance = this;
|
|
}
|
|
|
|
public override void _ExitTree()
|
|
{
|
|
Instance = null;
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="levelTileset">Scene that will be loaded</param>
|
|
/// <param name="levelResource">Execution of level</param>
|
|
public void StartLevel(PackedScene levelTileset, AdventureLevelResource levelResource)
|
|
{
|
|
if (_isLevelRunning)
|
|
return;
|
|
|
|
RuntimeLevelData.LevelResource = levelResource;
|
|
|
|
GetTree().ChangeSceneToPacked(levelTileset);
|
|
|
|
|
|
_isLevelRunning = true;
|
|
}
|
|
public void RestartLevel()
|
|
{
|
|
if (_isLevelRunning == false)
|
|
return;
|
|
var resource = RuntimeLevelData.LevelResource;
|
|
GetTree().ReloadCurrentScene();
|
|
RuntimeLevelData.LevelResource = resource;
|
|
}
|
|
public void EndLevel()
|
|
{
|
|
if (_isLevelRunning == false)
|
|
return;
|
|
RuntimeLevelData.LevelResource = null;
|
|
|
|
_isLevelRunning = false;
|
|
}
|
|
}
|