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