using FairyGUI; using UI.BlindBox; using System.Collections; using System.Collections.Generic; using ET; using System.Threading.Tasks; using System.Linq; using System.Text.RegularExpressions; using cfg.GfgCfg; namespace GFGGame { public struct BlindBoxType { public int type; public bool check; } public class BlindBoxView : BaseWindow { private UI_BlindBoxUI _ui; //private EffectUI _effectUI1; private Dictionary _effectUIDic = new Dictionary(); private ItemCfg itemcfg; private int listIndex = 0; BlindBoxCfg blindBoxCfg = CommonDataManager.Tables.TblBlindBoxCfg.GetOrDefault(2); public override void Dispose() { // EffectUIPool.Recycle(_effectUI1); // _effectUI1 = null; foreach (var v in _effectUIDic) { EffectUIPool.Recycle(v.Value); } _effectUIDic.Clear(); if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_BlindBoxUI.PACKAGE_NAME; _ui = UI_BlindBoxUI.Create(); this.viewCom = _ui.target; modal = true; this.viewCom.Center(); //viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_backBtn.onClick.Add(this.Hide); _ui.m_buyBtn.target.onClick.Add(OnClickBuyAll); _ui.m_hiddenItem.onClick.Add(OnClickRewardBtn); _ui.m_rewardList.onClick.Add(OnClickRewardBtn); _ui.m_ruleBtn.onClick.Add(OnClickRuleBtn); _ui.m_rewardList.itemRenderer = RenderRewardList; List dropOutCfgList = CommonDataManager.Tables.TblDropOutCfg.DataList.Where(a => a.Id == blindBoxCfg.OrdinaryDropDisplay) .ToList(); List hidDropOutCfgList = CommonDataManager.Tables.TblDropOutCfg.DataList.Where(a => a.Id == blindBoxCfg.HideDropDisplay) .ToList(); ItemCfg hidItemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(hidDropOutCfgList[0].Item); _ui.m_rewardList.numItems = dropOutCfgList.Count; _ui.m_hiddenItem.url = ResPathUtil.GetIconPath(hidItemCfg); _ui.m_buyBtn.m_num.text = blindBoxCfg.CostIDNum[1].ToString(); _ui.m_boxList.itemRenderer = RenderBoxList; //_effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_effect, "ui_Activity", "WSJ_UI_DX/WSJ_UI_DX"); } protected override void OnShown() { base.OnShown(); //_ui.m_bg.visible = false; _ui.m_t1.Play(); clickBlankToClose = false; itemcfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(blindBoxCfg.CostID); if (itemcfg == null) { Log.Error(string.Format("没有{0}物品")); } _ui.m_buyBtn.m_newimg.url = "ui://eg2y0ldpuje19g0w"; // _ui.m_buyBtn.m_img.width = 5; _ui.m_boxList.numItems = 6; _ui.m_rewardList.numItems = 6; UpdateTime(null); Timers.inst.Add(1, 0, UpdateTime); Timers.inst.Add(0.75f, 1, TimeUpdateShow); } protected override void OnHide() { base.OnHide(); ActivityDataManager.Instance.BlindBoxType = 0; Timers.inst.Remove(UpdateTime); Timers.inst.Remove(TimeUpdateShow); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.BlindBox_BuyOne, ReqBuyOne); EventAgent.AddEventListener(ConstMessage.BlindBox_BuyAll, ReqBuyAll); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.BlindBox_BuyOne, ReqBuyOne); EventAgent.RemoveEventListener(ConstMessage.BlindBox_BuyAll, ReqBuyAll); } private void OnClickRewardBtn() { ViewManager.Show(new object[] { 30000066, 30000078 }); } private void OnClickRuleBtn() { ViewManager.Show(300037); } private void RenderRewardList(int index, GObject obj) { UI_rewardItem uiItemChild = UI_rewardItem.Proxy(obj); List dropOutCfgList = CommonDataManager.Tables.TblDropOutCfg.DataList.Where(a => a.Id == blindBoxCfg.OrdinaryDropDisplay) .ToList(); ItemCfg itemCfgChild = CommonDataManager.Tables.TblItemCfg.GetOrDefault(dropOutCfgList[index].Item); uiItemChild.target.data = itemCfgChild; uiItemChild.m_reward.url = ResPathUtil.GetIconPath(itemCfgChild); UI_rewardItem.ProxyEnd(); } private void RenderBoxList(int index, GObject obj) { UI_boxItem item = UI_boxItem.Proxy(obj); item.target.onClick.Add(OnClickBuyOne); if (!_effectUIDic.ContainsKey("WSJ_Box" + index.ToString())) { EffectUIPool.CreateEffectUI(item.m_effect, "ui_Activity", "WSJ_Box/WSJ_Box", onComplete: (effect) => { if (effect != null) { _effectUIDic.Add("WSJ_Box" + index.ToString(), effect); } }); } if (!_effectUIDic.ContainsKey("WSJ_OpenBox" + index.ToString())) { EffectUIPool.CreateEffectUI(item.m_effectOpen, "ui_Activity", "WSJ_OpenBox/WSJ_OpenBox", onComplete: (effect) => { if (effect != null) { _effectUIDic.Add("WSJ_OpenBox" + index.ToString(), effect); } }); item.m_effectOpen.visible = false; } UI_boxItem.ProxyEnd(); } private void OnClickBuyAll() { ActivityDataManager.Instance.BlindBoxType = 6; int costNum = blindBoxCfg.CostIDNum[1]; ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemcfg.Id); if (ActivityDataManager.Instance.typeAll.check == false) { string desc = string.Format("确认是否消耗{0}{1}打开{2}个盲盒?", costNum, itemCfg.Name, _ui.m_boxList.numItems); ViewManager.Show(desc); } else { ReqBuyAll(); } } private async void ReqBuyAll() { bool result; result = await LuckyBoxSProxy.ReqGetBlindBox(2, 6); if (result) { UpdateAllBoxAni(); } } private async void ReqBuyOne() { bool result; result = await LuckyBoxSProxy.ReqGetBlindBox(2, 1); if (result) { UI_boxItem listItem = UI_boxItem.Proxy(_ui.m_boxList.GetChildAt(listIndex)); _ui.m_backBtn.touchable = false; _ui.m_buyBtn.target.touchable = false; _ui.m_boxList.touchable = false; clickBlankToClose = false; listItem.m_t0.Play(() => { BonusController.TryShowBonusList( ItemUtil.CreateItemDataList(LuckyBoxDataManager.Instance.BlindBoxReward)); _ui.m_backBtn.touchable = true; _ui.m_buyBtn.target.touchable = true; _ui.m_boxList.touchable = true; clickBlankToClose = true; }); UI_boxItem.ProxyEnd(); } } private void OnClickBuyOne(EventContext context) { GObject sender = context.sender as GObject; GObject obj = sender.parent; listIndex = _ui.m_boxList.GetChildIndex(sender); ActivityDataManager.Instance.BlindBoxType = 1; int costNum = blindBoxCfg.CostIDNum[0]; ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemcfg.Id); if (ActivityDataManager.Instance.typeOne.check == false) { string desc = string.Format("确认是否消耗{0}{1}打开一个盲盒?", costNum, itemCfg.Name); ViewManager.Show(desc); } else { ReqBuyOne(); } } private async void UpdateAllBoxAni() { _ui.m_backBtn.touchable = false; _ui.m_buyBtn.target.touchable = false; _ui.m_boxList.touchable = false; clickBlankToClose = false; for (int i = 0; i < _ui.m_boxList.numItems; i++) { UI_boxItem item = UI_boxItem.Proxy(_ui.m_boxList.GetChildAt(i)); item.m_effect.visible = false; item.m_effectOpen.visible = true; await Task.Delay(200); UI_boxItem.ProxyEnd(); } BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(LuckyBoxDataManager.Instance.BlindBoxReward)); for (int i = 0; i < _ui.m_boxList.numItems; i++) { UI_boxItem item = UI_boxItem.Proxy(_ui.m_boxList.GetChildAt(i)); item.m_effect.visible = true; item.m_effectOpen.visible = false; UI_boxItem.ProxyEnd(); } _ui.m_backBtn.touchable = true; _ui.m_buyBtn.target.touchable = true; _ui.m_boxList.touchable = true; clickBlankToClose = true; } private void TimeUpdateShow(object param) { clickBlankToClose = true; } private void UpdateTime(object param) { long curTime = TimeHelper.ServerNow(); var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(10302); if (activityInfo != null) { long endTime = activityInfo.EndTime; _ui.m_txtTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime); } } } }