using UI.CommonGame; using FairyGUI; using System.Collections.Generic; using ET; using System; using System.Linq; using cfg.GfgCfg; using Hutool; using UI.DailyWelfare; namespace GFGGame { public class NewLimitChargeView : BaseWindow { private UI_NewLimitChargeUI _ui; private List _shopCfgs; private int _curSelectIndex = 0; private int _activityId = 0; private ActivityInfo _activityInfo; private List _rechargeCfgs; private int previousIndex = 0; private bool isGoChargeView = false; public override void Dispose() { if (_ui != null) { _ui.Dispose(); } _ui = null; base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_LimitChargeUI.PACKAGE_NAME; _ui = UI_NewLimitChargeUI.Create(); this.viewCom = _ui.target; isfullScreen = true; isReturnView = true; this.clickBlankToClose = false; this.bringToFontOnClick = false; _ui.m_btnLeft.onClick.Add(OnBtnLeftClick); _ui.m_btnRight.onClick.Add(OnBtnRightClick); _ui.m_btnBack.onClick.Add(OnBtnBackClick); _ui.m_btnCharge.onClick.Add(OnBtnChargeClick); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, RefreshList); EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateRedDot); EventAgent.AddEventListener(ConstMessage.NEWLIMITCHARGE_GET, UpdateSuitView); } protected override void OnShown() { base.OnShown(); _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("zjm_bg1", "jpg"); _activityId = (int)(this.viewData as object[])[0]; _rechargeCfgs = CommonDataManager.Tables.TblActivityRechargeCfg.DataList .Where(a => a.ActivityId == _activityId).ToList(); _activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(_activityId); //RefreshList(); //由于这个需要外部参数所以在onshown里面预加载 PreDownloadManager.Instance.PreDownloadSuitRes(_rechargeCfgs[0].SuitId, ResType.Both, new int[] { ConstDressUpItemType.BEI_JING }, false); string name = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(_rechargeCfgs[0].SuitId).Name; _ui.m_packageName.text = name; if (!isGoChargeView) { for (int i = 0; i < _rechargeCfgs.Count; i++) { if (_activityInfo.CountValue >= _rechargeCfgs[i].Value) { if (_activityInfo.GetRewards.IndexOf(_rechargeCfgs[i].Id) < 0) { _curSelectIndex = i; break; } } } } isGoChargeView = false; _ui.m_btnLeft.visible = _curSelectIndex == 0 ? false : true; _ui.m_btnRight.visible = _curSelectIndex < _rechargeCfgs.Count - 1 ? true : false; _ui.m_packageName.text = CommonDataManager.Tables.TblSuitCfg .GetOrDefault(_rechargeCfgs[_curSelectIndex].SuitId).Name; UpdateRedDot(); //预加载套装,对于不同suitid for (int i = 1; i < _rechargeCfgs.Count; i++) { if (_rechargeCfgs[i].SuitId != _rechargeCfgs[i - 1].SuitId) { PreDownloadManager.Instance.PreDownloadSuitRes(_rechargeCfgs[i].SuitId, ResType.Both, new int[] { ConstDressUpItemType.BEI_JING }, false); } } ItemRenderer(_curSelectIndex); Timers.inst.Add(1, 0, UpdateTime); } protected override void OnHide() { base.OnHide(); DressUpObjUI dressUpObjUI = _ui.m_showItem.m_holder.data as DressUpObjUI; if (dressUpObjUI != null) { dressUpObjUI.Dispose(); } _ui.m_showItem.m_holder.data = null; previousIndex = 0; Timers.inst.Remove(UpdateTime); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, RefreshList); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateRedDot); EventAgent.RemoveEventListener(ConstMessage.NEWLIMITCHARGE_GET, UpdateSuitView); } private void RefreshList() { ItemRenderer(_curSelectIndex); } private void ItemRenderer(int index) { ActivityRechargeCfg lastVipCfg = _rechargeCfgs[index]; ActivityRechargeCfg vipCfg = _rechargeCfgs[index]; UI_ListShowItem item = _ui.m_showItem; string name = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(vipCfg.SuitId).Name; item.m_txtName0.text = name; if (vipCfg.Res != "") { item.m_cardIcon.visible = true; item.m_cardBg.visible = true; item.m_cardIcon.url = "ui://DailyWelfare/" + vipCfg.Res; } else { item.m_cardIcon.visible = false; item.m_cardBg.visible = false; } if (item.m_listGiftBag.data == null) { item.m_listGiftBag.itemRenderer = ListRewardItemRender; item.m_listGiftBag.onClickItem.Add(OnListItemClick); } item.m_listGiftBag.data = lastVipCfg.Bonus; item.m_listGiftBag.numItems = lastVipCfg.Bonus.Count; item.m_listGiftBag.scrollPane.SetPosX(0, false); if (_rechargeCfgs[index].SuitId != previousIndex) { DressUpObjUI dressUpObjUI; if (item.m_holder.data == null) { item.m_holder.data = new DressUpObjUI("SceneSuitFoster"); } dressUpObjUI = item.m_holder.data as DressUpObjUI; // 修改为异步加载,并添加回调处理 dressUpObjUI.ResetSceneObjAsync(120, false, true, null, false, (go) => { if (go != null) { dressUpObjUI.dressUpObj.PutOnSuitCfg(vipCfg.SuitId, true, new int[] { ConstDressUpItemType.BEI_JING }, false, false); dressUpObjUI.UpdateWrapper(item.m_holder); } }); // 原同步代码注释掉 // dressUpObjUI.ResetSceneObj(120, false, true, null, false); // dressUpObjUI.dressUpObj.PutOnSuitCfg(vipCfg.SuitId, true, new int[] { ConstDressUpItemType.BEI_JING }, false, false); // dressUpObjUI.UpdateWrapper(item.m_holder); } previousIndex = _rechargeCfgs[index].SuitId; if (item.m_btnShow.data == null) { item.m_btnShow.onClick.Add(OnBtnShowClick); } item.m_btnShow.data = vipCfg.SuitId; if (item.m_btnGetGiftBag.data == null) { item.m_btnGetGiftBag.onClick.Add(OnBtnGetGiftBagClick); } item.m_btnGetGiftBag.data = vipCfg.Id; //bool isGet = MathUtil.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.VipGetStatus), vipCfg.id); long limitChargeExp = _activityInfo.CountValue; //item.m_btnGetGiftBag.grayed = limitChargeExp < _rechargeCfgs[index].value; item.m_txtGiftBag.text = string.Format("活动期间累计获得{0}会员积分({1}/{2})", _rechargeCfgs[index].Value, limitChargeExp, _rechargeCfgs[index].Value); if (limitChargeExp >= _rechargeCfgs[index].Value) { if (_activityInfo.GetRewards.IndexOf(_rechargeCfgs[index].Id) >= 0) { item.m_btnGetGiftBag.grayed = true; item.m_btnGetGiftBag.title = "已领取"; } else { item.m_btnGetGiftBag.grayed = false; item.m_btnGetGiftBag.title = "领取"; } } else { item.m_btnGetGiftBag.grayed = true; item.m_btnGetGiftBag.title = "领取"; } } private void ListRewardItemRender(int index, GObject obj) { List rewards = (List)obj.parent.data; UI_ComItem item = UI_ComItem.Proxy(obj); ItemData itemData = ItemUtil.createItemData(rewards[index]); ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(itemData.id); item.m_txtCount.text = itemData.num.ToString(); item.target.data = itemCfg; item.m_QualityType.selectedIndex = itemCfg.Rarity - 1; item.m_loaIcon.url = ResPathUtil.GetIconPath(itemCfg); UI_ComItem.ProxyEnd(); } private void OnBtnShowClick(EventContext context) { GObject obj = context.sender as GObject; int suitId = (int)obj.data; int _suitTypeId = 0; for (int i = 0; i < CommonDataManager.Tables.TblSuitGuideMenuCfg.DataList.Count; i++) { List suitIds = CommonDataManager.Tables.TblSuitGuideMenuCfg.DataList[i].SuitIds; if (suitIds.IndexOf(suitId.ToString()) >= 0) { _suitTypeId = CommonDataManager.Tables.TblSuitGuideMenuCfg.DataList[i].Id; break; } } ViewManager.Show(new object[] { _suitTypeId, suitId, new List() { suitId }, false }); } private void OnBtnGetGiftBagClick(EventContext context) { GObject obj = context.sender as GObject; int id = (int)obj.data; ActivityGlobalSProxy.ReqGetActivityBonus(_activityId, id).Coroutine(); } private void OnBtnLeftClick() { if (_curSelectIndex == 0) return; _curSelectIndex = _curSelectIndex - 1; string name = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(_rechargeCfgs[_curSelectIndex].SuitId).Name; _ui.m_packageName.text = name; UpdateSuitView(); UpdateRedDot(); } private void OnBtnRightClick() { if (_curSelectIndex == _rechargeCfgs.Count - 1) { ItemRenderer(_curSelectIndex); return; } _curSelectIndex = _curSelectIndex + 1; string name = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(_rechargeCfgs[_curSelectIndex].SuitId).Name; _ui.m_packageName.text = name; UpdateSuitView(); UpdateRedDot(); } private void UpdateRedDot() { int indexPrior = Math.Max(0, _curSelectIndex - 1); int indexNext = Math.Min(_rechargeCfgs.Count - 1, _curSelectIndex + 1); TraverseList(indexPrior); TraverseList(indexNext); } private void TraverseList(int index) { if (index < _curSelectIndex) { for (int i = index; i >= 0; i--) { if (SetRedDot(i)) { RedDotController.Instance.SetComRedDot(_ui.m_btnLeft, true); break; } RedDotController.Instance.SetComRedDot(_ui.m_btnLeft, false); } } else { for (int i = index; i < _rechargeCfgs.Count; i++) { if (SetRedDot(i)) { RedDotController.Instance.SetComRedDot(_ui.m_btnRight, true); break; } RedDotController.Instance.SetComRedDot(_ui.m_btnRight, false); } } } private bool SetRedDot(int index) { long limitChargeExp = _activityInfo.CountValue; if (limitChargeExp >= _rechargeCfgs[index].Value) { if (_activityInfo.GetRewards.IndexOf(_rechargeCfgs[index].Id) < 0) { return true; } } return false; } private void OnBtnChargeClick() { ViewManager.Show(new object[] { ConstStoreTabId.STORE_CHARGE, ConstStoreSubId.STORE_CHARGE }); isGoChargeView = true; } private void UpdateSuitView() { _ui.m_btnLeft.visible = _curSelectIndex == 0 ? false : true; _ui.m_btnRight.visible = _curSelectIndex < _rechargeCfgs.Count - 1 ? true : false; ItemRenderer(_curSelectIndex); } private void UpdateTime(object param) { long curTime = TimeHelper.ServerNow(); long endTime = _activityInfo.EndTime; _ui.m_txtTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime); } private void OnListItemClick(EventContext context) { GComponent comItem = (context.data as GComponent); ItemCfg itemCfg = comItem.data as ItemCfg; GoodsItemTipsController.ShowItemTips(itemCfg.Id); } private void OnBtnBackClick() { ViewManager.GoBackFrom(typeof(NewLimitChargeView).FullName); } } }