summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/Asteroid.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/Asteroid.cs')
-rw-r--r--Client/Assembly-CSharp/Asteroid.cs71
1 files changed, 71 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/Asteroid.cs b/Client/Assembly-CSharp/Asteroid.cs
new file mode 100644
index 0000000..a633bef
--- /dev/null
+++ b/Client/Assembly-CSharp/Asteroid.cs
@@ -0,0 +1,71 @@
+using System;
+using System.Collections;
+using UnityEngine;
+
+public class Asteroid : PoolableBehavior
+{
+ public Vector3 TargetPosition { get; internal set; }
+
+ public Sprite[] AsteroidImages;
+
+ public Sprite[] BrokenImages;
+
+ private int imgIdx;
+
+ public FloatRange MoveSpeed = new FloatRange(2f, 5f);
+
+ public FloatRange RotateSpeed = new FloatRange(-10f, 10f);
+
+ public SpriteRenderer Explosion;
+
+ public void FixedUpdate()
+ {
+ base.transform.localRotation = Quaternion.Euler(0f, 0f, base.transform.localRotation.eulerAngles.z + this.RotateSpeed.Last * Time.fixedDeltaTime);
+ Vector3 a = this.TargetPosition - base.transform.localPosition;
+ if (a.sqrMagnitude > 0.05f)
+ {
+ a.Normalize();
+ base.transform.localPosition += a * this.MoveSpeed.Last * Time.fixedDeltaTime;
+ return;
+ }
+ this.OwnerPool.Reclaim(this);
+ }
+
+ public override void Reset()
+ {
+ base.enabled = true;
+ this.Explosion.enabled = false;
+ SpriteRenderer component = base.GetComponent<SpriteRenderer>();
+ this.imgIdx = this.AsteroidImages.RandomIdx<Sprite>();
+ component.sprite = this.AsteroidImages[this.imgIdx];
+ component.enabled = true;
+ ButtonBehavior component2 = base.GetComponent<ButtonBehavior>();
+ component2.enabled = true;
+ component2.OnClick.RemoveAllListeners();
+ base.transform.Rotate(0f, 0f, this.RotateSpeed.Next());
+ this.MoveSpeed.Next();
+ base.Reset();
+ }
+
+ public IEnumerator CoBreakApart()
+ {
+ base.enabled = false;
+ base.GetComponent<ButtonBehavior>().enabled = false;
+ this.Explosion.enabled = true;
+ yield return new WaitForLerp(0.1f, delegate(float t)
+ {
+ this.Explosion.transform.localScale = new Vector3(t, t, t);
+ });
+ yield return new WaitForSeconds(0.05f);
+ yield return new WaitForLerp(0.05f, delegate(float t)
+ {
+ this.Explosion.transform.localScale = new Vector3(1f - t, 1f - t, 1f - t);
+ });
+ SpriteRenderer rend = base.GetComponent<SpriteRenderer>();
+ yield return null;
+ rend.sprite = this.BrokenImages[this.imgIdx];
+ yield return new WaitForSeconds(0.2f);
+ this.OwnerPool.Reclaim(this);
+ yield break;
+ }
+}