using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Snxxz.UI { [XLua.Hotfix] 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(); } } public void UpdatePkResult(HC003_tagGCCrossRealmPKOverInfo pKOverInfo) { this.PkEndTime = pKOverInfo.TimeStr; this.OverType = pKOverInfo.OverType; this.WinnerID = (int)pKOverInfo.WinnerID; this.RoundCount = pKOverInfo.RoundCount; this.RoundWinnerIDs = pKOverInfo.RoundWinnerID; this.AddScore = pKOverInfo.AddScore; this.CurScore = (int)pKOverInfo.Score; this.DanLV = pKOverInfo.DanLV; this.WinStreak = pKOverInfo.CWinCnt; this.VsPlayerName = pKOverInfo.TagName; } 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; } } } /// /// 1 自己离线 2 对手离线 /// /// /// 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; } /// /// 获取连胜积分 /// /// /// 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(crossServerModel.winStreakScoreFormula); return true; } } }