zhaoyang %!s(int64=2) %!d(string=hai) anos
pai
achega
9c301d988d

+ 8 - 0
GameClient/Assets/Game/HotUpdate/Data/ArenaDataManager.cs

@@ -35,6 +35,14 @@ namespace GFGGame
 
         /*************************************************************************************************************************************/
 
+        public int LastGrade;//战斗前段位
+        public int LastRank;//战斗前排行
+        public OtherRoleInfoData LastTargetInfo = new OtherRoleInfoData();//战斗对手角色信息
+        public int RewardId;//段位提升奖励
+        public List<ItemData> BonusList;//战斗结算奖励
+
+        /*************************************************************************************************************************************/
+
         /// <summary>
         /// 是否快速挑战
         /// </summary>

+ 8 - 24
GameClient/Assets/Game/HotUpdate/ServerProxy/ArenaSproxy.cs

@@ -166,12 +166,15 @@ namespace GFGGame
             {
                 if (response.Error != ErrorCode.ERR_Success)
                 {
-                    int lastGrade = ArenaDataManager.Instance.Grade;
-                    int lastRank = ArenaDataManager.Instance.Rank;
-                    string targetName = targetData.RoleInfo.roleName;
-                    int targetHeadId = targetData.RoleInfo.headId;
-                    string headRes = targetData.RoleInfo.headRes;
+                    //记录老数据,用于结算展示
+                    ArenaDataManager.Instance.LastGrade = ArenaDataManager.Instance.Grade;
+                    ArenaDataManager.Instance.LastRank = ArenaDataManager.Instance.Rank;
+                    ArenaDataManager.Instance.LastTargetInfo.roleName = targetData.RoleInfo.roleName;
+                    ArenaDataManager.Instance.LastTargetInfo.headId = targetData.RoleInfo.headId;
+                    ArenaDataManager.Instance.LastTargetInfo.headRes = targetData.RoleInfo.headRes;
+                    ArenaDataManager.Instance.BonusList = ItemUtil.CreateItemDataList(response.rewards);
 
+                    //更新新数据
                     ArenaDataManager.Instance.Targets.Clear();
                     for (int i = 0; i < response.targets.Count; i++)
                     {
@@ -181,26 +184,7 @@ namespace GFGGame
                     ArenaDataManager.Instance.Grade = response.Grade;
                     ArenaDataManager.Instance.Rank = response.RankInGrade;
                     ArenaDataManager.Instance.TryUpdateHighest();
-                    List<ItemData> bonusList = ItemUtil.CreateItemDataList(response.rewards);
 
-                    if (response.Grade > ArenaDataManager.Instance.Grade)
-                    {
-                        BonusController.TryShowBonusList(bonusList, () =>
-                        {
-                            ViewManager.Show<ArenaDanUpView>(new object[] { lastGrade, ArenaDataManager.Instance.Grade, response.RewardId });
-                        });
-                    }
-                    else if (response.RankInGrade > ArenaDataManager.Instance.Rank)
-                    {
-                        BonusController.TryShowBonusList(bonusList, () =>
-                        {
-                            ViewManager.Show<ArenaRankUpView>(new object[] { lastGrade, lastRank, targetHeadId, headRes, targetName });
-                        });
-                    }
-                    else
-                    {
-                        BonusController.TryShowBonusList(bonusList);
-                    }
                     EventAgent.DispatchEvent(ConstMessage.ARENA_FIGHT_RESULT);
 
                     return true;

+ 19 - 2
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaResultQuickView.cs

@@ -80,8 +80,25 @@ namespace GFGGame
         private void FinishFight()
         {
             ArenaDataManager dataManager = ArenaDataManager.Instance;
-            ArenaTargetData targetData = dataManager.Targets[dataManager.SelectTargetIndex];
-            ArenaSproxy.ReqArenaFight(_winCount >= 2, targetData, dataManager.myFightScore, dataManager.targetFightScore, dataManager.myScore, dataManager.targetScore).Coroutine();
+
+            if (dataManager.Grade > dataManager.LastGrade)
+            {
+                BonusController.TryShowBonusList(dataManager.BonusList, () =>
+                {
+                    ViewManager.Show<ArenaDanUpView>(new object[] { dataManager.LastGrade, ArenaDataManager.Instance.Grade, dataManager.RewardId });
+                });
+            }
+            else if (dataManager.Rank > ArenaDataManager.Instance.LastRank)
+            {
+                BonusController.TryShowBonusList(dataManager.BonusList, () =>
+                {
+                    ViewManager.Show<ArenaRankUpView>(new object[] { dataManager.LastGrade, dataManager.LastRank, dataManager.LastTargetInfo.headId, dataManager.LastTargetInfo.headRes, dataManager.LastTargetInfo.roleName });
+                });
+            }
+            else
+            {
+                BonusController.TryShowBonusList(dataManager.BonusList);
+            }
         }
     }
 }

+ 20 - 4
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaResultView.cs

@@ -70,7 +70,7 @@ namespace GFGGame
 
             if (isFinallyFight)
             {
-                FinishFightAsync();
+                FinishFight();
             }
         }
 
