//-------------------------------------------------------- 
 | 
//    [Author]:           第二世界 
 | 
//    [  Date ]:           Tuesday, January 30, 2018 
 | 
//-------------------------------------------------------- 
 | 
using UnityEngine; 
 | 
using System.Collections; 
 | 
using UnityEngine.UI; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
  
 | 
namespace Snxxz.UI 
 | 
{ 
 | 
  
 | 
     
 | 
public class FindPreciousTimer : SingletonMonobehaviour<FindPreciousTimer> 
 | 
  
 | 
    { 
 | 
        FindPreciousModel model { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } 
 | 
        Dictionary<int, BossRebornClock> clocks = new Dictionary<int, BossRebornClock>(); 
 | 
        List<int> bossIds = new List<int>(); 
 | 
  
 | 
        float timer = 1f; 
 | 
  
 | 
        public event Action<int> 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; 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |