少年修仙传客户端代码仓库
hch
2023-06-14 f23c81d21c9cc4c9f06e8bed3ebb7ddbe7e15ac3
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System;
 
namespace Snxxz.UI
{
    
    public class DayOnlineModel : Model
    {
 
        float recvTime; // 接收时的时间 用于计算时间差
        int seconds; //接收时的在线秒
 
        public event Action OnGetGiftUpdateEvent;
        int DayOnlineAwardState; //每日在线奖励
 
        public int[] timeArr;   //原时间列表
        public List<int> indexSort; //排序后的时间列表
        //索引从1开始
        public Dictionary<int, List<List<int>>> awards = new Dictionary<int, List<List<int>>>();
 
        public override void Init()
        {
 
            TimeMgr.Instance.OnMinuteEvent += UpdateRedpoint;
 
            awards.Clear();
            var awardJson = JsonMapper.ToObject(OnlineAwardConfig.Get(0).Reward);
            foreach (var _key in awardJson.Keys)
            {
                List<List<int>> info = new List<List<int>>();
                var index = int.Parse(_key);
                awards.Add(index, info);
                for (int i = 0; i < awardJson[_key].Count; i++)
                {
                    List<int> info2 = new List<int>();
                    info.Add(info2);
                    for (int j = 0; j < awardJson[_key][i].Count; j++)
                    {
                        info2.Add(int.Parse(awardJson[_key][i][j].ToString()));
                    }
                }
            }
 
            timeArr = JsonMapper.ToObject<int[]>(OnlineAwardConfig.Get(0).Time);
 
        }
 
        public struct awardItem
        {
            public int itemID;
            public int itemCount;
        }
 
        public override void UnInit()
        {
            TimeMgr.Instance.OnMinuteEvent -= UpdateRedpoint;
        }
 
        
        public void UpdateGetGift(HA308_tagMCOnlinePrize _package)
        {
 
            //awards.Clear();
            //int day = 0;
            //if (OnlineAwardConfig.Has(0))
            //    day = 0;
            //else
            //    day = TimeUtility.CreateDays;
 
            //if (!OnlineAwardConfig.Has(day))
            //    return;
 
 
            //var awardJson = JsonMapper.ToObject(OnlineAwardConfig.Get(day).Reward);
            //foreach (var _key in awardJson.Keys)
            //{
            //    List<List<int>> info = new List<List<int>>();
            //    var index = int.Parse(_key);
            //    awards.Add(index, info);
            //    for (int i = 0; i < awardJson[_key].Count; i++)
            //    {
            //        List<int> info2 = new List<int>();
            //        info.Add(info2);
            //        for (int j = 0; j < awardJson[_key][i].Count; j++)
            //        {
            //            info2.Add(int.Parse(awardJson[_key][i][j].ToString()));
            //        }
            //    }
            //}
 
            //timeArr = JsonMapper.ToObject<int[]>(OnlineAwardConfig.Get(day).Time);
 
            //recvTime = Time.realtimeSinceStartup;
            //seconds = (int)_package.OnlineTime / 1000;
            //if (_package.PrizeInfo.Length != 0)
            //    DayOnlineAwardState = (int)_package.PrizeInfo[0];
 
            //SortIndexs();
            //UpdateRedpoint();
            //if (OnGetGiftUpdateEvent != null)
            //{
            //    OnGetGiftUpdateEvent();
            //}
        }
        
        //计时
        public string GetTimeStr()
        {
            return TimeUtility.SecondsToHMS(seconds + (int)(Time.realtimeSinceStartup - recvTime));
        }
 
        public int GetOnlineMinute()
        {
            return (seconds + (int)(Time.realtimeSinceStartup - recvTime)) / 60;
        }
 
 
        //0 可领取 1不可领取 2已领取
        public int GetAwardState(int index)
        {
            if ((DayOnlineAwardState & (1 << index)) != 0)
            {
                return 2;
            }
            if (GetOnlineMinute() < timeArr[index])
            {
                return 1;
            }
 
            return 0;
        }
 
 
        public void SortIndexs()
        {
            indexSort = new List<int>(timeArr);
            indexSort.Sort(compareEx);
        }
 
        //根据领奖情况排序
        private int compareEx(int x, int y)
        {
            int xindex = Array.IndexOf(timeArr, x);
            int yindex = Array.IndexOf(timeArr, y);
 
            int xresult = GetAwardState(xindex);
            int yresult = GetAwardState(yindex);
 
            if (xresult != yresult) return xresult.CompareTo(yresult);
 
            return xindex.CompareTo(yindex);
        }
 
        public Redpoint redpoint = new Redpoint(201, 20112);
        public void UpdateRedpoint()
        {
            redpoint.state = RedPointState.None;
            for (int i = 0; i < timeArr.Length; i++)
            {
                if (GetAwardState(i) == 0)
                {
                    redpoint.state = RedPointState.GetReward;
                    break;
                }
            }
            
        }
 
    }
}