diff --git a/Assets/Resources/Fgui/Main/Main_fui.bytes b/Assets/Resources/Fgui/Main/Main_fui.bytes index 597683676..f4f408b03 100644 Binary files a/Assets/Resources/Fgui/Main/Main_fui.bytes and b/Assets/Resources/Fgui/Main/Main_fui.bytes differ 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 @@ - - - - - - - - - - - -