少年修仙传客户端代码仓库
client_Wu Xijin
2019-06-13 033958214c0b16d7e7b93cc821b018c295251867
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, January 30, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
 
namespace Snxxz.UI
{
 
    [XLua.LuaCallCSharp]
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;
            }
 
        }
 
    }
 
}