using System.Collections.Generic; using UnityEngine; public class BattleEffectPlayRule : Singleton { public List sortPlayerList = new List(); private int limit { get { if (SystemSetting.Instance.GetCurrentQualityLevel() == GameQuality.High) { return 7; } else if (SystemSetting.Instance.GetCurrentQualityLevel() == GameQuality.Medium) { return 3; } else { return 0; } } } public float timeEscape; public void Update() { if (Time.realtimeSinceStartup - timeEscape > .5f) { GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero == null) { return; } sortPlayerList.Sort((id1, id2) => { GActor _actor1 = GAMgr.Instance.GetBySID(id1); GActor _actor2 = GAMgr.Instance.GetBySID(id2); float _dis1 = 0f; float _dis2 = 0f; if (_actor1 != null) { _dis1 = MathUtility.DistanceSqrtXZ(_hero.Pos, _actor1.Pos); } if (_actor2 != null) { _dis2 = MathUtility.DistanceSqrtXZ(_hero.Pos, _actor2.Pos); } return _dis2 > _dis1 ? -1 : 1; }); timeEscape = Time.realtimeSinceStartup; } } public bool CanPlay(uint sid) { GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero == null) { return false; } // 选中英雄必显示 if (_hero.SelectTarget != null) { if (_hero.SelectTarget.ServerInstID == sid) { return true; } } if (_hero.LockTarget != null) { if (_hero.LockTarget.ServerInstID == sid) { return true; } } // 获取传入的玩家在排序后的队列中的索引 int _index = sortPlayerList.IndexOf(sid); // 不存在可能是异常,不播放 if (_index < 0) { return false; } // 在限定的数量内,允许播放 if (_index < limit) { return true; } return false; } }