summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/Asteroid.cs
blob: a633bef1ffb0d8eba1f198bb536d859ba84fb114 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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;
	}
}