|
@@ -12,12 +12,20 @@ namespace GFGGame
|
|
{
|
|
{
|
|
private UI_GiftBoxSelectorUI _ui;
|
|
private UI_GiftBoxSelectorUI _ui;
|
|
private int _itemId;
|
|
private int _itemId;
|
|
- private int _count;
|
|
|
|
|
|
+ private int _count; //物品数量
|
|
|
|
+ private int _selCount; //选择的数量
|
|
|
|
+ private Dictionary<int, int> _selDic; //选择礼包内的物品<物品id,数量>
|
|
|
|
|
|
public override void Dispose()
|
|
public override void Dispose()
|
|
{
|
|
{
|
|
base.Dispose();
|
|
base.Dispose();
|
|
|
|
|
|
|
|
+ if (_selDic != null)
|
|
|
|
+ {
|
|
|
|
+ _selDic.Clear();
|
|
|
|
+ _selDic = null;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (_ui != null)
|
|
if (_ui != null)
|
|
{
|
|
{
|
|
_ui.Dispose();
|
|
_ui.Dispose();
|
|
@@ -35,10 +43,11 @@ namespace GFGGame
|
|
this.viewCom.Center();
|
|
this.viewCom.Center();
|
|
this.modal = true;
|
|
this.modal = true;
|
|
|
|
|
|
|
|
+ _selDic = new Dictionary<int, int>();
|
|
|
|
+
|
|
_ui.m_btnCancel.onClick.Add(OnBtnCancelClick);
|
|
_ui.m_btnCancel.onClick.Add(OnBtnCancelClick);
|
|
- _ui.m_list.SetVirtual();
|
|
|
|
_ui.m_list.itemRenderer = ListItemRender;
|
|
_ui.m_list.itemRenderer = ListItemRender;
|
|
- _ui.m_list.onClickItem.Add(OnListSelectorItemClick);
|
|
|
|
|
|
+ _ui.m_btnSub.onClick.Add(OnBtnSubClick);
|
|
}
|
|
}
|
|
|
|
|
|
protected override void AddEventListener()
|
|
protected override void AddEventListener()
|
|
@@ -52,8 +61,12 @@ namespace GFGGame
|
|
_itemId = (int)this.viewData;
|
|
_itemId = (int)this.viewData;
|
|
_count = (int)ItemDataManager.GetItemNum(_itemId);
|
|
_count = (int)ItemDataManager.GetItemNum(_itemId);
|
|
|
|
|
|
|
|
+ _selDic.Clear();
|
|
|
|
+ _selCount = 0;
|
|
|
|
+
|
|
UpdateView();
|
|
UpdateView();
|
|
UpdateList();
|
|
UpdateList();
|
|
|
|
+ SetSelAllNum();
|
|
}
|
|
}
|
|
|
|
|
|
protected override void OnHide()
|
|
protected override void OnHide()
|
|
@@ -64,6 +77,9 @@ namespace GFGGame
|
|
}
|
|
}
|
|
|
|
|
|
_ui.m_list.numItems = 0;
|
|
_ui.m_list.numItems = 0;
|
|
|
|
+ _selDic.Clear();
|
|
|
|
+ _selCount = 0;
|
|
|
|
+
|
|
base.OnHide();
|
|
base.OnHide();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -83,7 +99,9 @@ namespace GFGGame
|
|
|
|
|
|
private void UpdateList()
|
|
private void UpdateList()
|
|
{
|
|
{
|
|
- _ui.m_list.numItems = _count;
|
|
|
|
|
|
+ ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_itemId);
|
|
|
|
+ _ui.m_list.numItems = itemCfg.itemsArr.Length;
|
|
|
|
+ _ui.m_list.visible = true;
|
|
}
|
|
}
|
|
|
|
|
|
private void ListItemRender(int index, GObject obj)
|
|
private void ListItemRender(int index, GObject obj)
|
|
@@ -94,21 +112,130 @@ namespace GFGGame
|
|
int[] itemChildArr = itemCfg.itemsArr[index];
|
|
int[] itemChildArr = itemCfg.itemsArr[index];
|
|
ItemCfg itemCfgChild = ItemCfgArray.Instance.GetCfg(itemChildArr[0]);
|
|
ItemCfg itemCfgChild = ItemCfgArray.Instance.GetCfg(itemChildArr[0]);
|
|
uiItemChild.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfgChild);
|
|
uiItemChild.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfgChild);
|
|
|
|
+ uiItemChild.m_loaIcon.onClick.Add(OnListSelectorItemClick);
|
|
uiItemChild.m_comItemNumBag.m_txtNum.text = itemChildArr[1].ToString();
|
|
uiItemChild.m_comItemNumBag.m_txtNum.text = itemChildArr[1].ToString();
|
|
|
|
+ uiItemChild.m_txtSelNum.text = "0";
|
|
|
|
+ uiItemChild.m_btnAdd.onClick.Add(OnChildBtnAddClick);
|
|
|
|
+ uiItemChild.m_btnReduce.onClick.Add(OnChildBtnReduceClick);
|
|
|
|
+
|
|
uiItemChild.target.data = itemCfgChild;
|
|
uiItemChild.target.data = itemCfgChild;
|
|
|
|
+ UI_ListSelectorItem.ProxyEnd();
|
|
}
|
|
}
|
|
|
|
|
|
- private void OnListSelectorItemClick(EventContext context)
|
|
|
|
|
|
+ private void OnChildBtnAddClick(EventContext context)
|
|
{
|
|
{
|
|
- GComponent comItem = (context.data as GComponent);
|
|
|
|
- ItemCfg itemCfg = comItem.data as ItemCfg;
|
|
|
|
|
|
+ GObject sender = context.sender as GObject;
|
|
|
|
+ GObject obj = sender.parent;
|
|
|
|
+ UI_ListSelectorItem listItem = UI_ListSelectorItem.Proxy(obj);
|
|
|
|
|
|
- //弹出物品详细描述框
|
|
|
|
|
|
+ if (_selCount == _count)
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (listItem.m_txtSelNum.text == _count.ToString())
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ItemCfg itemCfg = obj.data as ItemCfg;
|
|
|
|
+
|
|
|
|
+ if (_selDic.TryGetValue(itemCfg.id, out int num))
|
|
|
|
+ {
|
|
|
|
+ if (num == _count)
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ _selCount += 1;
|
|
|
|
+ _selDic[itemCfg.id] = num + 1;
|
|
|
|
+ listItem.m_txtSelNum.text = Convert.ToString(Convert.ToInt32(listItem.m_txtSelNum.text) + 1);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ _selDic.Add(itemCfg.id, 1);
|
|
|
|
+ _selCount += 1;
|
|
|
|
+ listItem.m_txtSelNum.text = Convert.ToString(1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ SetSelAllNum();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void SetSelAllNum()
|
|
|
|
+ {
|
|
|
|
+ _ui.m_txtSelRewardStr.text = $"已选奖励:{_selCount}/{_count}";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void OnChildBtnReduceClick(EventContext context)
|
|
|
|
+ {
|
|
|
|
+ GObject sender = context.sender as GObject;
|
|
|
|
+ GObject obj = sender.parent;
|
|
|
|
+ UI_ListSelectorItem listItem = UI_ListSelectorItem.Proxy(obj);
|
|
|
|
+
|
|
|
|
+ if (_selCount == 0)
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (listItem.m_txtSelNum.text == "0")
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ ItemCfg itemCfg = obj.data as ItemCfg;
|
|
|
|
+
|
|
|
|
+ if (_selDic.TryGetValue(itemCfg.id, out int num))
|
|
|
|
+ {
|
|
|
|
+ if (num == 0)
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ _selCount -= 1;
|
|
|
|
+ _selDic[itemCfg.id] = num - 1;
|
|
|
|
+ listItem.m_txtSelNum.text = Convert.ToString(Convert.ToInt32(listItem.m_txtSelNum.text) - 1);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ _selCount -= 1;
|
|
|
|
+ _selDic.Add(itemCfg.id, 0);
|
|
|
|
+ listItem.m_txtSelNum.text = Convert.ToString(0);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ SetSelAllNum();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //弹出物品详细描述框
|
|
|
|
+ private void OnListSelectorItemClick(EventContext context)
|
|
|
|
+ {
|
|
|
|
+ GObject sender = context.sender as GObject;
|
|
|
|
+ GObject obj = sender.parent;
|
|
|
|
+ ItemCfg itemCfg = obj.data as ItemCfg;
|
|
|
|
+ GoodsItemTipsController.ShowItemTips(itemCfg.id);
|
|
}
|
|
}
|
|
|
|
|
|
private void OnBtnCancelClick()
|
|
private void OnBtnCancelClick()
|
|
{
|
|
{
|
|
this.Hide();
|
|
this.Hide();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //确认按钮
|
|
|
|
+ private void OnBtnSubClick()
|
|
|
|
+ {
|
|
|
|
+ List<GiftBoxSelChildItemProto> reqItemList = new List<GiftBoxSelChildItemProto>();
|
|
|
|
+
|
|
|
|
+ foreach (var itemKv in _selDic)
|
|
|
|
+ {
|
|
|
|
+ reqItemList.Add(new GiftBoxSelChildItemProto
|
|
|
|
+ {
|
|
|
|
+ ChildItemId = itemKv.Key,
|
|
|
|
+ ChildItemCount = itemKv.Value
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ItemProxy.ReqUseGiftBoxSelItem(_itemId, reqItemList).Coroutine();
|
|
|
|
+ this.Hide();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|