78 lines
1.4 KiB
C#
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;
|
||
|
}
|
||
|
}
|