summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/Minigame.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/Minigame.cs')
-rw-r--r--Client/Assembly-CSharp/Minigame.cs166
1 files changed, 166 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/Minigame.cs b/Client/Assembly-CSharp/Minigame.cs
new file mode 100644
index 0000000..0897e13
--- /dev/null
+++ b/Client/Assembly-CSharp/Minigame.cs
@@ -0,0 +1,166 @@
+using System;
+using System.Collections;
+using UnityEngine;
+
+public abstract class Minigame : MonoBehaviour
+{
+ public global::Console Console { get; set; }
+
+ protected int ConsoleId
+ {
+ get
+ {
+ if (!this.Console)
+ {
+ return 0;
+ }
+ return this.Console.ConsoleId;
+ }
+ }
+
+ public static Minigame Instance;
+
+ public const float Depth = -50f;
+
+ public TransitionType TransType;
+
+ protected PlayerTask MyTask;
+
+ protected NormalPlayerTask MyNormTask;
+
+ protected Minigame.CloseState amClosing;
+
+ public AudioClip OpenSound;
+
+ public AudioClip CloseSound;
+
+ protected enum CloseState
+ {
+ None,
+ Waiting,
+ Closing
+ }
+
+ public virtual void Begin(PlayerTask task)
+ {
+ Minigame.Instance = this;
+ this.MyTask = task;
+ this.MyNormTask = (task as NormalPlayerTask);
+ if (PlayerControl.LocalPlayer)
+ {
+ if (MapBehaviour.Instance)
+ {
+ MapBehaviour.Instance.Close();
+ }
+ PlayerControl.LocalPlayer.NetTransform.Halt();
+ }
+ base.StartCoroutine(this.CoAnimateOpen());
+ }
+
+ protected IEnumerator CoStartClose(float duration = 0.75f)
+ {
+ if (this.amClosing != Minigame.CloseState.None)
+ {
+ yield break;
+ }
+ this.amClosing = Minigame.CloseState.Waiting;
+ yield return Effects.Wait(duration);
+ this.Close();
+ yield break;
+ }
+
+ [Obsolete("Don't use, I just don't want to reselect the close button event handlers", true)]
+ public void Close(bool allowMovement)
+ {
+ this.Close();
+ }
+
+ public virtual void Close()
+ {
+ if (this.amClosing != Minigame.CloseState.Closing)
+ {
+ if (this.CloseSound && Constants.ShouldPlaySfx())
+ {
+ SoundManager.Instance.PlaySound(this.CloseSound, false, 1f);
+ }
+ this.amClosing = Minigame.CloseState.Closing;
+ base.StartCoroutine(this.CoDestroySelf());
+ return;
+ }
+ UnityEngine.Object.Destroy(base.gameObject);
+ }
+
+ protected virtual IEnumerator CoAnimateOpen()
+ {
+ if (this.OpenSound && Constants.ShouldPlaySfx())
+ {
+ SoundManager.Instance.PlaySound(this.OpenSound, false, 1f);
+ }
+ TransitionType transType = this.TransType;
+ if (transType != TransitionType.SlideBottom)
+ {
+ if (transType == TransitionType.Alpha)
+ {
+ SpriteRenderer[] rends = base.GetComponentsInChildren<SpriteRenderer>();
+ for (float timer = 0f; timer < 0.25f; timer += Time.deltaTime)
+ {
+ float t = timer / 0.25f;
+ for (int i = 0; i < rends.Length; i++)
+ {
+ rends[i].color = Color.Lerp(Palette.ClearWhite, Color.white, t);
+ }
+ yield return null;
+ }
+ for (int j = 0; j < rends.Length; j++)
+ {
+ rends[j].color = Color.white;
+ }
+ rends = null;
+ }
+ }
+ else
+ {
+ for (float timer = 0f; timer < 0.25f; timer += Time.deltaTime)
+ {
+ float t2 = timer / 0.25f;
+ base.transform.localPosition = new Vector3(0f, Mathf.SmoothStep(-8f, 0f, t2), -50f);
+ yield return null;
+ }
+ base.transform.localPosition = new Vector3(0f, 0f, -50f);
+ }
+ yield break;
+ }
+
+ protected virtual IEnumerator CoDestroySelf()
+ {
+ TransitionType transType = this.TransType;
+ if (transType != TransitionType.SlideBottom)
+ {
+ if (transType == TransitionType.Alpha)
+ {
+ SpriteRenderer[] rends = base.GetComponentsInChildren<SpriteRenderer>();
+ for (float timer = 0f; timer < 0.25f; timer += Time.deltaTime)
+ {
+ float t = timer / 0.25f;
+ for (int i = 0; i < rends.Length; i++)
+ {
+ rends[i].color = Color.Lerp(Color.white, Palette.ClearWhite, t);
+ }
+ yield return null;
+ }
+ rends = null;
+ }
+ }
+ else
+ {
+ for (float timer = 0f; timer < 0.25f; timer += Time.deltaTime)
+ {
+ float t2 = timer / 0.25f;
+ base.transform.localPosition = new Vector3(0f, Mathf.SmoothStep(0f, -8f, t2), -50f);
+ yield return null;
+ }
+ }
+ UnityEngine.Object.Destroy(base.gameObject);
+ yield break;
+ }
+}