@@ -98,11 +98,27 @@ namespace GFGGame
                 ViewManager.Show<StoryFightTargetScoreView>(new object[] { targetData.Type, FightDataManager.Instance.roleData, null, targetData.RobotDressupList[_dataManager.CurFightIndex] }, null, true);
             }
         }
-        private void FinishFightAsync()
+        private void FinishFight()
         {
             ArenaDataManager dataManager = ArenaDataManager.Instance;
-            ArenaTargetData targetData = dataManager.Targets[dataManager.SelectTargetIndex];
-            ArenaSproxy.ReqArenaFight(winCount >= 2, targetData, dataManager.myFightScore, dataManager.targetFightScore, dataManager.myScore, dataManager.targetScore).Coroutine();
+            if (dataManager.Grade > dataManager.LastGrade)
+            {
+                BonusController.TryShowBonusList(dataManager.BonusList, () =>
+                {
+                    ViewManager.Show<ArenaDanUpView>(new object[] { dataManager.LastGrade, ArenaDataManager.Instance.Grade, dataManager.RewardId });
+                });
+            }
+            else if (dataManager.Rank > ArenaDataManager.Instance.LastRank)
+            {
+                BonusController.TryShowBonusList(dataManager.BonusList, () =>
+                {
+                    ViewManager.Show<ArenaRankUpView>(new object[] { dataManager.LastGrade, dataManager.LastRank, dataManager.LastTargetInfo.headId, dataManager.LastTargetInfo.headRes, dataManager.LastTargetInfo.roleName });
+                });
+            }
+            else
+            {
+                BonusController.TryShowBonusList(dataManager.BonusList);
+            }
         }
     }
 }

+ 48 - 36
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaView.cs

@@ -83,14 +83,14 @@ namespace GFGGame
             _arenaCfg = ArenaOpenCfgArray.Instance.GetCfg(ArenaDataManager.Instance.SeasonId);
 
             _valueBarController.OnShown();
-            // for (int i = 0; i < ArenaDataManager.Instance.Targets.Count; i++)
-            // {
-            //     ArenaTargetData targetData = ArenaDataManager.Instance.Targets[i];
-            //     if (targetData.Type == ArenaFightTargetType.PLAYER)
-            //     {
-            //         await ArenaSproxy.ReqArenaFightAttr(targetData.RoleInfo.roleId, targetData.RoleDressupList);
-            //     }
-            // }
+            for (int i = 0; i < ArenaDataManager.Instance.Targets.Count; i++)
+            {
+                ArenaTargetData targetData = ArenaDataManager.Instance.Targets[i];
+                if (targetData.Type == ArenaFightTargetType.PLAYER)
+                {
+                    await ArenaSproxy.ReqArenaFightAttr(targetData.RoleInfo.roleId, targetData.RoleDressupList);
+                }
+            }
 
             InstanceZonesDataManager.FightScene = ConstInstanceZonesType.Arena;
             if (_targetData == null)
