Bladeren bron

自选礼包功能优化以及修复bug

hexiaojie 2 jaren geleden
bovenliggende
commit
dedbaa45b3

+ 1 - 1
FGUIProject/assets/Bag/components/ListSelectorItem.xml

@@ -2,7 +2,7 @@
 <component size="172,255" overflow="hidden">
   <displayList>
     <image id="n2_v5no" name="n2" src="v5notmc" fileName="images/db_jiajian_1.png" xy="24,203"/>
-    <text id="n21_l6ko" name="txtSelNum" xy="57,200" size="60,53" font="ui://eg2y0ldpa0cftkx" fontSize="39" color="#915e15" align="center" vAlign="middle" autoSize="shrink" text="100" input="true" maxLength="3" keyboardType="4"/>
+    <text id="n21_l6ko" name="txtSelNum" xy="57,200" size="60,53" font="ui://eg2y0ldpa0cftkx" fontSize="39" color="#915e15" align="center" vAlign="middle" autoSize="shrink" text="100" input="true" maxLength="3" restrict="[0-9]"/>
     <component id="n15_cu9w" name="btnReduce" src="cu9wtmf" fileName="components/BtnReduce.xml" xy="0,202"/>
     <component id="n16_cu9w" name="btnAdd" src="cu9wtmg" fileName="components/BtnAdd.xml" xy="122,203"/>
     <image id="n0_v5no" name="n0" src="m5qxtmy" fileName="images/wpk_db.png" xy="0,1" group="n20_yjmk"/>

+ 28 - 19
GameClient/Assets/Game/HotUpdate/Views/Bag/GiftBoxSelectorView.cs

@@ -102,12 +102,12 @@ namespace GFGGame
 
         private void AddEffect()
         {
-            //框左上角特效
+            //框左上角特效
             string resPath1 = ResPathUtil.GetViewEffectPath("ui_Activity", "Com_window_L_up");
             SceneController.AddObjectToView(null, null, _ui.m_holderLeftTop, resPath1,
                 out _gameObject1, out _wrapper1);
 
-            //框右下角特效
+            //框右下角特效
             string resPath2 = ResPathUtil.GetViewEffectPath("ui_Activity", "Com_window_R_Down");
             SceneController.AddObjectToView(null, null, _ui.m_holderRightDowm, resPath2,
                 out _gameObject2, out _wrapper2);
@@ -145,7 +145,7 @@ namespace GFGGame
             uiItemChild.m_loaIcon.onClick.Add(OnListSelectorItemClick);
             uiItemChild.m_txtNum.text = itemChildArr[1].ToString();
             uiItemChild.m_txtSelNum.text = "0";
-            uiItemChild.m_txtSelNum.onChanged.Add(OnChangedTxtSelNum);
+            uiItemChild.m_txtSelNum.onFocusOut.Add(OnChangedTxtSelNum);
             uiItemChild.m_btnAdd.onClick.Add(OnBtnAddClick);
             uiItemChild.m_btnReduce.onClick.Add(OnChildBtnReduceClick);
 
@@ -310,23 +310,29 @@ namespace GFGGame
             _selDic.TryGetValue(itemCfg.id, out var snumx);
             var snum = _selCount - snumx + txtSelNum;
 
+            //输入的数量大于剩余闲置的量,就设置成最大闲置的量
             if (snum > _count)
             {
-                _selDic.TryGetValue(itemCfg.id, out var numx);
-                listItem.m_txtSelNum.text = numx.ToString();
-
-                return;
-            }
-
-            if (_selDic.TryGetValue(itemCfg.id, out int num))
-            {
-                _selDic[itemCfg.id] = txtSelNum;
+                //其他选择的量
+                var otherNum = _selDic.Where(a => a.Key != itemCfg.id).Select(a => a.Value).Sum();
+                //物品总量-其他物品选择的量=当前物品最大可以选择的量
+                var curSelTotalCount = _count - otherNum;
+                listItem.m_txtSelNum.text = curSelTotalCount.ToString();
+                _selDic[itemCfg.id] = curSelTotalCount;
                 _selCount = _selDic.Values.Sum();
             }
             else
             {
-                _selDic[itemCfg.id] = txtSelNum;
-                _selCount = _selDic.Values.Sum();
+                if (_selDic.TryGetValue(itemCfg.id, out int num))
+                {
+                    _selDic[itemCfg.id] = txtSelNum;
+                    _selCount = _selDic.Values.Sum();
+                }
+                else
+                {
+                    _selDic[itemCfg.id] = txtSelNum;
+                    _selCount = _selDic.Values.Sum();
+                }
             }
 
             SetSelAllNum();
@@ -355,16 +361,19 @@ namespace GFGGame
         private void OnBtnSubClick()
         {
             List<GiftBoxSelChildItemProto> reqItemList = new List<GiftBoxSelChildItemProto>();
-
+            _selDic = _selDic.Where(pair => pair.Value != 0).ToDictionary(pair => pair.Key, pair => pair.Value);
             if (_selDic.Keys.Count > 0)
             {
                 foreach (var itemKv in _selDic)
                 {
-                    reqItemList.Add(new GiftBoxSelChildItemProto
+                    if (itemKv.Value != 0)
                     {
-                        ChildItemId = itemKv.Key,
-                        ChildItemCount = itemKv.Value
-                    });
+                        reqItemList.Add(new GiftBoxSelChildItemProto
+                        {
+                            ChildItemId = itemKv.Key,
+                            ChildItemCount = itemKv.Value
+                        });
+                    }
                 }
 
                 ItemProxy.ReqUseGiftBoxSelItem(_itemId, reqItemList).Coroutine();

BIN
GameClient/Assets/ResIn/UI/Bag/Bag_fui.bytes