using UnityEngine; using FairyGUI; using UI.LuckyBox; using System.Collections.Generic; namespace GFGGame { public class LuckyBoxBonusView : BaseWindow { private UI_LuckBoxBonusUI _ui; private List itemList; private GComponent _curComItem; private int openCount = 0; private List newItemList = new List(); private List newCardList = new List(); private List openIndexList = new List(); private List _effects = new List(); private List _wrappers = new List(); private GameObject _effect; private GoWrapper _wrapper; public override void Dispose() { base.Dispose(); for (int i = 0; i < _effects.Count; i++) { SceneController.DestroyObjectFromView(_effects[i], _wrappers[i]); } SceneController.DestroyObjectFromView(_effect, _wrapper); if (_ui != null) { _ui.Dispose(); _ui = null; } } protected override void OnInit() { base.OnInit(); packageName = UI_LuckBoxBonusUI.PACKAGE_NAME; _ui = UI_LuckBoxBonusUI.Create(); this.viewCom = _ui.target; isfullScreen = true; InitAllItem(); _ui.m_loaBg.onClick.Add(OnClickBg); _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("bj_ckzxin"); _ui.m_loaOpen.onClick.Add(OnClickOpen); _ui.m_btnPass.onClick.Add(OnBtnPassClick); } protected override void OnShown() { base.OnShown(); itemList = (viewData as object[])[0] as List; _ui.m_loaOpen.visible = true; _ui.m_loaMask.visible = true; if (itemList != null) { int count = itemList.Count; if (count == 10) { _ui.m_c1.selectedIndex = 1; } else if (count > 0) { _ui.m_c1.selectedIndex = 0; } ShowBonusList(); } else { _ui.m_loaOpen.visible = false; } _ui.m_t0.Play(UpdateView); } protected override void OnHide() { base.OnHide(); // _ui.m_grpItems.visible = false; // _ui.m_itemOne.target.visible = false; _ui.m_t1.Play(); openCount = 0; Timers.inst.Remove(UpdateTime); } private void OnClickBg() { this.Hide(); ViewManager.Show(ViewName.LUCKY_BOX_VIEW, ViewManager.GetGoBackDatas(ViewName.LUCKY_BOX_STAR_VIEW)); GetSuitItemController.TryShow(0); _ui.m_t0.Stop(true, false); } private void UpdateView() { _ui.m_loaMask.visible = false; int[][] bonus = LuckyBoxCfgArray.Instance.GetCfg(LuckyBoxDataManager.Instance.luckyBoxId).bonusArr; List itemDatas = ItemUtil.CreateItemDataList(bonus, LuckyBoxDataManager.Instance.times); ViewManager.Show(new object[] { itemDatas }); } private void ShowBonusList() { if (itemList.Count > 1) { for (int i = 0; i < itemList.Count; i++) { GObject itemObject = _ui.target.GetChild("item" + i); if (itemObject != null) { UpdateItem(i, itemObject); } } } else { UpdateItem(0, _ui.m_itemOne.target); } } private void UpdateItem(int index, GObject obj) { ItemData itemData = itemList[index]; UI_LuckyBoxBonusItem itemUI = UI_LuckyBoxBonusItem.Proxy(obj); ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemData.id); bool isFirst = true; int count = 0; for (int i = 0; i < itemList.Count; i++) { if (i < index && itemList[i].id == itemData.id) { isFirst = false; } if (itemList[i].id == itemData.id) { count++; } } itemUI.m_comIcon.m_icon.url = ResPathUtil.GetIconPath(itemCfg); itemUI.m_comIcon.m_imgNew.visible = ItemDataManager.GetItemNum(itemData.id) == count && isFirst ? true : false; string itemName = itemCfg.name; if (itemData.num > 1) { itemName += "x" + itemData.num; } itemUI.m_comIcon.m_txtName.text = itemName; itemUI.m_c1.selectedIndex = itemCfg.rarity; itemUI.m_comIcon.m_c1.selectedIndex = itemCfg.rarity; RarityIconController.UpdateRarityIcon(itemUI.m_comIcon.m_rarity, itemData.id, false); itemUI.m_comIcon.m_icon.data = itemData.id; itemUI.target.data = itemData; // itemUI.m_comIcon.target.SetScale(0, 0); itemUI.m_t0.Play(); UI_LuckyBoxBonusItem.ProxyEnd(); } private void InitAllItem() { UI_LuckyBoxBonusItem itemUI = UI_LuckyBoxBonusItem.Proxy(_ui.m_itemOne.target); itemUI.target.onClick.Add(OnClickItem); itemUI.m_comIcon.m_icon.onClick.Add(OnClickItemTips); UI_LuckyBoxBonusItem.ProxyEnd(); for (int i = 0; i < 10; i++) { GObject itemObject = _ui.target.GetChild("item" + i); if (itemObject != null) { UI_LuckyBoxBonusItem itemUITen = UI_LuckyBoxBonusItem.Proxy(itemObject); itemUITen.target.onClick.Add(OnClickItem); itemUITen.m_comIcon.m_icon.onClick.Add(OnClickItemTips); UI_LuckyBoxBonusItem.ProxyEnd(); } } } private void OnClickItem(EventContext context) { GComponent item = context.sender as GComponent; PlayOpenAni(item); } private void OnClickOpen() { if (itemList.Count == 1) { PlayOpenAni(_ui.m_itemOne.target); return; } for (int i = 0; i < itemList.Count; i++) { GComponent component = _ui.target.GetChild("item" + i).asCom; if (component != null) { bool playing = PlayOpenAni(component); if (!playing) continue; if (playing) break; } } } private bool PlayOpenAni(GComponent component) { Transition transition = component.GetTransition("t1"); GComponent comIcon = component.GetChild("comIcon").asCom; if (transition.playing || comIcon.skew == Vector2.zero) return false; GImage imgNew = component.GetChild("comIcon").asCom.GetChild("imgNew").asImage; if (imgNew.visible) { _ui.m_loaMask.visible = true; } _curComItem = component; transition.Play(UpdateOpenCount); return true; } private void UpdateOpenCount() { GImage imgNew = _curComItem.GetChild("comIcon").asCom.GetChild("imgNew").asImage; if (imgNew.visible) { ItemData itemData = _curComItem.data as ItemData; ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemData.id); if (cfg.itemType == ConstItemType.DRESS_UP) { List itemDatas = ItemUtil.CreateItemDataList(itemData.id, itemData.num); ViewManager.Show(new object[] { itemDatas }); } else if (cfg.itemType == ConstItemType.CARD) { ViewManager.Show(new object[] { itemData.id }); } } openCount++; _ui.m_loaMask.visible = false; if (openCount == itemList.Count) { _ui.m_loaOpen.visible = false; } } private void OnClickItemTips(EventContext context) { GLoader item = context.sender as GLoader; int itemID = (int)item.data; GoodsItemTipsController.ShowItemTips(itemID); } private void OnBtnPassClick() { _ui.m_loaMask.visible = true; if (itemList.Count == 1) { PlayOpenAni(_ui.m_itemOne.target); } else { Timers.inst.Add(0.5f, itemList.Count, UpdateTime); } } private void UpdateTime(object param) { GComponent component = _ui.target.GetChild("item" + openCount).asCom; Transition transition = component.GetTransition("t1"); GComponent comIcon = component.GetChild("comIcon").asCom; GImage imgNew = comIcon.GetChild("imgNew").asImage; openCount++; if (transition.playing || comIcon.skew == Vector2.zero) return; if (imgNew.visible) { ItemData itemData = component.data as ItemData; ItemCfg cfg = ItemCfgArray.Instance.GetCfg(itemData.id); if (cfg.itemType == ConstItemType.DRESS_UP) { newItemList.Add(itemData); } else if (cfg.itemType == ConstItemType.CARD) { newCardList.Add(itemData.id); } } if (openCount == itemList.Count) { transition.Play(PlayComplete); } else { transition.Play(); } } private void PlayComplete() { _ui.m_loaMask.visible = false; _ui.m_loaOpen.visible = false; if (newItemList.Count > 0) { ViewManager.Show(new object[] { newItemList }); } if (newCardList.Count > 0) { ViewManager.Show(newCardList); } } } }