state("Moldbreaker")
{}

state("Moldbreaker Rise of the Loaf")
{}

startup
{
    Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity");
    vars.Helper.GameName = "Moldbreaker: Rise of the Loaf";
    vars.Helper.LoadSceneManager = true;
    vars.initial = false;
}

init
{
    vars.completedLevels = new List<string>();
    old.activeScene = null;
    old.loadingScene = null;
}

update
{
    current.activeScene = vars.Helper.Scenes.Active.Name ?? old.activeScene;
    current.loadingScene = vars.Helper.Scenes.Loaded[0].Name;
}

start
{
    return old.activeScene == "Menu" && current.activeScene == "Loading";
}

split
{
    if (old.loadingScene == "PARKOUR_1" && current.loadingScene == "ENTRANCE_1" && !vars.completedLevels.Contains("PARKOUR_1"))
    {
        vars.completedLevels.Add("PARKOUR_1");
        return true;
    }

    if (old.loadingScene == "PARKOUR_2" && current.loadingScene == "ENTRANCE_1" && !vars.completedLevels.Contains("PARKOUR_2"))
    {
        vars.completedLevels.Add("PARKOUR_2");
        return true;
    }

    if (current.activeScene == "CREDITS" && !vars.completedLevels.Contains("PARKOUR_3")) 
    {
        vars.completedLevels.Add("PARKOUR_3");
        return true;
    }
}

isLoading
{
    return current.activeScene == "Loading";
}

onReset
{
    vars.completedLevels = new List<string>();
}