using Godot; // // 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; // Frequently accessed level elements public RuntimeLevelData LevelData { get; set; } public PoolContainer Pools { get; set; } public PlantField PlantField { get; set; } public override void _EnterTree() { Instance = this; } public override void _ExitTree() { Instance = null; } /// /// /// /// Scene that will be loaded /// Optional script that will be attached to loaded scene public void StartLevel(PackedScene levelTileset, Script levelScript = null) { if (_isLevelRunning) return; GetTree().ChangeSceneToPacked(levelTileset); if (levelScript != null) GetTree().CurrentScene.SetScript(levelScript); _isLevelRunning = true; } public void EndLevel() { if (_isLevelRunning == false) return; LevelData = null; Pools = null; PlantField = null; _isLevelRunning = false; } }