summaryrefslogtreecommitdiff
path: root/Assembly_CSharp/DamageNumber.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assembly_CSharp/DamageNumber.cs')
-rw-r--r--Assembly_CSharp/DamageNumber.cs138
1 files changed, 138 insertions, 0 deletions
diff --git a/Assembly_CSharp/DamageNumber.cs b/Assembly_CSharp/DamageNumber.cs
new file mode 100644
index 0000000..4355328
--- /dev/null
+++ b/Assembly_CSharp/DamageNumber.cs
@@ -0,0 +1,138 @@
+using System.Collections;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class DamageNumber : MonoBehaviour
+{
+ [SerializeField]
+ private Transform holder;
+
+ [SerializeField]
+ private Text text;
+
+ [SerializeField]
+ private int baseTextSize;
+
+ [SerializeField]
+ private float zoom = 0.25f;
+
+ private float hold = 0.5f;
+
+ [SerializeField]
+ private float spin = 0.5f;
+
+ [SerializeField]
+ private Color healthColor;
+
+ [SerializeField]
+ private Color armorColor;
+
+ [SerializeField]
+ private Color shieldColor;
+
+ [SerializeField]
+ private Color greyColor;
+
+ [SerializeField]
+ private Color greenColor;
+
+ public void Start()
+ {
+ StartCoroutine(Bloop());
+ }
+
+ public void SetNumber(int num, string color, float fontScale)
+ {
+ text.fontSize = (int)((float)baseTextSize * fontScale);
+ text.text = num.ToString();
+ switch (color)
+ {
+ case "Blue":
+ text.color = shieldColor;
+ break;
+ case "Yellow":
+ text.color = armorColor;
+ break;
+ case "Red":
+ text.color = healthColor;
+ break;
+ case "Grey":
+ text.color = greyColor;
+ break;
+ case "Green":
+ text.color = greenColor;
+ break;
+ }
+ }
+
+ public void SetText(string _text, string color, float fontScale)
+ {
+ text.fontSize = (int)((float)baseTextSize * fontScale);
+ text.text = _text;
+ switch (color)
+ {
+ case "Blue":
+ text.color = shieldColor;
+ break;
+ case "Yellow":
+ text.color = armorColor;
+ break;
+ case "Red":
+ text.color = healthColor;
+ break;
+ case "Grey":
+ text.color = greyColor;
+ break;
+ case "Green":
+ text.color = greenColor;
+ break;
+ }
+ }
+
+ public void SetHoldTime(float time)
+ {
+ hold = time;
+ }
+
+ private IEnumerator Bloop()
+ {
+ Vector3 scale = Vector3.zero;
+ holder.localScale = scale;
+ holder.localPosition = new Vector3(-1.5f, 2.12132f, 1.5f);
+ text.rectTransform.localRotation = Quaternion.identity;
+ float t2 = zoom;
+ while (t2 > 0f)
+ {
+ scale += Vector3.one * (1f / zoom) * Time.deltaTime;
+ holder.localScale = scale;
+ t2 -= Time.deltaTime;
+ yield return null;
+ }
+ scale = Vector3.one;
+ holder.localScale = scale;
+ t2 = hold;
+ Vector3 direction = new Vector3(Random.Range(-1f, 1f), Random.Range(0f, 1f), 0f);
+ while (t2 > 0f)
+ {
+ holder.localPosition += direction * Time.deltaTime;
+ t2 -= Time.deltaTime;
+ yield return null;
+ }
+ t2 = spin;
+ int r = 1;
+ if (Random.Range(1f, 100f) <= 50f)
+ {
+ r = -1;
+ }
+ while (t2 > 0f)
+ {
+ holder.localPosition += direction * Time.deltaTime;
+ scale -= Vector3.one * (1f / spin) * Time.deltaTime;
+ holder.localScale = scale;
+ text.rectTransform.eulerAngles += r * 180 * Vector3.forward * Time.deltaTime / spin;
+ t2 -= Time.deltaTime;
+ yield return null;
+ }
+ ObjectPool.instance.PoolDamageNumber(base.gameObject);
+ }
+}