Ver Fonte

合成补充提交

zhangyuqian há 10 meses atrás
pai
commit
c22af4ec95

+ 18 - 3
GameClient/Assets/Game/HotUpdate/Data/MiniGameDateManager.cs

@@ -2,6 +2,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using System.Text.RegularExpressions;
 using UnityEngine;
 
 namespace GFGGame
@@ -15,6 +16,8 @@ namespace GFGGame
         public Dictionary<int, int> NewItemIdDic = new Dictionary<int, int>();
         public string ItemIdVPosition = "";
         public int MergeGameType = 1;
+        //资源组的名字
+        public int MergeGameMatType = 1;
         public bool CurLevelStatus;
 
         public bool CHECK_TIPS = false; //提示弹窗是否打开
@@ -52,6 +55,7 @@ namespace GFGGame
         {
             List<List<int>> idlist = new List<List<int>>();
             int itemNum = 5;
+            int count = 0;
             for (int i = 0; i < itemNum; i++)
             {
                 idlist.Add(new List<int>());
@@ -72,8 +76,9 @@ namespace GFGGame
                             continue;
                         }
                     }
-                    idlist[i].Add(idList_CS[index]);
-                    idlist[i][j] = idList_CS[index];
+                    idlist[i].Add(idList_CS[count]);
+                    idlist[i][j] = idList_CS[count];
+                    count++;
                 }
             }
             return idlist;
@@ -87,7 +92,6 @@ namespace GFGGame
             {
                 for (int j = 0; j < itemNum; j++)
                 {
-                    idList_S.Add(idlist[i][j]);
                     //对两个按钮单独处理
                     if (i == itemNum - 1)
                     {
@@ -100,10 +104,21 @@ namespace GFGGame
                             continue;
                         }
                     }
+                    idList_S.Add(idlist[i][j]);
                 }
             }
             return idList_S;
         }
+        public List<int> GetIDListByString(string name)
+        {
+            List<int> idList = new List<int>();
+            string[] parts = Regex.Split(name, "-");
+            foreach (string id in parts)
+            {
+                idList.Add(int.Parse(id));
+            }
+            return idList;
+        }
     }
 
 }

+ 15 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/MiniGameProxy.cs

@@ -150,6 +150,7 @@ namespace GFGGame
             if (!(response is { Error: ErrorCode.ERR_Success })) return false;
             MiniGameDateManager.Instance.idList_CS = response.ShowLatticeList;
             MiniGameDateManager.Instance.CurLevelStatus = response.CurLevelStatus;
+            MiniGameDateManager.Instance.taskID = response.CurLevelId;
             BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.RewardList));
             return true;
         }
@@ -167,5 +168,19 @@ namespace GFGGame
             }
             return true;
         }
+        public static async ETTask<bool> ReqMergeGameSellBtn(int id,int index)
+        {
+            var response = (S2C_MergeGameSellingMaterials)await MessageHelper.SendToServer(new C2S_MergeGameSellingMaterials
+            {
+                SubType = MiniGameDateManager.Instance.MergeGameType,
+                ResType = MiniGameDateManager.Instance.MergeGameMatType,
+                Materialld = id,
+                Position = index
+            });
+            if (!(response is { Error: ErrorCode.ERR_Success })) return false;
+            MiniGameDateManager.Instance.idList_CS = response.ShowLatticeList;
+            BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.RewardList));
+            return true;
+        }
     }
 }

+ 119 - 67
GameClient/Assets/Game/HotUpdate/Views/MiniGame/MergeGameView.cs

@@ -14,6 +14,7 @@ namespace GFGGame
         private List<List<GComponent>> itemList = new List<List<GComponent>>();
         private GComponent guideDouBaoBtn;
         private GComponent guideAfuBtn;
+        private bool canBtn = true;
         private List<List<int>> idList = new List<List<int>>();
         private int itemNum;
         private int maxLv;
@@ -28,6 +29,7 @@ namespace GFGGame
         private float startY;
         private int indexX;
         private int indexY;
+        private float waitBtnTime = 0.6f;
 
         //当前任务id;后台获取数据
         private int taskId;
@@ -58,7 +60,7 @@ namespace GFGGame
             _ui = UI_MergeGameUI.Create();
             this.viewCom = _ui.target;
             isfullScreen = true;
-
+            isReturnView = true;
             _valueBarController = new ValueBarController(_ui.m_valueBar);
             _ui.m_backBtn.onClick.Add(Hide);
             _ui.m_rewardGet.onClick.Add(SubmitTask);
