r2mods/ilspy_dump/ror2_csproj/EntityStates.GameOver/RebirthEndingFadeToBlack.cs

76 lines
1.5 KiB
C#

using RoR2;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
namespace EntityStates.GameOver;
public class RebirthEndingFadeToBlack : BaseGameOverControllerState
{
[SerializeField]
public float delay;
[SerializeField]
public float duration;
[SerializeField]
public GameObject screenPrefab;
private Run.TimeStamp startTime;
private Image image;
private GameObject screenInstance;
public override void OnEnter()
{
base.OnEnter();
if (NetworkServer.active)
{
startTime = Run.TimeStamp.now + delay;
}
screenInstance = Object.Instantiate(screenPrefab, RoR2Application.instance.mainCanvas.transform);
image = screenInstance.GetComponentInChildren<Image>();
image.raycastTarget = false;
UpdateImageAlpha(0f);
}
public override void OnExit()
{
FadeToBlackManager.ForceFullBlack();
EntityState.Destroy(screenInstance);
screenInstance = null;
image = null;
base.OnExit();
}
public override void OnSerialize(NetworkWriter writer)
{
base.OnSerialize(writer);
writer.Write(startTime);
}
public override void OnDeserialize(NetworkReader reader)
{
base.OnDeserialize(reader);
startTime = reader.ReadTimeStamp();
}
public override void FixedUpdate()
{
base.FixedUpdate();
UpdateImageAlpha(Mathf.Max(0f, Mathf.Min(1f, startTime.timeSince / duration)));
if (NetworkServer.active && (startTime + duration).hasPassed)
{
outer.SetNextStateToMain();
}
}
private void UpdateImageAlpha(float finalAlpha)
{
Color color = image.color;
color.a = finalAlpha;
image.color = color;
}
}