| | |
| | | public class CrossServerModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
|
| | | {
|
| | | public string PkResultLocalSaveKey { get; private set; }
|
| | | public List<PkResultInfo> localSaveResults { get; private set; }
|
| | | public List<CrossServerPkResult> localSaveResults { get; private set; }
|
| | |
|
| | | public override void Init()
|
| | | {
|
| | |
| | |
|
| | | private void InitData()
|
| | | {
|
| | | curWinRate = 0;
|
| | | sumBattleNum = 0;
|
| | | dayMatchNum = 0;
|
| | | alreadyBuyNum = 0;
|
| | | pkResultInfo = new PkResultInfo();
|
| | | }
|
| | |
|
| | | public bool TryGetMaxRank(out int upScore)
|
| | | {
|
| | | upScore = 0;
|
| | | if (pkResultInfo == null) return false;
|
| | | var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(pkResultInfo.DanLV);
|
| | | if(arenaConfig != null)
|
| | | {
|
| | | upScore = arenaConfig.LVUpScore;
|
| | | }
|
| | | return upScore == 0;
|
| | | }
|
| | |
|
| | | public int GetBuyMatchNumPrice()
|
| | | {
|
| | | Equation.Instance.Clear();
|
| | | Equation.Instance.AddKeyValue("buyCnt",alreadyBuyNum);
|
| | | return Equation.Instance.Eval<int>(priceFormula);
|
| | | }
|
| | |
|
| | | public bool TryGetWinStreakScore(out int score)
|
| | | {
|
| | | score = 0;
|
| | | if (pkResultInfo.WinStreak < 2) return false;
|
| | |
|
| | | Equation.Instance.Clear();
|
| | | Equation.Instance.AddKeyValue("cWinCount",pkResultInfo.WinStreak);
|
| | | score = Equation.Instance.Eval<int>(winStreakScoreFormula);
|
| | | return true;
|
| | | CrossServerPlayerInfo.Instance.InitData();
|
| | | pkResultInfo = new CrossServerPkResult();
|
| | | }
|
| | |
|
| | | public List<AwardType> sortDayAwardslist = new List<AwardType>();
|
| | |
| | | #endregion
|
| | |
|
| | | #region 协议
|
| | | public int curWinRate { get; private set; } //当前胜率
|
| | | public int sumBattleNum { get; private set; } //对战总场数
|
| | | public int dayMatchNum { get; private set; } //今日匹配次数
|
| | | public int alreadyBuyNum { get; private set;} //今日购买匹配次数
|
| | | public PkResultInfo pkResultInfo { get; private set;}
|
| | | public CrossServerPkResult pkResultInfo { get; private set;}
|
| | | public event Action UpdatePkResultEvent;
|
| | | public void UpdatePKResultInfo(HC003_tagGCCrossRealmPKOverInfo pKOverInfo)
|
| | | {
|
| | | pkResultInfo = new PkResultInfo();
|
| | | pkResultInfo.PkEndTime = pKOverInfo.TimeStr;
|
| | | pkResultInfo.OverType = pKOverInfo.OverType;
|
| | | pkResultInfo.WinnerID = (int)pKOverInfo.WinnerID;
|
| | | pkResultInfo.RoundCount = pKOverInfo.RoundCount;
|
| | | pkResultInfo.RoundWinnerIDs = pKOverInfo.RoundWinnerID;
|
| | | pkResultInfo.AddScore = pKOverInfo.AddScore;
|
| | | pkResultInfo.CurScore = pKOverInfo.Score;
|
| | | pkResultInfo.DanLV = pKOverInfo.DanLV;
|
| | | pkResultInfo.WinStreak = pKOverInfo.CWinCnt;
|
| | | pkResultInfo.VsPlayerName = pKOverInfo.TagName;
|
| | | pkResultInfo = new CrossServerPkResult();
|
| | | pkResultInfo.UpdatePkResult(pKOverInfo);
|
| | | SetPkInfoLocalSave(pkResultInfo);
|
| | | if(UpdatePkResultEvent != null)
|
| | | {
|
| | | UpdatePkResultEvent();
|
| | | }
|
| | | }
|
| | |
|
| | | public class PkResultInfo
|
| | | {
|
| | | public string PkEndTime; // 结算时间,格式 yyyy-MM-dd HH:mm:ss
|
| | |
|
| | | public int OverType; // 0-正常,1-有人离线
|
| | |
|
| | | public int WinnerID; // 胜方ID(本次战斗结束,不是回合结束)
|
| | |
|
| | | public int RoundCount; // PK回合数
|
| | |
|
| | | public uint[] RoundWinnerIDs; // 回合获胜ID列表
|
| | |
|
| | | public int AddScore; // 本场加分
|
| | |
|
| | | public int CurScore; // 当前积分
|
| | |
|
| | | public int DanLV; // 当前段位
|
| | |
|
| | | public int WinStreak; // 当前连胜数
|
| | |
|
| | | public string VsPlayerName; //对手名字
|
| | | }
|
| | |
|
| | | 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 < pkResultInfo.RoundCount; i++)
|
| | | {
|
| | | var winnerId = pkResultInfo.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(pkResultInfo.OverType != 0)
|
| | | {
|
| | | type = playerId == pkResultInfo.WinnerID ? 2 : 1;
|
| | | }
|
| | | return pkResultInfo.OverType != 0;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | |
|
| | | private void GetLocalSaveData()
|
| | | {
|
| | | localSaveResults = new List<PkResultInfo>();
|
| | | localSaveResults = new List<CrossServerPkResult>();
|
| | | string[] localJsons = LocalSave.GeStringArray(PkResultLocalSaveKey);
|
| | | if(localJsons != null)
|
| | | {
|
| | | for(int i = 0; i < localJsons.Length; i++)
|
| | | {
|
| | | PkResultInfo resultInfo = JsonMapper.ToObject<PkResultInfo>(localJsons[i]);
|
| | | CrossServerPkResult resultInfo = JsonMapper.ToObject<CrossServerPkResult>(localJsons[i]);
|
| | | localSaveResults.Add(resultInfo);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public void SetPkInfoLocalSave(PkResultInfo resultInfo)
|
| | | public void SetPkInfoLocalSave(CrossServerPkResult resultInfo)
|
| | | {
|
| | | if (localSaveResults.Count >= 30)
|
| | | {
|