using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MyBT;
using UnityEngine.SceneManagement;

#if UNITY_EDITOR
using UnityEditor;
[CustomEditor(typeof(NamedLoadScene))]
public class NamedLoadSceneInspector : ComponentHandlerInspector
{
}
#endif

[System.Serializable]
public class NamedLoadScene : ComponentHandler
{
    public override string TypeLabel()
    {
        return "LoadScene";
    }

    public override string ContentLabel()
    {
        UpdateComponent();
        return sceneName;
    }

    public override void UpdateComponent()
    {
        base.UpdateComponent();
    }

    public string sceneName = "1.0-SBB";
    public LoadSceneMode loadSceneMode = LoadSceneMode.Single;

    IEnumerator LoadYourAsyncScene(string sceneName, LoadSceneMode loadSceneMode)
    {
        AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName, loadSceneMode);

        // Wait until the asynchronous scene fully loads
        while (!asyncLoad.isDone)
        {
            yield return null;
        }
    }

    public override void Run(NodeState nodeState)
    {
        switch (nodeState)
        {
            case NodeState.FirstRun:
                StartCoroutine(LoadYourAsyncScene(sceneName, loadSceneMode));
                break;
            case NodeState.Running:
                break;
            case NodeState.Aborting:
                break;
        }
    }
}