少年修仙传客户端代码仓库
Client_PangDeRong
2018-12-19 f48909e1d7d0956abb833a315a56d6f1242f2a93
5398  【前端】【1.4】跨服竞技场开发
5个文件已修改
119 ■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC003_tagGCCrossRealmPKOverInfo.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerArenaWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerModel.cs 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerWin.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -197,6 +197,9 @@
        Register(typeof(HB207_tagMCHelpBattleList), typeof(DTCB207_tagMCHelpBattleList));
        Register(typeof(HB208_tagMCAddXianyuanCoinMsg), typeof(DTCB208_tagMCAddXianyuanCoinMsg));
        Register(typeof(HB211_tagMCHelpBattleRecordList), typeof(DTCB211_tagMCHelpBattleRecordList));
        Register(typeof(HC001_tagGCCrossRealmPKMatchOK), typeof(DTCC001_tagGCCrossRealmPKMatchOK));
        Register(typeof(HC002_tagGCCrossRealmPKStartMatch), typeof(DTCC002_tagGCCrossRealmPKStartMatch));
        Register(typeof(HC003_tagGCCrossRealmPKOverInfo), typeof(DTCC003_tagGCCrossRealmPKOverInfo));
        #region 背包
        Register(typeof(H0724_tagRolePackCanUseCount), typeof(DTC0724_tagRolePackCanUseCount));
Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC003_tagGCCrossRealmPKOverInfo.cs
@@ -1,11 +1,13 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// C0 03 跨服PK战斗结果 #tagGCCrossRealmPKOverInfo
public class DTCC003_tagGCCrossRealmPKOverInfo : DtcBasic {
    CrossServerModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerModel>(); } }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HC003_tagGCCrossRealmPKOverInfo vNetData = vNetPack as HC003_tagGCCrossRealmPKOverInfo;
        HC003_tagGCCrossRealmPKOverInfo vNetData = vNetPack as HC003_tagGCCrossRealmPKOverInfo;         crossServerModel.UpdatePKResultInfo(vNetData);
    }
}
System/CrossServerOneVsOne/CrossServerArenaWin.cs
@@ -122,6 +122,7 @@
        private void ClickMatch()
        {
            CloseImmediately();
            crossServerModel.SendCrossMatch(1);
            crossServerRewardModel.IsOpenMatch = true;
            crossServerRewardModel.ResetTime();
            WindowCenter.Instance.Open<MatchWin>();
System/CrossServerOneVsOne/CrossServerModel.cs
@@ -18,7 +18,7 @@
        public void OnBeforePlayerDataInitialize()
        {
            ResetData();
            InitData();
        }
        public void OnAfterPlayerDataInitialize()
@@ -36,10 +36,24 @@
        }
        private void InitData()
        {
            curWinRate = 0;
            sumBattleNum = 0;
            dayMatchNum = 0;
            alreadyBuyNum = 0;
            pkResultInfo = new PkResultInfo();
        }
        public bool TryGetMaxRank(out int upScore)
        {
            var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(curRank);
            upScore = arenaConfig.LVUpScore;
            upScore = 0;
            if (pkResultInfo == null) return false;
            var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(pkResultInfo.DanLV);
            if(arenaConfig != null)
            {
                upScore = arenaConfig.LVUpScore;
            }
            return upScore == 0;
        }
@@ -200,24 +214,83 @@
        #endregion
        #region 协议
        public int curRank { get; private set; } //当前段位
        public int curScore { get; private set; } //当前积分
        public int curWinRate { get; private set; } //当前胜率
        public int sumBattleNum { get; private set; } //对战总场数
        public int dayMatchNum { get; private set; } //今日匹配次数
        public int alreadyBuyNum { get; private set;} //今日购买匹配次数
        #endregion
        private void ResetData()
        public PkResultInfo pkResultInfo { get; private set;}
        public event Action UpdatePkResultEvent;
        public void UpdatePKResultInfo(HC003_tagGCCrossRealmPKOverInfo pKOverInfo)
        {
            curRank = 0;
            curScore = 0;
            curWinRate = 0;
            sumBattleNum = 0;
            dayMatchNum = 0;
            alreadyBuyNum = 0;
            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;
            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>
        ///0-取消匹配; 1-进行匹配
        /// </summary>
        /// <param name="type"></param>
        public void SendCrossMatch(int type)
        {
            CC101_tagCMCrossRealmPKMatch match = new CC101_tagCMCrossRealmPKMatch();
            match.Type = (byte)type;
            GameNetSystem.Instance.SendInfo(match);
        }
        #endregion
        #region 红点
        #endregion
System/CrossServerOneVsOne/CrossServerWin.cs
@@ -85,20 +85,20 @@
            scoreSlider.maxValue = 1;
            UpdateScore();
            var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(crossServerModel.curRank);
            var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(crossServerModel.pkResultInfo.DanLV);
            rankText.text = arenaConfig.Name;
        }
        private void UpdateScore()
        {
            curScoreText.text = crossServerModel.curScore.ToString();
            curScoreText.text = crossServerModel.pkResultInfo.CurScore.ToString();
            int maxScore = 0;
            bool isMaxRank = crossServerModel.TryGetMaxRank(out maxScore);
            if (!isMaxRank)
            {
                scorePerText.text = StringUtility.Contact(crossServerModel.curScore, "/", maxScore);
                scoreSlider.value = (float)crossServerModel.curScore / maxScore;
                scorePerText.text = StringUtility.Contact(crossServerModel.pkResultInfo.CurScore, "/", maxScore);
                scoreSlider.value = (float)crossServerModel.pkResultInfo.CurScore / maxScore;
            }
        }