summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/SpinAnimator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/SpinAnimator.cs')
-rw-r--r--Client/Assembly-CSharp/SpinAnimator.cs72
1 files changed, 72 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/SpinAnimator.cs b/Client/Assembly-CSharp/SpinAnimator.cs
new file mode 100644
index 0000000..e3762f2
--- /dev/null
+++ b/Client/Assembly-CSharp/SpinAnimator.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections;
+using UnityEngine;
+
+public class SpinAnimator : MonoBehaviour
+{
+ public float Speed = 60f;
+
+ private SpinAnimator.States curState;
+
+ private enum States
+ {
+ Visible,
+ Invisible,
+ Spinning,
+ Pulsing
+ }
+
+ private void Update()
+ {
+ if (this.curState == SpinAnimator.States.Spinning)
+ {
+ base.transform.Rotate(0f, 0f, this.Speed * Time.deltaTime);
+ }
+ }
+
+ public void Appear()
+ {
+ if (this.curState != SpinAnimator.States.Invisible)
+ {
+ return;
+ }
+ this.curState = SpinAnimator.States.Visible;
+ base.gameObject.SetActive(true);
+ base.StopAllCoroutines();
+ base.StartCoroutine(Effects.ScaleIn(base.transform, 0f, 1f, 0.125f));
+ }
+
+ public void Disappear()
+ {
+ if (this.curState == SpinAnimator.States.Invisible)
+ {
+ return;
+ }
+ this.curState = SpinAnimator.States.Invisible;
+ base.StopAllCoroutines();
+ base.StartCoroutine(this.CoDisappear());
+ }
+
+ private IEnumerator CoDisappear()
+ {
+ yield return Effects.ScaleIn(base.transform, 1f, 0f, 0.125f);
+ base.gameObject.SetActive(false);
+ yield break;
+ }
+
+ public void StartPulse()
+ {
+ if (this.curState == SpinAnimator.States.Pulsing)
+ {
+ return;
+ }
+ this.curState = SpinAnimator.States.Pulsing;
+ SpriteRenderer component = base.GetComponent<SpriteRenderer>();
+ base.StartCoroutine(Effects.CycleColors(component, Color.white, Color.green, 1f, float.MaxValue));
+ }
+
+ internal void Play()
+ {
+ this.curState = SpinAnimator.States.Spinning;
+ }
+}