using UnityEngine; public class ScrollingTextInterceptor : BrokerInterceptor { public ScrollingText scrollingTextPrefab; protected ScrollingText scrollingText; protected override void Awake() { base.Awake(); broker.OnInvulnerable.Subscribe(OnInvulnerable); broker.OnDodge.Subscribe(OnDodge); broker.OnBlock.Subscribe(OnBlock); broker.OnIncomingDamageProcessed.Subscribe(OnDamage); broker.OnIncomingHealProcessed.Subscribe(OnHeal); } private void OnInvulnerable(InvulnerabilityArgs args) { if (!args.isImmune) return; if (scrollingTextPrefab != null) { scrollingText = GameObjectPoolManager.Instance.Get(scrollingTextPrefab.gameObject, this.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 2f, Random.Range(-0.5f, 0.5f)), Quaternion.identity).GetComponent(); scrollingText.Show("Invulnerable", Color.gray, 1.5f); } } private void OnDodge(DodgeArgs args) { if (!args.dodgedSuccessfully) return; if (scrollingTextPrefab != null) { scrollingText = GameObjectPoolManager.Instance.Get(scrollingTextPrefab.gameObject, this.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 2f, Random.Range(-0.5f, 0.5f)), Quaternion.identity).GetComponent(); scrollingText.ShowDodge("Dodge!"); } } private void OnBlock(BlockArgs args) { if (!args.blockedSuccessfully) return; if (scrollingTextPrefab != null) { scrollingText = GameObjectPoolManager.Instance.Get(scrollingTextPrefab.gameObject, this.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 2f, Random.Range(-0.5f, 0.5f)), Quaternion.identity).GetComponent(); scrollingText.ShowBlock("Blocked!"); } } private void OnDamage(DamageArgs args) { if (scrollingTextPrefab != null && args.currentValue < 0) { scrollingText = GameObjectPoolManager.Instance.Get(scrollingTextPrefab.gameObject, this.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 2f, Random.Range(-0.5f, 0.5f)), Quaternion.identity).GetComponent(); if (args.isCrit) scrollingText.ShowCrit(args.currentValue.ToString("0.0")); else scrollingText.ShowHit(args.currentValue.ToString("0.0")); } } private void OnHeal(HealArgs args) { if (scrollingTextPrefab != null && args.currentValue > 0) { scrollingText = GameObjectPoolManager.Instance.Get(scrollingTextPrefab.gameObject, this.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), 2f, Random.Range(-0.5f, 0.5f)), Quaternion.identity).GetComponent(); scrollingText.ShowHeal(args.currentValue.ToString("0.0")); } } }