using System.Collections.Generic;
|
using UnityEngine;
|
|
public class BattleEffectPlayRule : Singleton<BattleEffectPlayRule>
|
{
|
public List<uint> sortPlayerList = new List<uint>();
|
|
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 = MathUtility.DistanceSqrtXZ(_hero.Pos, _actor1.Pos);
|
float _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
|
|| _hero.LockTarget.ServerInstID == sid)
|
{
|
return true;
|
}
|
}
|
|
// 获取传入的玩家在排序后的队列中的索引
|
int _index = sortPlayerList.IndexOf(sid);
|
|
// 不存在可能是异常,不播放
|
if (_index < 0)
|
{
|
return false;
|
}
|
|
// 在限定的数量内,允许播放
|
if (_index < limit)
|
{
|
return true;
|
}
|
|
return false;
|
}
|
}
|