diff options
Diffstat (limited to 'Client/Assembly-CSharp/SpinAnimator.cs')
-rw-r--r-- | Client/Assembly-CSharp/SpinAnimator.cs | 72 |
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; + } +} |