|
@@ -0,0 +1,241 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using ET;
|
|
|
+using FairyGUI;
|
|
|
+using UI.Bag;
|
|
|
+using UI.CommonGame;
|
|
|
+using UnityEngine;
|
|
|
+
|
|
|
+namespace GFGGame
|
|
|
+{
|
|
|
+ public class GiftBoxSelectorView : BaseWindow
|
|
|
+ {
|
|
|
+ private UI_GiftBoxSelectorUI _ui;
|
|
|
+ private int _itemId;
|
|
|
+ private int _count; //物品数量
|
|
|
+ private int _selCount; //选择的数量
|
|
|
+ private Dictionary<int, int> _selDic; //选择礼包内的物品<物品id,数量>
|
|
|
+
|
|
|
+ public override void Dispose()
|
|
|
+ {
|
|
|
+ base.Dispose();
|
|
|
+
|
|
|
+ if (_selDic != null)
|
|
|
+ {
|
|
|
+ _selDic.Clear();
|
|
|
+ _selDic = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (_ui != null)
|
|
|
+ {
|
|
|
+ _ui.Dispose();
|
|
|
+ _ui = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void OnInit()
|
|
|
+ {
|
|
|
+ base.OnInit();
|
|
|
+
|
|
|
+ packageName = UI_GiftBoxSelectorUI.PACKAGE_NAME;
|
|
|
+ _ui = UI_GiftBoxSelectorUI.Create();
|
|
|
+ this.viewCom = _ui.target;
|
|
|
+ this.viewCom.Center();
|
|
|
+ this.modal = true;
|
|
|
+
|
|
|
+ _selDic = new Dictionary<int, int>();
|
|
|
+
|
|
|
+ _ui.m_btnCancel.onClick.Add(OnBtnCancelClick);
|
|
|
+ _ui.m_list.itemRenderer = ListItemRender;
|
|
|
+ _ui.m_btnSub.onClick.Add(OnBtnSubClick);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void AddEventListener()
|
|
|
+ {
|
|
|
+ base.AddEventListener();
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void OnShown()
|
|
|
+ {
|
|
|
+ base.OnShown();
|
|
|
+ _itemId = (int)this.viewData;
|
|
|
+ _count = (int)ItemDataManager.GetItemNum(_itemId);
|
|
|
+
|
|
|
+ _selDic.Clear();
|
|
|
+ _selCount = 0;
|
|
|
+
|
|
|
+ UpdateView();
|
|
|
+ UpdateList();
|
|
|
+ SetSelAllNum();
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void OnHide()
|
|
|
+ {
|
|
|
+ if (_ui.m_list.numItems > 0)
|
|
|
+ {
|
|
|
+ _ui.m_list.ScrollToView(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ _ui.m_list.numItems = 0;
|
|
|
+ _selDic.Clear();
|
|
|
+ _selCount = 0;
|
|
|
+
|
|
|
+ base.OnHide();
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void RemoveEventListener()
|
|
|
+ {
|
|
|
+ base.RemoveEventListener();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UpdateView()
|
|
|
+ {
|
|
|
+ ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_itemId);
|
|
|
+ _ui.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg);
|
|
|
+ _ui.m_txtName.text = itemCfg.name;
|
|
|
+ _ui.m_txtTotalNum.text = $"已拥有:{_count}";
|
|
|
+ _ui.m_txtItemDes.text = string.IsNullOrEmpty(itemCfg.desc) ? "暂无描述" : itemCfg.desc;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UpdateList()
|
|
|
+ {
|
|
|
+ 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)
|
|
|
+ {
|
|
|
+ ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_itemId);
|
|
|
+ UI_ListSelectorItem uiItemChild = UI_ListSelectorItem.Proxy(obj);
|
|
|
+
|
|
|
+ int[] itemChildArr = itemCfg.itemsArr[index];
|
|
|
+ ItemCfg itemCfgChild = ItemCfgArray.Instance.GetCfg(itemChildArr[0]);
|
|
|
+ uiItemChild.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfgChild);
|
|
|
+ uiItemChild.m_loaIcon.onClick.Add(OnListSelectorItemClick);
|
|
|
+ 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;
|
|
|
+ UI_ListSelectorItem.ProxyEnd();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void OnChildBtnAddClick(EventContext context)
|
|
|
+ {
|
|
|
+ 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()
|
|
|
+ {
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|