using UnityEngine; using IVDataFormat; public class GamePlayBuffMgr : Singleton { BuffDataGroup buffGroup; public BuffDataGroup BuffGroup => buffGroup; private void Awake() { buffGroup = new BuffDataGroup(); buffGroup.OnChanged += OnChangedBuffList; } private void OnDestroy() { buffGroup.OnChanged -= OnChangedBuffList; } private void Update() { foreach (var list in buffGroup.BuffMap.Values) { for (int i = 0; i < list.Count;) { var buff = list[i]; if (!buff.UpdateDuration(Time.fixedDeltaTime)) buffGroup.RemoveBuff(buff); else i++; } } } private void OnChangedBuffList(BuffData buffData, bool added) { switch (buffData.Key) { case eEffectType.AtkBuff: case eEffectType.HpBuff: case eEffectType.GoldDropRate: case eEffectType.ExpDropRate: case eEffectType.SkillDamage: BuffMgr.Instance.CalcCharStat(buffData.Key); BattleMgr.Instance.GetPlayer().RefreshStat(); break; case eEffectType.PlayerSkillCoolFix: BattleMgr.Instance.RecalcAllSkillCool(); break; } } }