state("The WereCleaner")
{
}

startup
{
    Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity");
    vars.Helper.GameName = "The WereCleaner";
    vars.Helper.LoadSceneManager = true;
    vars.Helper.AlertLoadless();

    settings.Add("TWC", true, "The WereCleaner");
        settings.Add("ANY", true, "Split after Each Completed Level", "TWC");
}

init
{
    vars.Helper.TryLoad = (Func<dynamic, bool>)(mono =>
    {
        vars.Helper["LevelStart"] = mono.Make<bool>("GameManager", "instance", "clockInScript", "levelDoorController", "isInteractable");
        vars.Helper["LevelEnd"] = mono.Make<bool>("GameManager", "instance", "levelEndStarted");
        vars.Helper["LevelEndFade"] = mono.Make<bool>("GameManager", "instance", "screenTransitions", "isTransitioning");
        
        return true;
    });
}

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

start
{
    return !current.LevelStart && old.LevelStart && (current.loadingScene != "MainMenu" || current.loadingScene != "LevelSelect" || current.loadingScene != "LevelLoader");
}

split
{
    if(current.LevelEnd && current.LevelEnd != old.LevelEnd)
    {
        return settings["ANY"];
    };
}

isLoading
{
    return current.loadingScene == "LevelLoader" || current.LevelEndFade;
}