@@ -75,6 +77,8 @@ namespace GFGGame
             _valueBarController.UpdateList(new List<int>() {propID});
             //进入这个界面的时候向后台获取任务id和历史id列表
             idList = MiniGameDateManager.Instance.GetIdListToLL();
+            canBtn = true;
+            waitBtnTime = 0.7f;
             UpdateView();
             UpdateList();
             UpdateTask();
@@ -88,12 +92,15 @@ namespace GFGGame
             {
                 for (int j = 0; j < itemNum; j++)
                 {
+                    itemList[i][j].GetChild("icon").icon = "";
                     itemList[i][j].Dispose();
                     itemList[i][j] = null;
                 }
             }
             idList.Clear();
             itemList.Clear();
+            _ui.m_rangeDown.RemoveChildren();
+            Timers.inst.Remove(UpdateBtnTimer);
             base.OnHide();
         }
         protected override void AddEventListener()
@@ -104,9 +111,10 @@ namespace GFGGame
         {
             base.RemoveEventListener();
         }
-        private void UpdateData()
+        private void UpdateBtnTimer(object param)
         {
-
+            canBtn = true;
+            Timers.inst.Remove(UpdateBtnTimer);
         }
         private void UpdateView()
         {
@@ -144,14 +152,14 @@ namespace GFGGame
                         {
                             guideAfuBtn = itemList[i][j];
                             itemList[i][j].GetChild("icon").icon = "ui://MiniGame/jbnf_doubao_icon";
-                            itemList[i][j].onClick.Add(OnClickAFuBtn);
+                            itemList[i][j].onClick.Add(OnClickDouBaoBtn);
                             continue;
                         }
                         if ( j == itemNum - 1)
                         {
                             guideAfuBtn = itemList[i][j];
                             itemList[i][j].GetChild("icon").icon = "ui://MiniGame/jbnf_afu_icon";
-                            itemList[i][j].onClick.Add(OnClickDouBaoBtn);
+                            itemList[i][j].onClick.Add(OnClickAFuBtn);
                             continue;
                         }
                     }
@@ -217,7 +225,7 @@ namespace GFGGame
                 itemList[endIndexX][endIndexY].data = itemEndInfo + 1;
                 itemList[endIndexX][endIndexY].GetChild("icon").icon = ResPathUtil.GetMiniGamePicPath(MergeCfgArray.Instance.GetCfgByresTypeAndmaterialld(_res, itemEndInfo + 1).resName, "MergeGame");
                 ShowNewMaterialView(endIndexX, endIndexY);
-                 UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(itemList[endIndexX][endIndexY]);
+                UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(itemList[endIndexX][endIndexY]);
                 itemUI.m_t0.Play();
                 UI_MergeGameItemUI.ProxyEnd();
 
@@ -229,11 +237,11 @@ namespace GFGGame
                 {
                     _ui.m_rewardGet.visible = false;
                 }
-                bool result = await MiniGameProxy.ReqMergeGame(indexID, itemEndInfo, afterIDList, MiniGameDateManager.Instance.GetListByll(idList));
-                if(!result)
+
+                bool result = await MiniGameProxy.ReqMergeGame(itemEndInfo, itemEndInfo, afterIDList, MiniGameDateManager.Instance.GetListByll(idList));
+                if(result)
                 {
                     idList = MiniGameDateManager.Instance.GetIdListToLL();
-                    UpdateList();
                 }
             }
             if (itemEndInfo != indexID && itemEndInfo == 0)
@@ -249,10 +257,9 @@ namespace GFGGame
                 indexID = 0;
 
                 bool result = await MiniGameProxy.ReqMergeGame(indexID, itemEndInfo, afterIDList, MiniGameDateManager.Instance.GetListByll(idList));
-                if (!result)
+                if(result)
                 {
                     idList = MiniGameDateManager.Instance.GetIdListToLL();
-                    UpdateList();
                 }
             }
 
@@ -275,6 +282,7 @@ namespace GFGGame
 
             _ui.m_rangeTop.RemoveChild(item);
             _ui.m_rangeDown.AddChild(item);
+
         }
 
         private void OnClickItem(EventContext context)
@@ -296,30 +304,41 @@ namespace GFGGame
 
         }
 
