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;  
 | 
        }  
 | 
    }  
 | 
}  
 |