using UI.Store; using UI.CommonGame; using UI.ActivityMain; using FairyGUI; using System.Collections.Generic; using System.Linq; using cfg.GfgCfg; 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 < CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(6001).Params1.Count; i++) { giftBagList.Add(CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(6001).Params1[i]); } for (int i = 0; i < CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(6002).Params1.Count; i++) { giftBagList.Add(CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(6002).Params1[i]); } } private void UpdateView() { ClearItemEff(); _shopCfgs = CommonDataManager.Tables.TblShopCfg.DataList .Where(a => a.Menu1 == 102 && a.Menu2 == muem2).ToList(); _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 = CommonDataManager.Tables.TblShopCfg.GetOrDefault(_shopCfgs[index].OriginalId); currentID = shopCfg.Id; } UI_ListShopItem item = UI_ListShopItem.Proxy(obj); ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(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 = CommonDataManager.Tables.TblItemCfg.GetOrDefault(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 = CommonDataManager.Tables.TblSuitCfg.GetOrDefault(CommonDataManager.Tables.TblEverydaySaleCfg .DataList[index].SuitShow); ShopCfg shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(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(CommonDataManager.Tables.TblEverydaySaleCfg.DataList[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 (CommonDataManager.Tables.TblEverydaySaleCfg.DataList[index].ActivityId == 6002) { var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(CommonDataManager.Tables.TblEverydaySaleCfg .DataList[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 = CommonDataManager.Tables.TblShopCfg.GetOrDefault(idList[0]); ShopCfg cfg1 = CommonDataManager.Tables.TblShopCfg.GetOrDefault(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 = CommonDataManager.Tables.TblShopCfg.GetOrDefault(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 < CommonDataManager.Tables.TblEverydaySaleCfg.DataList.Count; i++) { ShopCfg shopcfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(giftBagList[i]); var item = CommonDataManager.Tables.TblEverydaySaleCfg.DataList[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) { 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 CommonDataManager.Tables.TblEverydaySaleCfg.DataList) { //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 = CommonDataManager.Tables.TblEverydaySaleCfg.DataList[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(); } } }