-        private void OnClickSellBtn()
+        private async void OnClickSellBtn()
         {
             if(materialID == 0)
             {
                 return;
             }
-            //移除
-            _ui.m_name.text = "";
-            _ui.m_desc.text = "";
-            _ui.m_sellBtn.target.GetChild("sellReward").icon = "";
-            _ui.m_sellBtn.target.GetChild("sellGetNum").text = "";
-            materialID = 0;
-            idList[indexX][indexY] = 0;
-            itemList[indexX][indexY].data = 0;
-            UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(itemList[indexX][indexY]);
-            itemUI.m_t2.Play();
-            itemUI.m_t3.Play();
-            UI_MergeGameItemUI.ProxyEnd();
-            indexX = 0;
-            indexY = 0;
-            //获得奖励
+            int index = indexX * itemNum + indexY;
+            bool result = await MiniGameProxy.ReqMergeGameSellBtn(materialID, index);
+            if(result)
+            {
+                //移除
+                _ui.m_name.text = "";
+                _ui.m_desc.text = "";
+                _ui.m_sellBtn.target.GetChild("sellReward").icon = "";
+                _ui.m_sellBtn.target.GetChild("sellGetNum").text = "";
+                materialID = 0;
+                idList[indexX][indexY] = 0;
+                itemList[indexX][indexY].data = 0;
+                UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(itemList[indexX][indexY]);
+                itemUI.m_t2.Play();
+                itemUI.m_t3.Play();
+                UI_MergeGameItemUI.ProxyEnd();
+                indexX = 0;
+                indexY = 0;
+                //获得奖励
+            }
         }
         private async void OnClickAFuBtn()
         {
+            if (!canBtn)
+            {
+                return;
+            }
+            canBtn = false;
+            Timers.inst.Add(waitBtnTime, 1,UpdateBtnTimer);
             bool gameOver = false;
             for (int i = 0; i < itemNum; i++)
             {
@@ -340,29 +359,43 @@ namespace GFGGame
             bool result = await MiniGameProxy.ReqMergeGameBtn(2,taskId);
             if(result)
             {
-                int x = MatchingCompetitionDataManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[1] / itemNum;
-                int y = MatchingCompetitionDataManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[1] % itemNum;
-                int num = MatchingCompetitionDataManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[0];
-                if (idList[x][y] == 0)
-                    {
-                        idList[x][y] = num;
-                        itemList[x][y].data = num;
-                        itemList[x][y].GetChild("icon").icon = ResPathUtil.GetMiniGamePicPath(MergeCfgArray.Instance.GetCfgByresTypeAndmaterialld(_res, num).resName, "MergeGame");
-                        itemList[x][y].draggable = true;
-                        UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(itemList[x][y]);
-                        itemUI.m_t1.Play();
-                        UI_MergeGameItemUI.ProxyEnd();
-                    }
+                int x = MiniGameDateManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[1] / itemNum;
+                int y = MiniGameDateManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[1] % itemNum;
+                int num = MiniGameDateManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[0];
+                //if (idList[x][y] == 0)
+                if (x == 4 && y == 0)
+                {
+                    Debug.LogError("位置错误");
+                    return;
+                }
+                else if (x == 4 && y == 4)
+                {
+                    Debug.LogError("位置错误");
+                    return;
+                }
+                
+                idList[x][y] = num;
+                itemList[x][y].data = num;
+                itemList[x][y].GetChild("icon").icon = ResPathUtil.GetMiniGamePicPath(MergeCfgArray.Instance.GetCfgByresTypeAndmaterialld(_res, num).resName, "MergeGame");
+                itemList[x][y].draggable = true;
+                UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(itemList[x][y]);
+                itemUI.m_t1.Play();
+                UI_MergeGameItemUI.ProxyEnd();
+                    
                 idList = MiniGameDateManager.Instance.GetIdListToLL();
             }
             else
             {
-                idList = MiniGameDateManager.Instance.GetIdListToLL();
-                UpdateList();
             }
         }
         private async void OnClickDouBaoBtn()
         {
+            if(!canBtn)
+            {
+                return;
+            }
+            canBtn = false;
+            Timers.inst.Add(waitBtnTime, 1, UpdateBtnTimer);
             bool gameOver = false;
             for (int i = 0; i < itemNum; i++)
             {
@@ -383,25 +416,33 @@ namespace GFGGame
             bool result = await MiniGameProxy.ReqMergeGameBtn(1,taskId);
             if (result)
             {
-                int x = MatchingCompetitionDataManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[1] / itemNum;
-                int y = MatchingCompetitionDataManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[1] % itemNum;
-                int num = MatchingCompetitionDataManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[0];
-                if (idList[x][y] == 0)
-                    {
-                        idList[x][y] = num;
-                        itemList[x][y].data = num;
-                        itemList[x][y].draggable = true;
-                        itemList[x][y].GetChild("icon").icon = ResPathUtil.GetMiniGamePicPath(MergeCfgArray.Instance.GetCfgByresTypeAndmaterialld(_res, num).resName, "MergeGame");
-                        UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(itemList[x][y]);
-                        itemUI.m_t1.Play();
-                        UI_MergeGameItemUI.ProxyEnd();
-                    }
+                int x = MiniGameDateManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[1] / itemNum;
+                int y = MiniGameDateManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[1] % itemNum;
+                int num = MiniGameDateManager.Instance.GetIDListByString(MiniGameDateManager.Instance.ItemIdVPosition)[0];
+                //if (idList[x][y] == 0)
+                if(x == 4 && y == 0)
+                {
+                    Debug.LogError("位置错误");
+                    return;
+                }
+                else if(x== 4 && y== 4)
+                {
+                    Debug.LogError("位置错误");
+                    return;
+                }
+                    
+                idList[x][y] = num;
+                itemList[x][y].data = num;
+                itemList[x][y].draggable = true;
+                itemList[x][y].GetChild("icon").icon = ResPathUtil.GetMiniGamePicPath(MergeCfgArray.Instance.GetCfgByresTypeAndmaterialld(_res, num).resName, "MergeGame");
+                UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(itemList[x][y]);
+                itemUI.m_t1.Play();
+                UI_MergeGameItemUI.ProxyEnd();
+                    
                 idList = MiniGameDateManager.Instance.GetIdListToLL();
             }
             else
             {
-                idList = MiniGameDateManager.Instance.GetIdListToLL();
-                UpdateList();
             }
         }
 
@@ -454,6 +495,24 @@ namespace GFGGame
             _ui.m_desc.text = "";
             materialID = 0;
         }
+        private void UpdateShowList()
+        {
+            for (int i = 0; i < itemNum; i++)
+            {
+                for (int j = 0; j < itemNum; j++)
+                {
+                    itemList[i][j].data = idList[i][j];
+                    if (idList[i][j] == 0)
+                    {
+                        itemList[i][j].GetChild("icon").icon = "";
+                    }
+                    else if (idList[i][j] > 0)
+                    {
+                        itemList[i][j].GetChild("icon").icon = ResPathUtil.GetMiniGamePicPath(MergeCfgArray.Instance.GetCfgByresTypeAndmaterialld(_res, idList[i][j]).resName, "MergeGame");
+                    }
+                }
+            }
+        }
         //提交任务
         private async void SubmitTask()
         {
@@ -493,11 +552,10 @@ namespace GFGGame
                 taskId = MiniGameDateManager.Instance.taskID;
                 idList = MiniGameDateManager.Instance.GetIdListToLL();
                 UpdateTask();
-                UpdateList();
+                UpdateShowList();
             }
             else
             {
-                Debug.LogError("489有问题");
             }
         }
         //检查是否达到提交要求
