r2mods/ilspy_dump/ror2_csproj/RoR2/IntroCutsceneController.cs

78 lines
1.4 KiB
C#

using System;
using RoR2.ConVar;
using UnityEngine;
namespace RoR2;
public class IntroCutsceneController : MonoBehaviour
{
private static BoolConVar cvIntroSkip = new BoolConVar("intro_skip", ConVarFlags.Archive, "0", "Whether or not to skip the opening cutscene.");
private static bool _shouldSkip = false;
private static bool skipRequested = false;
public static bool shouldSkip
{
get
{
if (!_shouldSkip)
{
return cvIntroSkip.value;
}
return true;
}
set
{
if (value != _shouldSkip)
{
_shouldSkip = value;
if (_shouldSkip)
{
IntroCutsceneController.onShouldSkipEnabled?.Invoke();
}
}
}
}
private static event Action onShouldSkipEnabled;
public void Start()
{
RoR2Application.instance.PushThreadPriority(ThreadPriority.Normal);
onShouldSkipEnabled += delegate
{
if (RoR2Application.loadFinished)
{
Finish();
}
else
{
RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(Finish));
}
};
}
public void Finish()
{
RoR2Application.instance.PopThreadPriority();
if (!skipRequested)
{
if (RoR2Application.loadFinished)
{
TransitionToTitle();
}
else
{
RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(TransitionToTitle));
}
}
}
public void TransitionToTitle()
{
Console.instance.SubmitCmd(null, "set_scene title");
skipRequested = true;
}
}