少年修仙传客户端代码仓库
lcy
2025-05-08 1314c3b3c14cd520bbb8569b5f98d68933a22cd3
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
using System;
using System.Collections.Generic;
 
namespace vnxbqy.UI
{
    public class OperationFairySiegeCross : OperationBase
    {
        public int zoneID;                  // 活动分区ID,公示期为0
        public uint actID;                   // 活动ID,代表某一次活动的唯一ID,前端如果有活动相关的本地记录可以通过验证此ID变更进行重置
        public byte JoinFamilyCnt;          // 参与仙盟数
        public ushort ActFlowID;            // 活动流程ID,对应H.活动时间流程表中的编号,前端根据跨服时间自行计算当前所处流程状态
        public ushort GuessTemplateID;      // 竞猜奖励模版,对应H.活动竞猜表,前端自行读表展示
        public ushort PersonalTemplateID;   // 个人伤害排行奖励模版,对应H.活动榜单奖励模版表,前端自行读表展示
        public ushort FamilyTemplateID;     // 仙盟积分排行奖励模版,对应H.活动榜单奖励模版表,前端自行读表展示
        public uint StateError;             // 活动流程状态是否异常,如果不为0代表活动已异常,前端自行决定是不显示活动还是活动页面做提示
        public HC024_tagGCFamilyGCZActInfo.tagGCFamilyGCZActFamily[] ActFamilyList;    //本分区参与的仙盟名单
        string m_ServerIDRangeInfo;    //开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
        public string m_ServerListStr;
        FairySiegeActModel model { get { return ModelCenter.Instance.GetModel<FairySiegeActModel>(); } }
 
        public override void Reset()
        {
            base.Reset();
            m_ServerIDRangeInfo = "";
            m_ServerListStr = "";
        }
 
        public override bool SatisfyOpenCondition()
        {
            return PlayerDatas.Instance.baseData.LV >= limitLv;
        }
 
        //显示参与时间
        public string ToDisplayJoinTime()
        {
            var textBuilder = OperationTimeHepler.textBuilder;
            textBuilder.Length = 0;
            textBuilder.Append(string.Format(" {0}:{1}", joinStartHour.ToString("D2"), joinStartMinute.ToString("D2")));
            textBuilder.Append(" - ");
            textBuilder.Append(string.Format(" {0}:{1}", joinEndHour.ToString("D2"), joinEndMinute.ToString("D2")));
            return textBuilder.ToString();
        }
 
        public override string ToDisplayTime()
        {
            var textBuilder = OperationTimeHepler.textBuilder;
            textBuilder.Length = 0;
            textBuilder.Append(startDate.ToDisplay(false));
            textBuilder.Append(string.Format(" {0}:{1}:{2}", 0.ToString("D2"), 0.ToString("D2"), 0.ToString("D2")));
            //textBuilder.Append(string.Format("{0}:{1}", joinStartHour.ToString("D2"), joinStartMinute.ToString("D2")));
            textBuilder.Append(" - ");
            textBuilder.Append(endDate.ToDisplay(false));
            textBuilder.Append(string.Format(" {0}:{1}:{2} ", 23.ToString("D2"), 59.ToString("D2"), 59.ToString("D2")));
            //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;
        }
 
        //<ServerID,<FamilyID,FairySiegeFamilyInfo>>
        public Dictionary<uint, Dictionary<uint, FairySiegeFamilyInfo>> joinFamilys = new Dictionary<uint, Dictionary<uint, FairySiegeFamilyInfo>>();
        //<FamilyID,FairySiegeFamilyInfo>
        public Dictionary<uint, FairySiegeFamilyInfo> joinFamilyDict = new Dictionary<uint, FairySiegeFamilyInfo>(); //本服参与的仙盟列表
 
        public void ParseCrossFairySiegeInfo(HC024_tagGCFamilyGCZActInfo package)
        {
            m_ServerIDRangeInfo = package.ServerIDRangeInfo;
            m_ServerIDRangeInfo = package.ServerIDRangeInfo;
            m_ServerListStr = UIHelper.GetServers(m_ServerIDRangeInfo);
 
            foreach (var pack in package.ActFamilyList)
            {
                if (!joinFamilys.ContainsKey(pack.ServerID))
                {
                    joinFamilys[pack.ServerID] = new Dictionary<uint, FairySiegeFamilyInfo>();
                }
                if (!joinFamilys[pack.ServerID].ContainsKey(pack.FamilyID))
                {
                    joinFamilys[pack.ServerID][pack.FamilyID] = new FairySiegeFamilyInfo();
                }
                joinFamilys[pack.ServerID][pack.FamilyID].FamilyID = pack.FamilyID;
                joinFamilys[pack.ServerID][pack.FamilyID].Name = UIHelper.ServerStringTrim(pack.Name);
                joinFamilys[pack.ServerID][pack.FamilyID].LV = pack.LV;
                joinFamilys[pack.ServerID][pack.FamilyID].ServerID = pack.ServerID;
                joinFamilys[pack.ServerID][pack.FamilyID].EmblemID = pack.EmblemID;
                joinFamilys[pack.ServerID][pack.FamilyID].FightPower = (ulong)pack.FightPowerEx * 100000000 + pack.FightPower;
                joinFamilys[pack.ServerID][pack.FamilyID].LeaderID = pack.LeaderID;
                joinFamilys[pack.ServerID][pack.FamilyID].LeaderName = UIHelper.ServerStringTrim(pack.LeaderName);
                joinFamilys[pack.ServerID][pack.FamilyID].LeaderFace = pack.LeaderFace;
                joinFamilys[pack.ServerID][pack.FamilyID].LeaderFacePic = pack.LeaderFacePic;
 
                if (!joinFamilyDict.ContainsKey(pack.FamilyID))
                {
                    joinFamilyDict[pack.FamilyID] = new FairySiegeFamilyInfo();
                }
                joinFamilyDict[pack.FamilyID].FamilyID = pack.FamilyID;
                joinFamilyDict[pack.FamilyID].Name = UIHelper.ServerStringTrim(pack.Name);
                joinFamilyDict[pack.FamilyID].LV = pack.LV;
                joinFamilyDict[pack.FamilyID].ServerID = pack.ServerID;
                joinFamilyDict[pack.FamilyID].EmblemID = pack.EmblemID;
                joinFamilyDict[pack.FamilyID].FightPower = (ulong)pack.FightPowerEx * 100000000 + pack.FightPower;
                joinFamilyDict[pack.FamilyID].LeaderID = pack.LeaderID;
                joinFamilyDict[pack.FamilyID].LeaderName = UIHelper.ServerStringTrim(pack.LeaderName);
                joinFamilyDict[pack.FamilyID].LeaderFace = pack.LeaderFace;
                joinFamilyDict[pack.FamilyID].LeaderFacePic = pack.LeaderFacePic;
            }
        }
    }
}