| 
					
				 | 
			
			
				@@ -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(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |