少年修仙传客户端代码仓库
Client_PangDeRong
2018-12-20 21bf9f76f0c9351450150551007038e2d35f93ea
System/CrossServerOneVsOne/CrossServerModel.cs
@@ -12,7 +12,7 @@
    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()
        {
@@ -43,41 +43,8 @@
        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>();
@@ -234,88 +201,17 @@
        #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>
@@ -334,19 +230,19 @@
    
        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)
            {