zhaoyang пре 2 година
родитељ
комит
c53b1ed0b5

+ 58 - 37
GameClient/Assets/Game/HotUpdate/ServerProxy/ArenaSproxy.cs

@@ -115,6 +115,29 @@ namespace GFGGame
                 }
             }
         }
+        //检测顽疾是否能战斗
+        public static async ETTask<bool> ReqCheckArenaFight()
+        {
+            S2C_ArenaFight response = null;
+            response = (S2C_ArenaFight)await MessageHelper.SendToServer(new C2S_ArenaFight() { });
+            if (response != null)
+            {
+                if (response.Error == ErrorCode.ERR_Success)
+                {
+                    return true;
+                }
+                else
+                {
+                    ArenaDataManager.Instance.Targets.Clear();
+                    for (int i = 0; i < response.targets.Count; i++)
+                    {
+                        ArenaDataManager.Instance.Targets.Add(GetArenaTargetData(response.targets[i]));
+                    }
+                    PromptController.Instance.ShowFloatTextPrompt("该玩家排名已经发生变化,请重新选择");
+                }
+            }
+            return false;
+        }
 
         //挑战
         public static async ETTask<bool> ReqArenaFight(bool isWin, ArenaTargetData targetData, List<long> selfFightPower, List<long> targetFightPower, List<long> myScore, List<long> targetScore)
@@ -134,51 +157,49 @@ namespace GFGGame
                 SelfRandScore = myScore,
                 TargetRandScore = targetScore,
             });
-            if (response != null && response.targets != null)
+            if (response != null)
             {
-                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.Targets.Clear();
-                for (int i = 0; i < response.targets.Count; i++)
-                {
-                    ArenaDataManager.Instance.Targets.Add(GetArenaTargetData(response.targets[i]));
-                }
-                EventAgent.DispatchEvent(ConstMessage.ARENA_FIGHT_RESULT);
-
                 if (response.Error != ErrorCode.ERR_Success)
                 {
-                    PromptController.Instance.ShowFloatTextPrompt("该玩家排名已经发生变化,请重新选择");
-                    return false;
-                }
+                    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.Targets.Clear();
+                    for (int i = 0; i < response.targets.Count; i++)
+                    {
+                        ArenaDataManager.Instance.Targets.Add(GetArenaTargetData(response.targets[i]));
+                    }
 
-                ArenaDataManager.Instance.Grade = response.Grade;
-                ArenaDataManager.Instance.Rank = response.RankInGrade;
-                ArenaDataManager.Instance.TryUpdateHighest();
-                List<ItemData> bonusList = ItemUtil.CreateItemDataList(response.rewards);
+                    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, () =>
+                    if (response.Grade > ArenaDataManager.Instance.Grade)
                     {
-                        ViewManager.Show<ArenaDanUpView>(new object[] { lastGrade, ArenaDataManager.Instance.Grade, response.RewardId });
-                    });
-                }
-                else if (response.RankInGrade > ArenaDataManager.Instance.Rank)
-                {
-                    BonusController.TryShowBonusList(bonusList, () =>
+                        BonusController.TryShowBonusList(bonusList, () =>
+                        {
+                            ViewManager.Show<ArenaDanUpView>(new object[] { lastGrade, ArenaDataManager.Instance.Grade, response.RewardId });
+                        });
+                    }
+                    else if (response.RankInGrade > ArenaDataManager.Instance.Rank)
                     {
-                        ViewManager.Show<ArenaRankUpView>(new object[] { lastGrade, lastRank, targetHeadId, headRes, targetName });
-                    });
-                }
-                else
-                {
-                    BonusController.TryShowBonusList(bonusList);
+                        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;
                 }
-                return true;
             }
             return false;
         }

+ 7 - 1
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaView.cs

@@ -183,8 +183,14 @@ namespace GFGGame
             _ui.m_c1.selectedIndex = 0;
         }
 
-        private void OnBtnFightClick()
+        private async void OnBtnFightClick()
         {
+            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);