完成快速选中相关内容
This commit is contained in:
@@ -15,26 +15,46 @@ namespace NBF
|
||||
{
|
||||
//context.data
|
||||
private static Action<long> _selectCallBack;
|
||||
private static ItemType _itemType;
|
||||
private List<ItemInfo> _items;
|
||||
|
||||
public static void Show(ItemType itemType, Action<long> callBack)
|
||||
// private static ItemType _itemType;
|
||||
private static readonly List<ItemType> _itemTypes = new List<ItemType>();
|
||||
private long _selectedId;
|
||||
// private List<ItemInfo> _items;
|
||||
|
||||
// public static void Show(ItemType itemType, Action<long> callBack)
|
||||
// {
|
||||
// Show(new[] { itemType }, callBack);
|
||||
// }
|
||||
|
||||
public static void Show(Action<long> 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<Role>();
|
||||
var roleBag = role.GetComponent<RoleBag>();
|
||||
|
||||
_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<object> items = roleBag.GetItemListData();
|
||||
List.SetListData(items);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user