using UI.CommonGame; using System.Collections.Generic; using FairyGUI; namespace GFGGame { public delegate int GetBoxBonusStatusCall(); public delegate void GetBoxBonusCall(); public class BonusBoxDetailView : BaseWindow { private UI_BonusBoxDetailUI _ui; private List _bonusList; private GetBoxBonusStatusCall _getStatusCall; private GetBoxBonusCall _getBonusCall; public override void Dispose() { base.Dispose(); } protected override void OnInit() { base.OnInit(); _ui = UI_BonusBoxDetailUI.Create(); this.viewCom = _ui.target; this.modal = true; this.viewCom.Center(); _ui.m_listBonus.itemRenderer = UpdateBonusItem; // _ui.m_listBonus.onClickItem.Add(OnClickListBonusItem); _ui.m_btnSure.onClick.Add(OnClickBtnSure); } protected override void OnShown() { base.OnShown(); object[] datas = this.viewData as object[]; _bonusList = datas[0] as List; _getStatusCall = datas[1] as GetBoxBonusStatusCall; _getBonusCall = datas[2] as GetBoxBonusCall; UpdateBtnStatus(); if (_bonusList != null) { _ui.m_listBonus.numItems = _bonusList.Count; } else { _ui.m_listBonus.numItems = 0; } if (_ui.m_listBonus.numItems > 4) { _ui.m_listBonus.columnGap = 40; } else { _ui.m_listBonus.columnGap = 60; } _ui.m_listBonus.ResizeToFit(); _ui.target.Center(); } protected override void OnHide() { base.OnHide(); } private void OnClickListBonusItem(EventContext context) { GComponent item = context.data as GComponent; int itemId = (int)item.data; GoodsItemTipsController.ShowItemTips(itemId); } private void UpdateBtnStatus() { int status = _getStatusCall(); switch (status) { case ConstBonusStatus.CAN_GET: _ui.m_btnSure.text = "领取"; break; case ConstBonusStatus.CAN_NOT_GET: _ui.m_btnSure.text = "确定"; break; case ConstBonusStatus.GOT: _ui.m_btnSure.text = "已领取"; break; } } private void OnClickBtnSure() { int status = _getStatusCall(); if (status == ConstBonusStatus.CAN_GET) { _getBonusCall(); } this.Hide(); } private void UpdateBonusItem(int index, GObject item) { ItemData itemData = _bonusList[index] as ItemData; // ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemData.id); // UI_BonusItem listItem = UI_BonusItem.Proxy(item); // listItem.m_goodsItem.m_txtNumber.text = "x" + itemData.num; // listItem.m_txtOwned.SetVar("count", "" + ItemDataManager.GetItemNum(itemData.id)).FlushVars(); // listItem.m_goodsItem.m_txtName.text = itemCfg.name; // listItem.m_goodsItem.m_iconItem.m_icon.url = ResPathUtil.GetIconPath(itemCfg); // listItem.m_iconBonusOnce.visible = itemData.isOnceBonus; // RarityIconController.UpdateRarityIcon(listItem.m_goodsItem.m_iconItem.m_rarity, itemData.id, true); // listItem.target.data = itemData.id; if (item.data == null) { item.data = new ItemView(item as GComponent); } (item.data as ItemView).SetData(itemData); } } }