Przeglądaj źródła

快速挑战自动停止

zhaoyang 3 lat temu
rodzic
commit
cf4d3fb3a7

+ 4 - 4
FGUIProject/assets/Main/StoryFightQuicklyUI.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <component size="936,1130">
-  <controller name="c1" pages="0,,1," selected="1"/>
+  <controller name="c1" pages="0,,1," selected="0"/>
   <displayList>
     <image id="n0_s2cc" name="n0" src="lwri5u" fileName="imagesExport/hc_kuang_6.png" pkg="mk0fwx0x" xy="0,0" size="936,1130" group="n19_mueb"/>
     <image id="n18_srnc" name="n18" src="ehs93" fileName="images/yx_btzs.png" pkg="eg2y0ldp" xy="33,-93" group="n19_mueb"/>
@@ -14,9 +14,9 @@
     <group id="n35_qe01" name="grpNeeditem" xy="43,140" size="850,58" group="n19_mueb" advanced="true">
       <gearDisplay controller="c1" pages="1"/>
     </group>
-    <list id="n13_s2cc" name="list" xy="20,232" size="895,681" group="n19_mueb" overflow="scroll" lineGap="10" align="center">
-      <gearXY controller="c1" pages="1" values="20,232" default="20,168"/>
-      <gearSize controller="c1" pages="1" values="895,681,1,1" default="895,745,1,1"/>
+    <list id="n13_s2cc" name="list" xy="20,153" size="895,760" group="n19_mueb" overflow="scroll" lineGap="10" align="center">
+      <gearXY controller="c1" pages="0,1" values="20,153|20,232"/>
+      <gearSize controller="c1" pages="0,1" values="895,760,1,1|895,681,1,1"/>
       <relation target="" sidePair="bottomext-bottom"/>
     </list>
     <text id="n15_s2cc" name="txtPowerDesc" xy="613,1080" size="170,42" group="n19_mueb" fontSize="30" color="#c1aa8f" align="center" vars="true" autoSize="none" text="消耗体力{v1=60}"/>

+ 25 - 18
GameClient/Assets/Game/HotUpdate/ServerProxy/InstanceZonesSProxy.cs

@@ -127,7 +127,7 @@ namespace GFGGame
         }
 
         //快速完成关卡战斗
-        public static async ETTask FinishStoryFightQuickly(int levelCfgId, int times)
+        public static async ETTask<List<ItemData>> FinishStoryFightQuickly(int levelCfgId, int times)
         {
             M2C_FinishInstanceZonesFightQuickly response = null;
             response = (M2C_FinishInstanceZonesFightQuickly)await MessageHelper.SendToServer(new C2M_FinishInstanceZonesFightQuickly()
@@ -146,27 +146,34 @@ namespace GFGGame
                         var itemData = ItemUtil.createItemData(proto.ConfigId, proto.Count);
                         allList.Add(itemData);
                     }
-                    var index = 0;
-                    for (int i = 0; i < response.BonusLengths.Count; ++i)
+                    var baseBonusList = StoryBonusDataCache.GetBaseBonusList(response.LevelCfgId);
+                    if (baseBonusList != null)
                     {
-                        var len = response.BonusLengths[i];
-
-                        var baseBonusList = StoryBonusDataCache.GetBaseBonusList(response.LevelCfgId);
-                        List<ItemData> bonusList = new List<ItemData>();
-                        if (baseBonusList != null)
-                        {
-                            bonusList.AddRange(baseBonusList);
-                        }
-                        if (len > 0)
-                        {
-                            bonusList.AddRange(allList.GetRange(index, len));
-                        }
-                        bonusLists.Add(bonusList);
-                        index += len;
+                        allList.AddRange(baseBonusList);
                     }
-                    EventAgent.DispatchEvent(ConstMessage.STORY_FIGHT_QUICKLY_SUCCESS, bonusLists);
+                    // var index = 0;
+                    // for (int i = 0; i < response.BonusLengths.Count; ++i)
+                    // {
+                    //     var len = response.BonusLengths[i];
+
+                    //     var baseBonusList = StoryBonusDataCache.GetBaseBonusList(response.LevelCfgId);
+                    //     List<ItemData> bonusList = new List<ItemData>();
+                    //     if (baseBonusList != null)
+                    //     {
+                    //         bonusList.AddRange(baseBonusList);
+                    //     }
+                    //     if (len > 0)
+                    //     {
+                    //         bonusList.AddRange(allList.GetRange(index, len));
+                    //     }
+                    //     bonusLists.Add(bonusList);
+                    //     index += len;
+                    // }
+                    return allList;
+                    // EventAgent.DispatchEvent(ConstMessage.STORY_FIGHT_QUICKLY_SUCCESS, bonusLists);
                 }
             }
+            return null;
         }
     }
 }

