//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, January 30, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using System.Collections.Generic; namespace vnxbqy.UI { public class FindPreciousTimer : SingletonMonobehaviour { FindPreciousModel model { get { return ModelCenter.Instance.GetModel(); } } Dictionary clocks = new Dictionary(); List bossIds = new List(); float timer = 1f; public event Action bossRebornNotifyEvent; public void AddClock(int _npcId, DateTime _rebornTime) { if (IsValidClockSetting(_rebornTime)) { clocks[_npcId] = new BossRebornClock(_npcId, _rebornTime); if (!bossIds.Contains(_npcId)) { bossIds.Add(_npcId); } } } public void Clear() { clocks.Clear(); bossIds.Clear(); } private void LateUpdate() { timer -= Time.deltaTime; if (timer < 0f) { timer = 1f; if (clocks.Count > 0) { for (int i = bossIds.Count - 1; i >= 0; i--) { var clock = clocks[bossIds[i]]; if ((clock.rebornTime - TimeUtility.ServerNow).TotalSeconds < FindPreciousModel.PREPOSE_SECONDS) { clocks.Remove(bossIds[i]); bossIds.RemoveAt(i); if (bossRebornNotifyEvent != null) { bossRebornNotifyEvent(clock.npcId); } } } } } } private bool IsValidClockSetting(DateTime _rebornTime) { return (_rebornTime - TimeUtility.ServerNow).TotalSeconds >= FindPreciousModel.PREPOSE_SECONDS; } public class BossRebornClock { public int npcId; public DateTime rebornTime; public BossRebornClock(int _npcId, DateTime _rebornTime) { this.npcId = _npcId; this.rebornTime = _rebornTime; } } } }