using UI.Store; using UI.CommonGame; using UI.ActivityMain; using FairyGUI; using System.Collections.Generic; using ET; using static GFGGame.ShopSProxy; namespace GFGGame { public class StoreZGDCView : BaseWindow { //直购典藏-商城 private UI_StoreZGDCUI _ui; private ValueBarController _valueBarController; private List _shopCfgs; private List giftBagList = new List(); private int indexSuit = 0; private int indexItem = 0; private int muem2; private List listIndex = new List(); private List _effectUIs = new List(); //创角时间 private long day_CreateRole = 0; private long second_CreateRole = 0; //折扣时间两天(豪秒) private long saleSecondNum = 172800000; public override void Dispose() { if (_valueBarController != null) { _valueBarController.Dispose(); _valueBarController = null; } if (_ui != null) { _ui.Dispose(); } _ui = null; base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_StoreZGDCUI.PACKAGE_NAME; _ui = UI_StoreZGDCUI.Create(); this.viewCom = _ui.target; isfullScreen = true; this.clickBlankToClose = false; this.bringToFontOnClick = false; _valueBarController = new ValueBarController(_ui.m_valueBar); _ui.m_listCom.m_list.itemRenderer = ListItemRender; _ui.m_suitList.itemRenderer = ListItemSuitRender; _ui.m_suitList.SetVirtualAndLoop(); _ui.m_suitList.scrollPane.decelerationRate = 0.9f; } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.SHOP_BUY, UpdateView); EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, OnNumericChange); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.SHOP_BUY, UpdateView); EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, OnNumericChange); } protected override void OnShown() { base.OnShown(); _valueBarController.OnShown(); muem2 = (int)this.viewData; long time = GameGlobal.zoneScene.GetComponent().GetCurrentRole().CreateTime; second_CreateRole = time; day_CreateRole = TimeUtil.DaysDifference(TimeHelper.ServerNow() / 1000, time / 1000); AddgiftBagID(); ReturnDiscountTimeSuitIndex(); UpdateView(); Timers.inst.Add(5, 0, UpdateListSuit); //Timers.inst.Add(1, 0, UpdateTime); } protected override void OnHide() { Timers.inst.Remove(UpdateListSuit); //Timers.inst.Remove(UpdateTime); giftBagList.Clear(); listIndex.Clear(); base.OnHide(); ClearItemEff(); _valueBarController.OnHide(); } private void OnNumericChange(EventContext context) { } private void AddgiftBagID() { for(int i=0;i< ActivityOpenCfgArray.Instance.GetCfg(6001).paramsArr.Length;i++) { giftBagList.Add(ActivityOpenCfgArray.Instance.GetCfg(6001).paramsArr[i]); } for (int i = 0; i < ActivityOpenCfgArray.Instance.GetCfg(6002).paramsArr.Length; i++) { giftBagList.Add(ActivityOpenCfgArray.Instance.GetCfg(6002).paramsArr[i]); } } private void UpdateView() { ClearItemEff(); _shopCfgs = ShopCfgArray.Instance.GetCfgsBymenu1Andmenu2(102, muem2); _shopCfgs = ShopDataManager.Instance.RemoveNotOpenCfg(_shopCfgs); _shopCfgs = SortSaleCfg(); _shopCfgs = ShopDataManager.Instance.SortShopGoodsCfgs(_shopCfgs); //UpdateShopCfg(); _ui.m_suitList.numItems = giftBagList.Count; _ui.m_listCom.m_list.numItems = _shopCfgs.Count; } private void ListItemRender(int index, GObject obj) { ShopCfg shopCfg = _shopCfgs[index]; int isBuy; int currentID; int originalID; currentID = shopCfg.id; originalID = shopCfg.id; bool flog = false; foreach (var Id in listIndex) { if(Id == shopCfg.id) { flog = true; break; } } if (!flog) { shopCfg = ShopCfgArray.Instance.GetCfg(_shopCfgs[index].originalId); currentID = shopCfg.id; } UI_ListShopItem item = UI_ListShopItem.Proxy(obj); ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.itemId); item.m_txtName.text = shopCfg.itemName; item.m_icon.url = ResPathUtil.GetIconPath(itemCfg); item.m_grpDiscount.visible = shopCfg.Price < shopCfg.originalPrice; if (item.m_grpDiscount.visible) { EffectUI _effectUI = EffectUIPool.CreateEffectUI(item.m_holderfEff, "ui_Small_parts", "store_Value"); _effectUIs.Add(_effectUI); item.m_holderfEff.visible = shopCfg.Price < shopCfg.originalPrice; } item.m_txtDesc.text = shopCfg.Price <= 0 ? "" : ShopDataManager.Instance.GetShopGoodsDiscount(shopCfg.id).ToString(); item.m_txtEndTime.SetVar("value", ShopDataManager.Instance.GetEndTime(shopCfg.id)).FlushVars(); item.m_txtEndTime.visible = shopCfg.endTime != ""; item.m_c2.selectedIndex = ShopDataManager.Instance.GetShopGoodsStateById(shopCfg.id) ? 1 : 0; item.m_txtLock.text = ShopDataManager.Instance.GetShopGoodsStateTips(shopCfg.id); int buyNum = ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id); item.m_txtLimit.visible = shopCfg.maxBuyNum > 0; item.m_txtLimit.text = string.Format("{0}({1}/{2})", ShopDataManager.Instance.refreshType[shopCfg.refreshType], StringUtil.GetColorText(buyNum.ToString(), "#5A3E16"), shopCfg.maxBuyNum); item.m_c1.selectedIndex = shopCfg.maxBuyNum == 0 || buyNum < shopCfg.maxBuyNum ? 0 : 1; if (item.m_c1.selectedIndex == 0)//可购买 { item.m_btnBuy.m_txtOriginalPrice.text = NumberUtil.ChangeNumberUnit(shopCfg.originalPrice); if (shopCfg.Price > 0 && shopCfg.CostTypeReal != CostType.FREE)//不免费 { item.m_btnBuy.m_grpOriginalPrice.visible = shopCfg.originalPrice > 0 && shopCfg.originalPrice != shopCfg.Price; item.m_btnBuy.m_loaIcon.visible = true; item.m_btnBuy.m_txtPrice.text = NumberUtil.ChangeNumberUnit(shopCfg.Price);// cfg.price.ToString(); if (shopCfg.CostTypeReal == CostType.RMB)//人民币 { item.m_btnBuy.m_loaIcon.visible = false; item.m_btnBuy.m_txtIcon.visible = true; item.m_btnBuy.m_txtIcon.text = "¥"; } else//道具 { ItemCfg costItemCfg = ItemCfgArray.Instance.GetCfg(shopCfg.CostIdReal); item.m_btnBuy.m_loaIcon.url = ResPathUtil.GetIconPath(costItemCfg); item.m_btnBuy.m_loaIcon.visible = true; item.m_btnBuy.m_txtIcon.visible = false; } } else { item.m_btnBuy.m_txtIcon.text = ""; item.m_btnBuy.m_loaIcon.visible = false; item.m_btnBuy.m_grpOriginalPrice.visible = false; item.m_btnBuy.m_txtPrice.text = "免费"; } } if (item.target.data == null) { item.target.onClick.Add(OnBtnBugItem); } item.target.data = new List { currentID, originalID }; bool isRed = item.m_c1.selectedIndex == 0 && item.m_c2.selectedIndex == 0 && shopCfg.Price == 0; RedDotController.Instance.SetComRedDot(item.target, isRed, "", -6, 100); UI_ListShopItem.ProxyEnd(); } private void ListItemSuitRender(int index, GObject obj) { UI_StoreZGTHitem item = UI_StoreZGTHitem.Proxy(obj); var suitCfg = SuitCfgArray.Instance.GetCfg(EverydaySaleCfgArray.Instance.dataArray[index].SuitShow); ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(giftBagList[index]); int discount = (int)(((double)shopCfg.originalPrice / (double)shopCfg.configPrice) * 100); item.m_suitIcon.url = string.Format("ui://Store/{0}", suitCfg.res); item.m_txtName.text = suitCfg.name; ////判断是否在折扣时间内,是否显示 if (!IsDisountTime(EverydaySaleCfgArray.Instance.dataArray[index])) { //不在 item.m_DiscountGroud.visible = false; item.m_timeText.visible = false; item.m_btnCharge.GetChild("title").text = string.Format("{0}元/购买", shopCfg.originalPrice.ToString()); } else { //在 //_ui.m_btnCharge.GetChild("title").text = string.Format("{0}元/购买", shopCfg.configPrice.ToString()); item.m_discountText.text = string.Format("{0}", discount.ToString()); item.m_DiscountGroud.visible = true; item.m_timeText.visible = true; long endTime; if (EverydaySaleCfgArray.Instance.dataArray[index].activityId == 6002) { var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(EverydaySaleCfgArray.Instance.dataArray[index].activityId); endTime = activityInfo.EndTime; var leftTime = endTime - TimeHelper.ServerNow(); item.m_timeText.text = TimeUtil.FormattingTimeTo_DDHHmm(leftTime); } else { long timeSale = (second_CreateRole+(saleSecondNum*(index+1))) - TimeHelper.ServerNow(); item.m_timeText.text = TimeUtil.FormattingTimeTo_DDHHmm(timeSale); } } if(suitCfg.rarity == 5) { item.m_tyDesc.visible = true; } else { item.m_tyDesc.visible = false; } UI_StoreZGTHitem.ProxyEnd(); } private void OnBtnBugItem(EventContext context) { //idlist:0:当前显示的id,1:折扣id; List idList = (List) (context.sender as GObject).data; ShopCfg cfg = ShopCfgArray.Instance.GetCfg(idList[0]); ShopCfg cfg1 = ShopCfgArray.Instance.GetCfg(idList[1]); bool isSellOutoriginal = true; if (cfg.originalId == 0) { int maxBuyNum = cfg.maxBuyNum; int countBuyNum = ShopDataManager.Instance.GetGoodsBuyNumById(cfg.id) + ShopDataManager.Instance.GetGoodsBuyNumById(cfg1.originalId); isSellOutoriginal = maxBuyNum > 0 && maxBuyNum - countBuyNum <= 0; } else { ShopCfg shopcfg = ShopCfgArray.Instance.GetCfg(idList[0]); isSellOutoriginal = shopcfg.maxBuyNum > 0 && shopcfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopcfg.id) <= 0; } if (isSellOutoriginal) { PromptController.Instance.ShowFloatTextPrompt("已售罄"); return; } // if (!ShopDataManager.Instance.GetShopGoodsStateById(cfg.id)) // { // PromptController.Instance.ShowFloatTextPrompt(ShopDataManager.Instance.GetShopGoodsStateTips(cfg.id)); // return; // } if (cfg.CostTypeReal == CostType.FREE) { ShopSProxy.ReqShopBuy(cfg.id, 1).Coroutine(); LogServerHelper.SendPlayParticipationLog((int)PlayParticipationEnum.SHANG_CHENG, 2); } else { ViewManager.Show(cfg.id); } } private void UpdateListSuit(object param) { int itemIndex = _ui.m_suitList.ChildIndexToItemIndex(0) + 1; indexItem = itemIndex - 1; itemIndex = itemIndex == _ui.m_suitList.numItems ? 0 : itemIndex; _ui.m_suitList.scrollPane.ScrollRight(0.8f, true); } public List SortSaleCfg() { List shopCfgs = new List(); for (int i = 0; i < EverydaySaleCfgArray.Instance.dataArray.Length; i++) { ShopCfg shopcfg = ShopCfgArray.Instance.GetCfg(giftBagList[i]); var item = EverydaySaleCfgArray.Instance.dataArray[i]; if (item.openTime == "" || item.openTime == null) { shopCfgs.Add(shopcfg); break; } if (IsDisountTime(item) || day_CreateRole >= item.id*2) { shopCfgs.Add(shopcfg); } } return shopCfgs; } private bool IsDisountTime(EverydaySaleCfg item) { if(item.activityId == 6002 && item.openTime == "") { return ActivityGlobalDataManager.Instance.IsActivityOpen(item.activityId); } long second = TimeHelper.ServerNow() - second_CreateRole; if (second < (saleSecondNum * item.id) && second >= (saleSecondNum*(item.id-1))) { return true; } return false; } private bool IsSaleTime(EverydaySaleCfg item) { if (item.activityId == 6002 && item.openTime == "") { return !ActivityGlobalDataManager.Instance.IsActivityOpen(item.activityId); } long second = TimeHelper.ServerNow() - second_CreateRole; if (second < (saleSecondNum * item.id) && second >= (saleSecondNum * (item.id - 1))) { return false; } return true; } private void ReturnDiscountTimeSuitIndex() { int count = 0; foreach (var item in EverydaySaleCfgArray.Instance.dataArray) { if(item.activityId == 6002) { listIndex.Add(giftBagList[count]); count++; break; } if (IsDisountTime(item)) { listIndex.Add(giftBagList[count]); } count++; } } private void UpdateTime(object param) { var activityInfo = EverydaySaleCfgArray.Instance.dataArray[indexItem]; long endTime = 0; if (activityInfo != null) { endTime = TimeUtil.DateTimeToTimestamp(activityInfo.endTime); } int index = _ui.m_suitList.GetFirstChildInView(); GObject itemobj = _ui.m_suitList.GetChildAt(index%3); UI_StoreZGTHitem item = UI_StoreZGTHitem.Proxy(itemobj); var leftTime = endTime - TimeHelper.ServerNow(); if (leftTime <= 0) { item.m_timeText.text = ""; item.m_DiscountGroud.visible = false; } else { item.m_timeText.text = TimeUtil.FormattingTimeTo_DDHHmm(leftTime); } UI_StoreZGTHitem.ProxyEnd(); } private void ClearItemEff() { for (int i = 0; i < _effectUIs.Count; i++) { EffectUIPool.Recycle(_effectUIs[i]); _effectUIs[i] = null; } _effectUIs.Clear(); } } }