@@ -543,19 +601,13 @@ namespace GFGGame
             //判断是否是新材料。再显示
             if(MiniGameDateManager.Instance.NewItemIdDic.ContainsKey(idList[i][j]))
             {
-                if(MiniGameDateManager.Instance.NewItemIdDic[idList[i][j]]!= 1)
-                {
-                    return;
-                }
+                return;
             }
             _ui.m_newMaterial.target.x = itemList[i][j].x + _ui.m_rangeDown.x;
             _ui.m_newMaterial.target.y = itemList[i][j].y + _ui.m_rangeDown.y;
             _ui.m_newMaterial.target.visible = true;
             _ui.m_newMaterial.target.GetChild("icon").icon = ResPathUtil.GetMiniGamePicPath(MergeCfgArray.Instance.GetCfgByresTypeAndmaterialld(_res, idList[i][j]).resName,"MergeGame");
-            UI_MergeGameItemUI itemUI = UI_MergeGameItemUI.Proxy(_ui.m_newMaterial.target);
-            itemUI.m_t0.Play();
-            UI_MergeGameItemUI.ProxyEnd();
-           
+            _ui.m_newMaterial.m_t0.Play();         
         }
         private void OnClickHideTips()
         {

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/OpenServerActivity/OpenServerActivityView.cs

@@ -152,7 +152,7 @@ namespace GFGGame
         {
             //小游戏入口
             if (JudgeActivityExpire())
-                ViewManager.Show<GameStartView>();
+                ViewManager.Show<MergeGameView>();
         }
 
         private void OnClickBtnMingTong()

BIN
GameClient/Assets/ResIn/UI/LuckyBox/LuckyBox_fui.bytes