少年修仙传客户端代码仓库
hch
2025-03-03 28785d6ddf9c08e49527ede9405c7b6c93c6ed32
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
using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace vnxbqy.UI
{
 
    //本服和跨服活动的组合 OperationBossTrial
    //1. 参与时分由跨服活动决定
    //跨服凭证活动
    public class OperationCrossBossTrial : OperationBase
    {
        public Dictionary<int, ActBillboardAwards> rankInfo = new Dictionary<int, ActBillboardAwards>(); //根据排名显示奖励 从1开始  跨服个人榜
        public Dictionary<int, List<Item>> familyLeaderRankInfo = new Dictionary<int, List<Item>>(); //根据排名显示奖励 从1开始  跨服仙盟盟主
        public Dictionary<int, List<Item>> familyRankInfo = new Dictionary<int, List<Item>>(); //根据排名显示奖励 从1开始  跨服仙盟榜
 
        string m_ServerIDRangeInfo;    //开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
        public string m_ServerListStr;
        public int m_GroupValue1;    // 活动榜单分组值1,用于查询对应榜单
        public int maxPersonalRank; //根据奖励显示最大排名
        public int maxFamilyRank;
 
        public override void Reset()
        {
            base.Reset();
            rankInfo.Clear();
            familyLeaderRankInfo.Clear();
            familyRankInfo.Clear();
            m_ServerIDRangeInfo = "";
            m_ServerListStr = "";
            m_GroupValue1 = 0;
        }
 
        //显示参与时间
        public string ToDisplayJoinTime()
        {
            var textBuilder = OperationTimeHepler.textBuilder;
            textBuilder.Length = 0;
            textBuilder.Append(startDate.ToDisplay(false));
            textBuilder.Append(string.Format(" {0}:{1}", joinStartHour.ToString("D2"), joinStartMinute.ToString("D2")));
            if (startDate != endDate)
            {
                textBuilder.Append(" - ");
                textBuilder.Append(endDate.ToDisplay(false));
                textBuilder.Append(string.Format(" {0}:{1}", joinEndHour.ToString("D2"), joinEndMinute.ToString("D2")));
            }
            return textBuilder.ToString();
        }
 
        //结果展示时间 转为倒计时,以跨服时间为准
        public string ShowResultTime()
        {
            var endDataTime = TimeUtility.GetDayStartTime(ILTimeUtility.ServerCrossNow.Year, ILTimeUtility.ServerCrossNow.Month, ILTimeUtility.ServerCrossNow.Day).AddDays(1);
            return TimeUtility.SecondsToHMS((int)(endDataTime - ILTimeUtility.ServerCrossNow).TotalSeconds);
        }
 
        //是否展示结果时间, 以跨服时间为准(前提为以判断是活动中)
        public bool IsShowResultTime()
        {
            var endJoinDateTime = new DateTime(endDate.year, endDate.month, endDate.day, joinEndHour, joinEndMinute, 0);
            return ILTimeUtility.ServerCrossNow >= endJoinDateTime;
        }
 
 
        public void ParseCrossBossTrialInfo(HAA76_tagMCCrossActBossTrialInfo package)
        {
            m_ServerIDRangeInfo = package.ServerIDRangeInfo;
            m_ServerListStr = UIHelper.GetServers(m_ServerIDRangeInfo);
            m_GroupValue1 = package.GroupValue1;
 
            rankInfo.Clear();
            maxPersonalRank = 0;
            for (int i = 0; i < package.PersonalBillboardInfoList.Length; i++)
            {
                List<Item> items = new List<Item>();
                for (int j = 0; j < package.PersonalBillboardInfoList[i].AwardItemList.Length; j++)
                {
                    items.Add(new Item((int)package.PersonalBillboardInfoList[i].AwardItemList[j].ItemID,
                                               package.PersonalBillboardInfoList[i].AwardItemList[j].ItemCount,
                                               package.PersonalBillboardInfoList[i].AwardItemList[j].IsBind));
                }
 
                //仅处理一档额外奖励
                List<Item> itemsEx = new List<Item>();
                var awardsEx = package.PersonalBillboardInfoList[i].AwardItemExList;
                int needScoreEx = 0;
                if (awardsEx.Length != 0)
                {
                    for (int j = 0; j < awardsEx[0].AwardItemList.Length; j++)
                    {
                        itemsEx.Add(new Item((int)awardsEx[0].AwardItemList[j].ItemID,
                                                awardsEx[0].AwardItemList[j].ItemCount,
                                                awardsEx[0].AwardItemList[j].IsBind));
                    }
                    needScoreEx = (int)awardsEx[0].NeedScore;
                }
 
                rankInfo[(int)package.PersonalBillboardInfoList[i].Rank] = new ActBillboardAwards()
                {
                    needScore = (int)package.PersonalBillboardInfoList[i].NeedScore,
                    awardItemList = items,
                    awardItemListEx = itemsEx,
                    needScoreEx = needScoreEx,
 
                };
 
                maxPersonalRank = Math.Max(maxPersonalRank, (int)package.PersonalBillboardInfoList[i].Rank);
            }
 
            familyLeaderRankInfo.Clear();
            for (int i = 0; i < package.FamilyBillboardInfoList.Length; i++)
            {
                List<Item> items = new List<Item>();
                for (int j = 0; j < package.FamilyBillboardInfoList[i].AwardItemList.Length; j++)
                {
                    items.Add(new Item((int)package.FamilyBillboardInfoList[i].AwardItemList[j].ItemID,
                                            package.FamilyBillboardInfoList[i].AwardItemList[j].ItemCount,
                                            package.FamilyBillboardInfoList[i].AwardItemList[j].IsBind));
                }
                familyLeaderRankInfo[(int)package.FamilyBillboardInfoList[i].Rank] = items;
            }
 
            familyRankInfo.Clear();
            maxFamilyRank = 0;
            for (int i = 0; i < package.FamilyBillboardInfoList.Length; i++)
            {
                List<Item> items = new List<Item>();
                for (int j = 0; j < package.FamilyBillboardInfoList[i].MemAwardItemList.Length; j++)
                {
                    items.Add(new Item((int)package.FamilyBillboardInfoList[i].MemAwardItemList[j].ItemID,
                                            package.FamilyBillboardInfoList[i].MemAwardItemList[j].ItemCount,
                                            package.FamilyBillboardInfoList[i].MemAwardItemList[j].IsBind));
                }
                familyRankInfo[(int)package.FamilyBillboardInfoList[i].Rank] = items;
                maxFamilyRank = Math.Max(maxFamilyRank, (int)package.FamilyBillboardInfoList[i].Rank);
            }
 
        }
 
    }
}