using System.Collections; using UnityEngine; using UI.CommonGame; using FairyGUI; using System.Collections.Generic; using System; namespace GFGGame { public class RewardView : BaseWindow { private UI_RewardUI _ui; private List _listItemDatas; private Action onSuccess = null; private List _effects = new List(); private const int maxHeight = 1030; private EffectUI _effectUI1; private int counTime = 0; //定时器计数 public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); _ui = UI_RewardUI.Create(); this.viewCom = _ui.target; //this.viewCom.Center(); //this.modal = true; //viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; isfullScreen = true; _ui.m_comList.m_listReward.itemRenderer = RenderListRewardItem; _ui.m_bg.onClick.Add(this.Hide); } protected override void OnShown() { base.OnShown(); if ((this.viewData as object[]).Length > 0) { _listItemDatas = (this.viewData as object[])[0] as List; onSuccess = (this.viewData as object[])[1] as Action; } else { _listItemDatas = this.viewData as List; } List suitPart = new List(); ; for (int i = _listItemDatas.Count - 1; i >= 0; i--) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_listItemDatas[i].id); if (suitCfg != null) { for (int j = 0; j < suitCfg.partsArr.Length; j++) { suitPart.Add(ItemUtil.createItemData(suitCfg.partsArr[j], _listItemDatas[i].num)); } _listItemDatas.RemoveAt(i); } } _listItemDatas.AddRange(suitPart); //_ui.m_listReward.SetVirtual(); //有虚拟列表的时候,没有办法居中显示列表 _ui.m_downTipsText.visible = false; _ui.m_comList.m_listReward.numItems = 0; counTime = 0; Timers.inst.Add(0.1f, 3, OnTimerUpdate, 1); } private void OnTimerUpdate(object param) { counTime += 1; if (counTime == 1) { _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderTitle, "ui_hd", "GXHD"); } else if (counTime == 2) { _ui.m_comList.m_listReward.numItems = _listItemDatas.Count; _ui.m_comList.m_listReward.ResizeToFit(); if (_ui.m_comList.m_listReward.height > maxHeight) { _ui.m_comList.m_listReward.height = maxHeight; } } else if (counTime == 3) { _ui.m_downTipsText.visible = true; Timers.inst.Remove(OnTimerUpdate); } } protected override void OnHide() { EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; Timers.inst.Remove(OnTimerUpdate); for (int i = 0; i < _effects.Count; i++) { if (_effects[i] != null) { EffectUIPool.Recycle(_effects[i]); _effects[i] = null; } } _effects.Clear(); if (onSuccess != null) { onSuccess(); } base.OnHide(); //_effects.Clear(); GetSuitItemController.TryShow(0); } private void RenderListRewardItem(int index, GObject obj) { // obj.data = _listItemDatas[index]; UI_ComItem item = UI_ComItem.Proxy(obj); string name = ""; string iconRes = ""; string ext = "png"; int rarity = 0; int id = 0; bool isSuit = false; SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(_listItemDatas[index].id); ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(_listItemDatas[index].id); if (suitCfg != null) { name = suitCfg.name; iconRes = suitCfg.res; rarity = suitCfg.rarity; id = suitCfg.id; isSuit = true; } else { name = itemCfg.name; ext = ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType, true); iconRes = itemCfg.res; id = itemCfg.id; isSuit = false; if (itemCfg.itemType == ConstItemType.DRESS_UP) rarity = itemCfg.rarity; } item.m_txtName.text = name; // item.m_txtCount.text = _listItemDatas[index].num==1?"": string.Format("{0}", _listItemDatas[index].num); item.m_txtCount.text = string.Format("{0}", _listItemDatas[index].num); item.m_loaIcon.url = ResPathUtil.GetIconPath(iconRes, ext); if(rarity > 0) item.m_QualityType.selectedIndex = rarity - 1; RarityIconController.UpdateRarityIcon(item.m_loaRarity, id, false, isSuit); item.m_imgOnceBonus.visible = _listItemDatas[index].isOnceBonus; //特效("ui_ck", "ui_ck_zl"); int childIndex = _ui.m_comList.m_listReward.ItemIndexToChildIndex(index); if (_effects.Count <= childIndex) { EffectUI _effectUI = EffectUIPool.CreateEffectUI(item.m_holderReware, "ui_hd", "GXHD_WuPin",120); _effects.Add(_effectUI); } if (item.target.data == null) { item.target.onClick.Add(OnClickListReward); } item.target.data = _listItemDatas[index]; UI_ComItem.ProxyEnd(); } private void OnClickListReward(EventContext context) { if (this.ShowTips) { ItemData data = (context.sender as GObject).data as ItemData; GoodsItemTipsController.ShowItemTips(data.id); } } private bool _showTips = true; /// /// 是否展示物品详情,默认展示 /// private bool ShowTips { get { return _showTips; } set { _showTips = value; } } } }