@@ -196,53 +196,65 @@ namespace GFGGame
 
         private async void OnBtnFightClick()
         {
-            bool result = await ArenaSproxy.ReqCheckArenaFight();
-            if (!result)
-            {
-                UpdateView();
-                return;
-            }
+            // bool result = await ArenaSproxy.ReqCheckArenaFight();
+            // if (!result)
+            // {
+            //     UpdateView();
+            //     return;
+            // }
 
             List<long> selfFightPower = ArenaDataManager.Instance.GetFightScoreList(ArenaFightTargetType.PLAYER, ArenaDataManager.Instance.DressupList, null);
             List<long> targetFightPower = ArenaDataManager.Instance.GetFightScoreList(_targetData.Type, _targetData.RoleDressupList, _targetData.RobotDressupList);
 
-            if (_ui.m_btnQuickFight.selected)
-            {
-                // int winCount = 0;
 
-                List<long> myScores = new List<long>();
-                List<long> targetScores = new List<long>();
-                for (int i = 0; i < ArenaDataManager.Instance.ThemeList.Count; i++)
+            int winCount = 0;
+
+            List<long> myScores = new List<long>();
+            List<long> targetScores = new List<long>();
+            for (int i = 0; i < ArenaDataManager.Instance.ThemeList.Count; i++)
+            {
+                int score = 0;
+                int targetScore = 0;
+                if (_targetData.Type == ArenaFightTargetType.PLAYER)
+                {
+                    FightDataManager.Instance.GetQuickFightResult(FightDataManager.Instance.roleData, _targetData.Type, _targetData.RoleDressupList[i], null, out score, out targetScore);
+                }
+                else
                 {
-                    int score = 0;
-                    int targetScore = 0;
-                    if (_targetData.Type == ArenaFightTargetType.PLAYER)
-                    {
-                        FightDataManager.Instance.GetQuickFightResult(FightDataManager.Instance.roleData, _targetData.Type, _targetData.RoleDressupList[i], null, out score, out targetScore);
-                    }
-                    else
-                    {
-                        FightDataManager.Instance.GetQuickFightResult(FightDataManager.Instance.roleData, _targetData.Type, null, _targetData.RobotDressupList[i], out score, out targetScore);
-                    }
-                    myScores.Add(score);
-                    targetScores.Add(targetScore);
+                    FightDataManager.Instance.GetQuickFightResult(FightDataManager.Instance.roleData, _targetData.Type, null, _targetData.RobotDressupList[i], out score, out targetScore);
                 }
+                myScores.Add(score);
+                targetScores.Add(targetScore);
+                if (score > targetScore) winCount++;
+            }
+            ArenaDataManager.Instance.myFightScore = selfFightPower;
+            ArenaDataManager.Instance.targetFightScore = targetFightPower;
 
-                ViewManager.Show<ArenaResultQuickView>();
+            bool result = await ArenaSproxy.ReqArenaFight(winCount >= 2, _targetData, selfFightPower, targetFightPower, myScores, targetScores);
+            if (result)
+            {
+                if (_ui.m_btnQuickFight.selected)
+                {
+                    ViewManager.Show<ArenaResultQuickView>();
+                }
+                else
+                {
+                    ViewManager.Show<StoryFightTargetView>();
+                }
             }
             else
             {
-                ArenaDataManager.Instance.myFightScore = selfFightPower;
-                ArenaDataManager.Instance.targetFightScore = targetFightPower;
-                ViewManager.Show<StoryFightTargetView>();
+                UpdateView();
             }
         }
+
         private void UpdateView()
         {
             UpdateNormal();
             UpdateValue();
             UpdateTargetList();
         }
+
         private void UpdateNormal()
         {
             ItemUtil.UpdateTag(_ui.m_comTag, ArenaDataManager.Instance.Tag);

BIN=BIN
GameClient/Assets/ResIn/Config/excelConfig.sqlite.bytes