+ 75 - 53
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryFightQuicklyView.cs

@@ -17,7 +17,7 @@ namespace GFGGame
         private int _needItemId;
         private int _needItemCount;
 
-        private List<List<ItemData>> _totalBonusList;
+        private List<ItemData> _bonusList;
         private int _index;
         private int _expAdd;
         private int _power;
@@ -47,7 +47,7 @@ namespace GFGGame
         {
             base.AddEventListener();
             EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateBtnFightTimes);
-            EventAgent.AddEventListener(ConstMessage.STORY_FIGHT_QUICKLY_SUCCESS, StartShowBonus);
+            // EventAgent.AddEventListener(ConstMessage.STORY_FIGHT_QUICKLY_SUCCESS, StartShowBonus);
         }
         protected override void OnShown()
         {
@@ -72,6 +72,9 @@ namespace GFGGame
                     break;
             }
             _ui.m_txtName.text = title;
+
+            _ui.m_c1.selectedIndex = _needItemId <= 0 || _needItemCount <= 0 || ItemDataManager.GetItemNum(_needItemId) >= _needItemCount ? 0 : 1;
+
             updateNeedItem();
             StartFight();
 
@@ -80,7 +83,7 @@ namespace GFGGame
         protected override void OnHide()
         {
             base.OnHide();
-            Timers.inst.Remove(ShowBonusItem);
+            // Timers.inst.Remove(ShowBonusItem);
             ViewManager.GoBackFrom(typeof(StoryFightQuicklyView).Name);
             InstanceZonesDataManager.isQuicklyFighting = false;
 
@@ -89,13 +92,13 @@ namespace GFGGame
         {
             base.RemoveEventListener();
             EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateBtnFightTimes);
-            EventAgent.RemoveEventListener(ConstMessage.STORY_FIGHT_QUICKLY_SUCCESS, StartShowBonus);
+            // EventAgent.RemoveEventListener(ConstMessage.STORY_FIGHT_QUICKLY_SUCCESS, StartShowBonus);
         }
 
         private void StartFight()
         {
-            InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title);
-            if (times == 0)
+            InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out _fightTimes, out string title);
+            if (_fightTimes == 0)
             {
                 StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID);
 
@@ -123,64 +126,80 @@ namespace GFGGame
 
             // _ui.m_t0.Play(() =>
             // {
+            _fightTimes = _fightType == 1 ? 1 : _fightTimes;
             _ui.m_btnExit.visible = false;
             _ui.m_btnFightTimes.visible = false;
             _ui.m_txtPowerDesc.visible = false;
             _ui.m_list.RemoveChildren();
             InstanceZonesDataManager.isQuicklyFighting = true;
-            InstanceZonesSProxy.FinishStoryFightQuickly(_levelID, _fightType == 1 ? 1 : times).Coroutine();
+            // InstanceZonesSProxy.FinishStoryFightQuickly(_levelID, _fightType == 1 ? 1 : times).Coroutine();
+            _index = 0;
+
+            ReqFightQuickly(null);
             this.clickBlankToClose = true;
             // });
         }
