using Babushka.scripts.CSharp.Common.Savegame; using Babushka.scripts.CSharp.Common.SceneManagement; using Godot; namespace Babushka.scripts.CSharp.Common; public partial class SceneTransition : Node { [Export] private string[] _sceneNamesToLoad; [Export] private int _sceneIndex; [Export] private bool _unloadSelf = true; public void LoadScene() { LoadSceneAtIndex(0); } public void LoadSceneAtIndex(int index) { SavegameService.Save(); string sceneName = _sceneNamesToLoad[index]; SceneTransitionThreaded.Instance.ChangeSceneToFileThreaded(sceneName); UnloadAfterDelay(); } private async void UnloadAfterDelay() { await ToSignal(GetTree().CreateTimer(1.0f), "timeout"); // 1.0f seconds if (_unloadSelf) { QueueFree(); } } public void Quit() { SettingsSaveController.Instance.SaveSettings(); GetTree().Quit(); } }