少年修仙传客户端代码仓库
lcy
2024-12-16 a39c35fc6449430cd02bccb681c4a0a880e46cd9
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace vnxbqy.UI
{
    
    public class CrossServerOneVsOnePkResult
    {
        public string PkEndTime { get; private set; }   // 结算时间,格式 yyyy-MM-dd HH:mm:ss
 
        public int OverType { get; private set; }     // 0-正常,1-有人离线
 
        public int WinnerID { get; private set; }     // 胜方ID(本次战斗结束,不是回合结束)
 
        public int RoundCount { get; private set; }    // PK回合数
 
        public uint[] RoundWinnerIDs { get; private set; }     // 回合获胜ID列表
 
        public int AddScore { get; private set; }     // 本场加分
 
        public int CurScore { get; private set; }    // 当前积分
 
        public int DanLV { get; private set; }    // 当前段位
 
        public int WinStreak { get; private set; }   // 当前连胜数
 
        public string VsPlayerName { get; private set; }  //对手名字
 
        CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
 
        public void UpdatePkResult(HC003_tagGCCrossRealmPKOverInfo pKOverInfo)
        {
            this.AddScore = pKOverInfo.AddScore;
            this.CurScore = (int)pKOverInfo.Score;
            this.DanLV = pKOverInfo.DanLV;
            this.WinStreak = pKOverInfo.CWinCnt;
 
            if (ClientCrossServerOneVsOne.isClientCrossServerOneVsOne)
            {
                this.PkEndTime = ClientCrossServerOneVsOne.resultSupplement.endTime.ToString();
                this.OverType = ClientCrossServerOneVsOne.resultSupplement.overType;
                this.WinnerID = ClientCrossServerOneVsOne.resultSupplement.winPlayerId;
                this.RoundCount = ClientCrossServerOneVsOne.resultSupplement.roundCount;
                this.RoundWinnerIDs = ClientCrossServerOneVsOne.resultSupplement.roundWinnerId;
                this.VsPlayerName = ClientCrossServerOneVsOne.resultSupplement.opponentName.Replace("@gm", "");
            }
            else
            {
                this.PkEndTime = pKOverInfo.TimeStr;
                this.OverType = pKOverInfo.OverType;
                this.WinnerID = (int)pKOverInfo.WinnerID;
                this.RoundCount = pKOverInfo.RoundCount;
                this.RoundWinnerIDs = pKOverInfo.RoundWinnerID;
                this.VsPlayerName = pKOverInfo.TagName.Replace("@gm", "");
            }
        }
 
        public void GetWinAndFailNum(out int winNum, out int failNum)
        {
            winNum = 0;
            failNum = 0;
            int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
            for (int i = 0; i < RoundCount; i++)
            {
                var winnerId = RoundWinnerIDs[i];
                if (winnerId == playerId)
                {
                    winNum += 1;
                }
                else
                {
                    failNum += 1;
                }
            }
        }
 
        /// <summary>
        /// 1 自己离线 2 对手离线
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public bool TryGetOffLine(out int type)
        {
            type = 0;
            int playerId = (int)PlayerDatas.Instance.baseData.PlayerID;
            if (OverType != 0)
            {
                type = playerId == WinnerID ? 2 : 1;
            }
            return OverType != 0;
        }
 
        /// <summary>
        /// 获取连胜积分
        /// </summary>
        /// <param name="score"></param>
        /// <returns></returns>
        public bool TryGetWinStreakScore(out int score)
        {
            score = 0;
            if (WinStreak < 2) return false;
 
            int virtualWinStreak = WinStreak - 1;
            Equation.Instance.Clear();
            Equation.Instance.AddKeyValue("cWinCount", virtualWinStreak);
            score = Equation.Instance.Eval<int>(crossServerModel.winStreakScoreFormula);
            return true;
        }
    }
}