From 4ac44848aa77b9c52da12099be345741b2b4880c Mon Sep 17 00:00:00 2001 From: BobSong <605277374@qq.com> Date: Wed, 19 Nov 2025 23:46:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=BF=AB=E9=80=9F=E9=80=89?= =?UTF-8?q?=E4=B8=AD=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Resources/Fgui/Main/Main_fui.bytes | Bin 24396 -> 24188 bytes Assets/Scripts/Fishing2/Role/RoleBag.cs | 29 +++++++ Assets/Scripts/Init.cs | 2 +- Assets/Scripts/UI/Bag/BagItem.cs | 1 + .../Scripts/UI/Bag/BagSelectPanel.Designer.cs | 4 +- Assets/Scripts/UI/Bag/BagSelectPanel.cs | 74 ++++++++++++------ Assets/Scripts/UI/Bag/BagSlotItem.cs | 1 + .../Scripts/UI/Bag/BagSlotPanel.Designer.cs | 2 +- Assets/Scripts/UI/Bag/BagSlotPanel.cs | 45 ++++++++--- Assets/Scripts/UI/Bag/ItemGearInfoTag.cs | 2 +- Assets/Scripts/UI/Common/List/ClassifyList.cs | 5 ++ .../assets/Main/Bag/BagSelectPanel.xml | 16 +--- FGUIProject/assets/Main/Bag/BagSlotPanel.xml | 5 +- 13 files changed, 125 insertions(+), 61 deletions(-) diff --git a/Assets/Resources/Fgui/Main/Main_fui.bytes b/Assets/Resources/Fgui/Main/Main_fui.bytes index 597683676b5a669ac8e585caecd607db0e420793..f4f408b033cec453deb7fe2da99fff0c6f160f1d 100644 GIT binary patch delta 601 zcmZWlJxr5P6uq}!Z41RfP)rRXDJU{DnCc*Ok^VyI*TkQs7^O&qq@uMZw59cjszns3 zX!W27sDP6TgCTCBAu+PBxtTa>T#bW+r1gGXdC58Ny>su)JMV0MoYU9@XU(9^nN2Eftx_c$-MyE_Gehq;)k34h!s}oD`fA3}I}yg$=MeElQH6P;l1a zhqWFtXM-_C#G{-R&BlZ^XDes$)7fTbokBZ_^M6VuME2B~_?k3c=NnjaIdn*oYCSyq${Rm8Tj4VimKxka5dH%ShGEYhHi(BhA~jHSI^J*Io@{r z_s_~V!bYYV@=*_|atl$Is8R-|`30)|ePU=1asN4Go)=a({Ts|LF%w8BulO~p)E-_$ zuR5@AsZ^BkmStWiU@8@5Gf)dn@DjeNhlKx?xjCqv17%K>c_Da^->j|&-&bQi+=7j8 x?|};=m(v&RWQ@0;PYtIpkwIg7lFY71^mOcM(w`i<0!M$|WQ-pxci?mXvbFa~Z9{8LCpL5RVd+z7{d4=y^WBP#J zHw#*{rWf3bvsOp~!*~vU6$=O;j{)fFxG#MzRi~;LH4Gaw%Z!hVJdGI4DAQn-L7oP{ z2uA6%(MCyEIi9C)&Ng|7*%)4+6{nFpnMDe_cH=P3xb_~BBmtWMCw>%*tUJ09!2mAs zfC6oB6oSwXaecAC$HXDVGCe#r$cO2c_~kcr*j%w6R0%z3`yg?j6%1<8LIUI#Z>XUP zX<`>CU^15C2rFK~QCe|1HjMEbm&sbcT~^ryCaJUDfmditwShjEEF}qn<9L7JsNnXC>v)5@8rpG!UNo4+O}s_#8oF_ksy$}BO^u!ok;Xfe<$4#1etWX}o(sH( zQ|k;)uQPay*c65cBv);UP)2cB*^xCis1E2=ApWyM z2dMnFV_DfI9^f>6SDG+G2fY=1_Cq@E_4C;?^wN7mJi^C|rlz-uv-GJsDzf;5I$D}> zj^`oYpR&IC1K9BbmlD_s<2X;1zFnL>S{~5yl$LW^&ii)Yv&FL3rOkT#$!OnD z5TuZua{fJ)a>%+$Y>oCgYHE68VSBjSJ{Ub)8?g0K-ha%Zj@u$oRv$Qhr2kB$Dbh0l Qa;Q$*qCnRK{p?Ep1^8ap;Q#;t diff --git a/Assets/Scripts/Fishing2/Role/RoleBag.cs b/Assets/Scripts/Fishing2/Role/RoleBag.cs index f3d553503..21d8887d3 100644 --- a/Assets/Scripts/Fishing2/Role/RoleBag.cs +++ b/Assets/Scripts/Fishing2/Role/RoleBag.cs @@ -34,6 +34,8 @@ namespace NBF.Fishing2 } } + #region 获取物品列表 + public List GetItemsByType(ItemType itemType) { return Items.Where(item => item.ItemType == itemType).ToList(); @@ -62,6 +64,33 @@ namespace NBF.Fishing2 return dic; } + public List GetItemListData(params ItemType[] itemTypes) + { + var dic = GetItemsByType(); + + if (itemTypes == null || itemTypes.Length == 0) + { + itemTypes = new ItemType[] { ItemType.Rod, ItemType.Bobber, ItemType.Reel }; + } + + List items = new List(); + + foreach (var (type, list) in dic) + { + if (!itemTypes.Contains(type)) continue; + var typeItem = new ClassifyListTitleData() + { + Title = type.ToString() + }; + items.Add(typeItem); + items.AddRange(list); + } + + return items; + } + + #endregion + public List GetBindItems(long itemId) { List ret = new List(); diff --git a/Assets/Scripts/Init.cs b/Assets/Scripts/Init.cs index ef8fcb9fb..db34f26b6 100644 --- a/Assets/Scripts/Init.cs +++ b/Assets/Scripts/Init.cs @@ -89,7 +89,7 @@ namespace NBF UIConfig.verticalScrollBar = "ui://6hgkvlauoomej"; UIConfig.defaultFont = "AlibabaPuHuiTi-3-Medium"; App.UI.SetUILanguage(); - UIConfig.modalLayerColor = new Color(0, 0, 0, 0.9f); + UIConfig.modalLayerColor = new Color(0, 0, 0, 0.99f); AddUIPackages(); } diff --git a/Assets/Scripts/UI/Bag/BagItem.cs b/Assets/Scripts/UI/Bag/BagItem.cs index 9895101d5..ef0f33810 100644 --- a/Assets/Scripts/UI/Bag/BagItem.cs +++ b/Assets/Scripts/UI/Bag/BagItem.cs @@ -19,6 +19,7 @@ namespace NBF private void OnInited() { onDragStart.Add(DragStart); + // Oncl } diff --git a/Assets/Scripts/UI/Bag/BagSelectPanel.Designer.cs b/Assets/Scripts/UI/Bag/BagSelectPanel.Designer.cs index a20beca9c..40e96ae63 100644 --- a/Assets/Scripts/UI/Bag/BagSelectPanel.Designer.cs +++ b/Assets/Scripts/UI/Bag/BagSelectPanel.Designer.cs @@ -18,12 +18,12 @@ namespace NBF public GImage back; [AutoFind(Name = "box")] public GImage box; - [AutoFind(Name = "List")] - public GList List; [AutoFind(Name = "BtnCancel")] public BtnTitleInputControl BtnCancel; [AutoFind(Name = "BtnConfirm")] public BtnTitleInputControl BtnConfirm; + [AutoFind(Name = "List")] + public ClassifyList List; public override string[] GetDependPackages(){ return new string[] {"Common"}; } public static void Show(object param = null){ App.UI.OpenUI(param); } diff --git a/Assets/Scripts/UI/Bag/BagSelectPanel.cs b/Assets/Scripts/UI/Bag/BagSelectPanel.cs index b13f1726c..6837b53e4 100644 --- a/Assets/Scripts/UI/Bag/BagSelectPanel.cs +++ b/Assets/Scripts/UI/Bag/BagSelectPanel.cs @@ -15,26 +15,46 @@ namespace NBF { //context.data private static Action _selectCallBack; - private static ItemType _itemType; - private List _items; - public static void Show(ItemType itemType, Action callBack) + // private static ItemType _itemType; + private static readonly List _itemTypes = new List(); + private long _selectedId; + // private List _items; + + // public static void Show(ItemType itemType, Action callBack) + // { + // Show(new[] { itemType }, callBack); + // } + + public static void Show(Action callBack, params ItemType[] itemTypes) { - _itemType = itemType; + _itemTypes.Clear(); + _itemTypes.AddRange(itemTypes); _selectCallBack = callBack; + // List Show(); } protected override void OnInit() { + IsModal = true; this.AutoAddClick(OnClick); + List.OnDoubleClickItem += OnDoubleClickItem; + List.OnClickItem += OnClickItem; } protected override void OnShow() { + _selectedId = 0; SetList(); } + protected override void OnDestroy() + { + List.OnClickItem -= OnClickItem; + List.OnDoubleClickItem -= OnDoubleClickItem; + } + private void OnClick(GComponent btn) { if (btn == BtnCancel) @@ -43,12 +63,29 @@ namespace NBF } else if (btn == BtnConfirm) { - var selectIndex = List.selectedIndex; - if (selectIndex >= 0) + if (_selectedId > 0) { - var itemData = _items[selectIndex]; - _selectCallBack?.Invoke(itemData.Id); + _selectCallBack?.Invoke(_selectedId); } + + Hide(); + } + } + + private void OnClickItem(object item) + { + if (item is BagItem bagItem) + { + _selectedId = bagItem.ItemInfo.Id; + } + } + + private void OnDoubleClickItem(object item) + { + if (item is BagItem bagItem) + { + _selectedId = bagItem.ItemInfo.Id; + _selectCallBack?.Invoke(bagItem.ItemInfo.Id); Hide(); } } @@ -57,24 +94,9 @@ namespace NBF { var role = App.Main.GetComponent(); var roleBag = role.GetComponent(); - - _items = roleBag.GetItemsByType(_itemType); - - List.RemoveChildrenToPool(); - List.defaultItem = BagItem.URL; - List.itemRenderer = OnRenderItem; - List.selectionMode = ListSelectionMode.Single; - - List.numItems = _items.Count; - } - - void OnRenderItem(int index, GObject obj) - { - var itemData = _items[index]; - if (obj is BagItem bagItem) - { - bagItem.SetData(itemData); - } + + List items = roleBag.GetItemListData(); + List.SetListData(items); } } } \ No newline at end of file diff --git a/Assets/Scripts/UI/Bag/BagSlotItem.cs b/Assets/Scripts/UI/Bag/BagSlotItem.cs index 834fdd701..31bd54246 100644 --- a/Assets/Scripts/UI/Bag/BagSlotItem.cs +++ b/Assets/Scripts/UI/Bag/BagSlotItem.cs @@ -35,6 +35,7 @@ namespace NBF private void OnRemove(EventContext context) { context.PreventDefault(); + context.StopPropagation(); OnChangeSlot?.Invoke(Index, 0); } diff --git a/Assets/Scripts/UI/Bag/BagSlotPanel.Designer.cs b/Assets/Scripts/UI/Bag/BagSlotPanel.Designer.cs index 978f58dc9..a3f3c6d31 100644 --- a/Assets/Scripts/UI/Bag/BagSlotPanel.Designer.cs +++ b/Assets/Scripts/UI/Bag/BagSlotPanel.Designer.cs @@ -19,7 +19,7 @@ namespace NBF [AutoFind(Name = "SlotTitle")] public GComponent SlotTitle; [AutoFind(Name = "List")] - public GList List; + public ClassifyList List; [AutoFind(Name = "SlotList")] public GList SlotList; [AutoFind(Name = "SlotSeparator")] diff --git a/Assets/Scripts/UI/Bag/BagSlotPanel.cs b/Assets/Scripts/UI/Bag/BagSlotPanel.cs index a1088dfb9..c0f4da3fa 100644 --- a/Assets/Scripts/UI/Bag/BagSlotPanel.cs +++ b/Assets/Scripts/UI/Bag/BagSlotPanel.cs @@ -18,6 +18,7 @@ namespace NBF protected override void OnInit() { + SlotList.onClickItem.Add(OnClickSlotItem); } protected override void OnShow() @@ -41,26 +42,31 @@ namespace NBF } } - List.RemoveChildrenToPool(); - List.itemRenderer = OnRenderItem; - - List.numItems = _items.Count; - } - - void OnRenderItem(int index, GObject obj) - { - var itemData = _items[index]; - if (obj is BagItem bagItem) + List items = _roleBag.GetItemListData(); + List.SetListData(items); + var children = List.List.GetChildren(); + foreach (var gObject in children) { - bagItem.SetData(itemData); - bagItem.draggable = true; + gObject.draggable = true; } } + // void OnRenderItem(int index, GObject obj) + // { + // var itemData = _items[index]; + // if (obj is BagItem bagItem) + // { + // bagItem.SetData(itemData); + // bagItem.draggable = true; + // } + // } + #endregion #region 快速选择列表 + private int _lastSelectedItem; + private void SetSlotList() { SlotList.RemoveChildrenToPool(); @@ -86,6 +92,21 @@ namespace NBF // SlotList.RefreshVirtualList(); } + private void OnClickSlotItem(EventContext context) + { + if (context.data is BagSlotItem bagSlotItem) + { + _lastSelectedItem = bagSlotItem.Index; + BagSelectPanel.Show(SelectCallback, ItemType.Rod, ItemType.Bobber, ItemType.Reel); + } + } + + private void SelectCallback(long selectId) + { + if (selectId < 1) return; + _roleBag.SetSlot(_lastSelectedItem, selectId).OnCompleted(OnChangeSlotItemDone); + } + #endregion private bool CanShow(ItemInfo itemInfo) diff --git a/Assets/Scripts/UI/Bag/ItemGearInfoTag.cs b/Assets/Scripts/UI/Bag/ItemGearInfoTag.cs index 69260398a..51a20873c 100644 --- a/Assets/Scripts/UI/Bag/ItemGearInfoTag.cs +++ b/Assets/Scripts/UI/Bag/ItemGearInfoTag.cs @@ -105,7 +105,7 @@ namespace NBF { if (context.data is not BagGearItem item) return; _lastSelectedItem = item; - BagSelectPanel.Show(item.BindData.Type, SelectCallback); + BagSelectPanel.Show(SelectCallback, item.BindData.Type); } #endregion diff --git a/Assets/Scripts/UI/Common/List/ClassifyList.cs b/Assets/Scripts/UI/Common/List/ClassifyList.cs index 0d18a63c7..a848e153e 100644 --- a/Assets/Scripts/UI/Common/List/ClassifyList.cs +++ b/Assets/Scripts/UI/Common/List/ClassifyList.cs @@ -19,6 +19,7 @@ namespace NBF private readonly List _listData = new List(); public event Action OnClickItem; + public event Action OnDoubleClickItem; private int _columnsCount; @@ -98,6 +99,10 @@ namespace NBF void OnClickListItem(EventContext context) { OnClickItem?.Invoke(context.data); + if (context.inputEvent.isDoubleClick) + { + OnDoubleClickItem?.Invoke(context.data); + } } void OnRenderItem(int index, GObject obj) diff --git a/FGUIProject/assets/Main/Bag/BagSelectPanel.xml b/FGUIProject/assets/Main/Bag/BagSelectPanel.xml index 3c60a56fe..7723f10f0 100644 --- a/FGUIProject/assets/Main/Bag/BagSelectPanel.xml +++ b/FGUIProject/assets/Main/Bag/BagSelectPanel.xml @@ -1,9 +1,6 @@ - - - @@ -13,18 +10,6 @@ - - - - - - - - - - - -