using System.Collections; using System.Collections.Generic; using UnityEngine; public class Particle : MonoBehaviour { protected int _tier = 0; [HideInInspector] public new Rigidbody2D rigidbody; [HideInInspector] public Gravitation gravitation; [HideInInspector] public GameController gameController; [HideInInspector] public Merger merger; [HideInInspector] public Collider2D particleCollider; [HideInInspector] public Collider2D mergeCollider; [HideInInspector] public Emitter emitter; [HideInInspector] public Animator animator; [HideInInspector] public Hue hue; [HideInInspector] public SpriteRenderer mainRenderer; [HideInInspector] public SpriteRenderer auraRenderer; [HideInInspector] public SpriteRenderer detailsRenderer; [HideInInspector] public Disappear disappear; public int Tier { get { return _tier; } set { _tier = value; Scale = Mathf.Pow(gameController.scaleMultiplier, _tier); animator.runtimeAnimatorController = gameController.tierAnimation[_tier % gameController.tierAnimation.Length]; hue.PossibleColors = gameController.tierGradients[_tier % gameController.tierGradients.Length]; gameController.CheckNewMaxTier(_tier); mainRenderer.sortingOrder = -_tier; auraRenderer.sortingOrder = -_tier; detailsRenderer.sortingOrder = -_tier; disappear.ResetTimer(); rigidbody.mass = Mass; } } public float Scale { get { return transform.localScale.x; } protected set { transform.localScale = new Vector3(value, value, 1); } } public float Mass { get { return Mathf.Pow(gameController.particlesToMerge + 1, Tier); } } public GameObject ParticlePrefab { get { return gameController.particlePrefab; } } protected void Awake() { rigidbody = GetComponent(); gravitation = GetComponent(); gameController = GameObject.Find("GameController").GetComponent(); merger = GetComponentInChildren(); particleCollider = GetComponent(); mergeCollider = merger.GetComponent(); emitter = GetComponent(); mainRenderer = GetComponent(); auraRenderer = transform.Find("Aura").GetComponent(); detailsRenderer = transform.Find("Details").GetComponent(); hue = GetComponent(); animator = GetComponent(); disappear = GetComponent(); } protected void Start() { animator.runtimeAnimatorController = gameController.tierAnimation[_tier % gameController.tierAnimation.Length]; hue.PossibleColors = gameController.tierGradients[_tier % gameController.tierGradients.Length]; } protected void OnDestroy() { if(Tier >= gameController.maxTierPresent) { gameController.RecalculateMaxTier(); } } }