-
-        private void StartShowBonus(EventContext eventContext)
-        {
-            _totalBonusList = (List<List<ItemData>>)eventContext.data;
-            _index = 0;
-            ShowBonusItem();
-            Timers.inst.Add(0.3f, 0, ShowBonusItem);
-        }
-
-        private void ShowBonusItem(object param = null)
+        private async void ReqFightQuickly(object param)
         {
-            if (_index < _totalBonusList.Count)
+            bool isFinish = _needItemId > 0 && _needItemCount > 0 && ItemDataManager.GetItemNum(_needItemId) >= _needItemCount;
+            if (_index >= _fightTimes || isFinish)
             {
-                List<ItemData> bonusList = _totalBonusList[_index] as List<ItemData>;
-                UI_StoryFightQuicklyBonusListItem listItem = UI_StoryFightQuicklyBonusListItem.Proxy();
-                listItem.m_list.itemRenderer = ListItemRender;
-
-                _ui.m_list.AddChild(listItem.target);
-                int order = _index + 1;
-                listItem.m_txtTimes.SetVar("n", "" + NumberUtil.GetChiniseNumberText(order)).FlushVars();
-                listItem.m_txtExp.SetVar("n", "" + _expAdd).FlushVars();
-                listItem.m_list.numItems = bonusList.Count;
-                listItem.m_list.ResizeToFit();
-                listItem.target.height = listItem.m_list.y + listItem.m_list.height;
-                _index++;
-                UI_StoryFightQuicklyBonusListItem.ProxyEnd();
-
+                if (isFinish)
+                {
+                    PromptController.Instance.ShowFloatTextPrompt("材料已足够");
+                }
+                ShowEnding();
             }
             else
             {
-                UI_StoryFightQuicklyComplete completeItem = UI_StoryFightQuicklyComplete.Proxy();
-                _ui.m_list.AddChild(completeItem.target);
-                UI_StoryFightQuicklyComplete.ProxyEnd();
-                Timers.inst.Remove(ShowBonusItem);
-                InstanceZonesDataManager.isQuicklyFighting = false;
-
-                _ui.m_btnExit.visible = true;
-                UpdateBtnFightTimes();
-                updateNeedItem();
+                List<ItemData> result = await InstanceZonesSProxy.FinishStoryFightQuickly(_levelID, 1);
+                ET.Log.Debug("result:" + result.Count);
+                if (result != null)
+                {
+                    _bonusList = result;
+                    ShowBonusItem();
+                    _index++;
+                    Timers.inst.Add(0.3f, 1, ReqFightQuickly);
+                }
             }
-            _ui.m_list.ScrollToView(_index - 1, true);
 
-            //.ScrollBottom();
+        }
+
+        private void ShowBonusItem()
+        {
+
+            UI_StoryFightQuicklyBonusListItem listItem = UI_StoryFightQuicklyBonusListItem.Proxy();
+            _ui.m_list.AddChild(listItem.target);
+            listItem.m_list.itemRenderer = ListItemRender;
+            listItem.m_txtTimes.SetVar("n", "" + NumberUtil.GetChiniseNumberText(_index + 1)).FlushVars();
+            listItem.m_txtExp.SetVar("n", "" + _expAdd).FlushVars();
+            listItem.m_list.numItems = _bonusList.Count;
+            listItem.m_list.ResizeToFit();
+            listItem.target.height = listItem.m_list.y + listItem.m_list.height;
+            UI_StoryFightQuicklyBonusListItem.ProxyEnd();
+
+            _ui.m_list.ScrollToView(_index, true);
+
+        }
+        private void ShowEnding()
+        {
+            UI_StoryFightQuicklyComplete completeItem = UI_StoryFightQuicklyComplete.Proxy();
+            _ui.m_list.AddChild(completeItem.target);
+            UI_StoryFightQuicklyComplete.ProxyEnd();
+
+            InstanceZonesDataManager.isQuicklyFighting = false;
+
+            _ui.m_btnExit.visible = true;
+            _ui.m_list.ScrollToView(_index, true);
+            UpdateBtnFightTimes();
+            updateNeedItem();
+            _index = 0;
+
         }
 
         private void ListItemRender(int index, GObject item)
         {
-            List<ItemData> bonusList = _totalBonusList[_index] as List<ItemData>;
-            ItemData itemData = bonusList[index] as ItemData;
+            ItemData itemData = _bonusList[index] as ItemData;
             if (item.data == null)
             {
                 item.data = new ItemView(item as GComponent);
@@ -195,30 +214,33 @@ namespace GFGGame
             {
                 StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(_levelID);
 
-                InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out int times, out string title);
+                InstanceZonesDataManager.GetCanFightTime(_type, _storyType, _levelID, out _fightTimes, out string title);
                 _ui.m_btnFightTimes.title = _fightType == 1 ? "挑战一次" : title;
-                _ui.m_btnFightTimes.visible = times > 0;
+                _ui.m_btnFightTimes.visible = _fightTimes > 0;
 
                 _ui.m_txtPowerDesc.visible = _ui.m_btnFightTimes.visible;
                 if (_ui.m_txtPowerDesc.visible)
                 {
-                    int power = times * levelCfg.power;
+                    int power = _fightTimes * levelCfg.power;
                     _ui.m_txtPowerDesc.SetVar("v1", "" + power).FlushVars();
                 }
+                _fightTimes = _fightType == 1 ? 1 : _fightTimes;
             }
         }
 
         private void updateNeedItem()
         {
-            if (_needItemId <= 0 || _needItemCount <= 0)
+
+            bool isFinish = _needItemId > 0 && _needItemCount > 0 && ItemDataManager.GetItemNum(_needItemId) >= _needItemCount;
+            if (isFinish)
             {
-                _ui.m_c1.selectedIndex = 0;
-                return;
+                _needItemCount = 0;
             }
-            _ui.m_c1.selectedIndex = 1;
+            if (_ui.m_c1.selectedIndex == 0) return;
+
             _ui.m_txtItemName.text = string.Format("目标道具:{0}", ItemCfgArray.Instance.GetCfg(_needItemId).name);
             int hasCount = ItemDataManager.GetItemNum(_needItemId);
-            _ui.m_txtItemNeedNum.text = string.Format("还需:{0}个", Math.Max(0, _needItemCount - hasCount));
+            _ui.m_txtItemNeedNum.text = (_needItemCount - hasCount) <= 0 ? "材料已足够" : string.Format("还需:{0}个", Math.Max(0, _needItemCount - hasCount));
         }
     }
 }