local _ShopTypeConfig = ConfigManager.GetConfig(ConfigName.StoreTypeConfig) local GlobalActConfig = ConfigManager.GetConfig(ConfigName.GlobalActivity) -- 通用得商店逻辑 local ShopViewNew = {} local sortingOrder = 0 ---===============================生命周期函数================================ function ShopViewNew:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = ShopViewNew }) return b end --初始化组件(用于子类重写) function ShopViewNew:InitComponent() self.spLoader = SpriteLoader.New() self.live = Util.GetGameObject(self.gameObject, "live") self.liveRoot = Util.GetGameObject(self.gameObject, "live/root") self.liveImg = Util.GetGameObject(self.gameObject, "live/img") self.basePanel = Util.GetGameObject(self.gameObject, "base") self.closeTimePanel = Util.GetGameObject(self.gameObject, "base/closeTime") self.closeTimeLab = Util.GetGameObject(self.closeTimePanel, "timelab") self.closeTime = Util.GetGameObject(self.closeTimePanel, "time") self.refreshTimePanel = Util.GetGameObject(self.gameObject, "base/refreshTime") self.refreshTimeLab = Util.GetGameObject(self.refreshTimePanel, "timelab") self.refreshTime = Util.GetGameObject(self.refreshTimePanel, "time") self.countTimePanel = Util.GetGameObject(self.gameObject, "base/countTime") self.countTimeLab = Util.GetGameObject(self.countTimePanel, "timelab") self.countTime = Util.GetGameObject(self.countTimePanel, "time") self.refreshCountPanel = Util.GetGameObject(self.gameObject, "base/refreshCount") self.countLabTip = Util.GetGameObject(self.refreshCountPanel, "GameObject/tip") self.countLab = Util.GetGameObject(self.refreshCountPanel, "GameObject/count") self.refreshBtnPanel = Util.GetGameObject(self.gameObject, "base/refreshBtn") self.refreshBtn = Util.GetGameObject(self.refreshBtnPanel, "btn") self.refreshRedpot = Util.GetGameObject(self.refreshBtnPanel, "redpot") self.costIcon = Util.GetGameObject(self.refreshBtnPanel, "costIcon") self.costLab = Util.GetGameObject(self.refreshBtnPanel, "costLab") self.contentBg = Util.GetGameObject(self.gameObject, "duihua") self.content = Util.GetGameObject(self.gameObject, "duihua/Text") self.scrollBg = Util.GetGameObject(self.gameObject, "scrollbg") self.scrollRoot = Util.GetGameObject(self.gameObject, "scrollbg/scrollroot") self.scrollBg1 = Util.GetGameObject(self.gameObject, "scrollbg/bg1") self.scrollBg2 = Util.GetGameObject(self.gameObject, "scrollbg/bg2") self.scrollBg3 = Util.GetGameObject(self.gameObject, "scrollbg/bg3") self.bottom = Util.GetGameObject(self.gameObject, "scrollbg/bottom") self.tip = Util.GetGameObject(self.gameObject, "scrollbg/tip") self.shopItem = Util.GetGameObject(self.gameObject, "scrollbg/scrollroot/shopItem") self.rechargeShopItem = Util.GetGameObject(self.gameObject, "scrollbg/scrollroot/item") self.titleBg = Util.GetGameObject(self.gameObject, "scrollbg/titlebg") self.titleImg = Util.GetGameObject(self.gameObject, "scrollbg/titlebg/title") self.helpBtn = Util.GetGameObject(self.gameObject, "scrollbg/titlebg/helpBtn")--scrollbg/titlebg/ self.helpPosition = self.helpBtn:GetComponent("RectTransform").localPosition -- 创建循环列表 if not self.ScrollView then self.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.scrollRoot.transform, self.shopItem, nil, Vector2.New(1000, 1024), 1, 3, Vector2.New(80, 0)) self.ScrollView.moveTween.MomentumAmount = 1 self.ScrollView.moveTween.Strength = 2 end -- 创建循环列表 if not self.RechargeScrollView then self.RechargeScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, self.scrollRoot.transform, self.rechargeShopItem, nil, Vector2.New(1000, 1024), 1, 3, Vector2.New(80, 0)) self.RechargeScrollView.moveTween.MomentumAmount = 1 self.RechargeScrollView.moveTween.Strength = 2 self.RechargeScrollView.gameObject.transform.localPosition = Vector3.New(0, -20, 0) self.RechargeScrollView.elastic = false end end --绑定事件(用于子类重写) function ShopViewNew:BindEvent() Util.AddOnceClick(self.refreshBtn, function() PlaySoundWithoutClick("UI_refresh") local isPopUp = RedPointManager.PlayerPrefsGetStr(PlayerManager.uid .. self.ShopType) local currentTime = os.date("%Y%m%d", PlayerManager.serverTime) local shopType = self.ShopType local isAutoRecover = ShopManager.IsAutoRecoverCount(shopType) if (isPopUp ~= currentTime) and not isAutoRecover then local shopInfo = ShopManager.GetShopInfoByType(shopType) local costId, abcd = shopInfo.RefreshItem[1][1], shopInfo.RefreshItem[2] local refreshNum = PrivilegeManager.GetPrivilegeUsedTimes(shopInfo.RefreshPrivilege) local costNum = CalculateCostCount(refreshNum, abcd) local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local costName = itemConfig[costId].Name local str = string.format("是否花费%d%s刷新商店", costNum, costName) MsgPanel.ShowTwo(str, function() end, function(isShow) if (isShow) then local currentTime = os.date("%Y%m%d", PlayerManager.serverTime) RedPointManager.PlayerPrefsSetStr(PlayerManager.uid .. self.ShopType, currentTime) end ShopManager.RequestRefreshShop(shopType, false) end, "取消", "确定",nil,true) else ShopManager.RequestRefreshShop(self.ShopType, false) end -- 重置商店刷新按钮点击状态 ShopManager.SetShopRefreshBtnClickStatus(self.ShopType, true) end) --帮助按钮 Util.AddOnceClick(ShopViewNew.helpBtn, function() if self.ShopConfig.HelpId==0 then return end UIManager.OpenPanel(UIName.HelpPopup, self.ShopConfig.HelpId , ShopViewNew.helpPosition.x,ShopViewNew.helpPosition.y+372)--因层级锚点原因,需手动调整高度 end) end local RefreshData = function(self) self:OnShow(sortingOrder) end --添加事件监听(用于子类重写) function ShopViewNew:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Shop.OnShopInfoChange,RefreshData,self) end --移除事件监听(用于子类重写) function ShopViewNew:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Shop.OnShopInfoChange,RefreshData,self) end function ShopViewNew:OnSortingOrderChange() end --界面打开时调用(用于子类重写) function ShopViewNew:OnOpen(_activityConfig,_index,parent) self.actConfig = _activityConfig self.pageIndex = _index self.parent = parent end function ShopViewNew:OnShow(_sortingOrder) self.gameObject:SetActive(true) sortingOrder = _sortingOrder self.actId = self.actConfig.ActId self.actType = self.actConfig.ActiveType > 0 and self.actConfig.ActiveType or self.actConfig.FunType if self.actConfig.IfBack == 1 then if self.actConfig.ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType) LogGreen("id:"..id) if id and id > 0 then self.actId = id local actConfig local actConfig = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"ActId",GlobalActConfig[id].ShowArt,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType) if not actConfig then actConfig = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"ActId",id,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType) end if actConfig then self.actConfig = actConfig end end end end self.ShopType = self.actConfig.ShopData[1][1] LogYellow("self.ShopType:"..tostring(self.ShopType)) if self.ShopType == SHOP_TYPE.QIANKUNBOX_SHOP or self.ShopType == SHOP_TYPE.honglushangdian or self.ShopType == SHOP_TYPE.fangcunxunbao then self.parent.tabbox.gameObject:SetActive(false) else self.parent.tabbox.gameObject:SetActive(true) end self:ShowShop() end -- 设置要显示的商店类型 function ShopViewNew:ShowShop() self.ScrollView:ForeachItemGO(function (index, go) go.gameObject:SetActive(false) end) -- 红点销毁 self.refreshRedpot:SetActive(false) LogYellow("self.ShopType:"..tostring(self.ShopType)) self.ShopId = ShopManager.GetShopDataByType(self.ShopType).id self.ShopConfig = _ShopTypeConfig[self.ShopId] -- 显示帮助按钮 self.helpBtn:SetActive(self.ShopConfig.HelpId ~= 0) self:RefreshShopInfo(false, true) -- 设置tip显隐 local isSSSHop = self.ShopType == SHOP_TYPE.SOUL_STONE_SHOP self.scrollBg1:SetActive(not isSSSHop) self.scrollBg2:SetActive(not isSSSHop) self.titleBg:SetActive(not isSSSHop) self.bottom:SetActive(not isSSSHop) self.scrollBg3:SetActive(isSSSHop) self.tip:SetActive(isSSSHop) end -- 刷新商店内容显示 function ShopViewNew:RefreshShopInfo(isRefresh, isTop) if self.ShopType == SHOP_TYPE.SOUL_STONE_SHOP then self.RechargeShopData = OperatingManager.GetGiftGoodsInfoList(GoodsTypeDef.DemonCrystal) else self.ShopData = ShopManager.GetShopDataByType(self.ShopType) end self:RefreshLive() self:RefreshBase() self:RefreshItemList(isTop) -- 刷新商店的查看时间 ShopManager.RefreshShopCheckTime(self.ShopType) if isRefresh then -- 物品节点播放特效 if self._GoodsItemList then for _, item in pairs(self._GoodsItemList) do item:OnShowUIeffectItemViewSaoguang() end end end end -- 刷新立绘显示 function ShopViewNew:RefreshLive() if not self.ShopConfig.LiveName or self.ShopConfig.LiveName == "" then self.live:SetActive(false) return end self.live:SetActive(true) self.liveImg:SetActive(false) self.liveRoot:SetActive(false) -- 立绘 --TODO:动态加载立绘 self.liveRoot:SetActive(true) if self.liveNode then poolManager:UnLoadLive(self.LiveName, self.liveNode) end local scale = self.ShopConfig.LiveScale scale = Vector3.New(scale[1], scale[2], scale[3]) local livePos = Vector3.zero if self.ShopConfig.LivePos then livePos.x = self.ShopConfig.LivePos[1] livePos.y = self.ShopConfig.LivePos[2] end self.LiveName = self.ShopConfig.LiveName self.liveNode = poolManager:LoadLive(self.ShopConfig.LiveName, self.liveRoot.transform, scale, livePos) local SkeletonGraphic = self.liveNode:GetComponent("SkeletonGraphic") local idle = function() SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) end SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true) SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete + idle poolManager:SetLiveClearCall(self.ShopConfig.LiveName, self.liveNode, function() SkeletonGraphic.AnimationState.Complete = SkeletonGraphic.AnimationState.Complete - idle end) end -- 刷新时间及刷新按钮 function ShopViewNew:RefreshBase() -- 自动刷新时间倒计时 local leftTime = ShopManager.GetShopRefreshLeftTime(self.ShopType) self.isShowRefreshTime = leftTime >= 0 self.refreshTimePanel:SetActive(self.isShowRefreshTime) -- 商店关闭时间倒计时 local closeTime = ShopManager.GetShopCloseTime(self.ShopType) self.isShowCloseTime = closeTime >= 0 and not self.isShowRefreshTime self.closeTimePanel:SetActive(self.isShowCloseTime) if self.isShowCloseTime then if self.ShopType == SHOP_TYPE.ARENA_SHOP or self.ShopType == SHOP_TYPE.TOP_MATCH_SHOP then self.closeTimeLab:GetComponent("Text").text = "距离刷新:" else self.closeTimeLab:GetComponent("Text").text = "距离商人离开:" end end -- 次数恢复时间 local countTime = ShopManager.GetShopRefreshCountRecoverTime(self.ShopType) self.isShowCountTime = countTime >= 0 self.countTimePanel:SetActive(self.isShowCountTime) --开始倒计时 self:StartTimeCount() -- 主动刷新按钮 local leftCount = ShopManager.GetShopLeftRefreshCount(self.ShopType) if leftCount == -2 then -- 不支持刷新 self.refreshCountPanel:SetActive(false) self.refreshBtnPanel:SetActive(false) else self.refreshBtnPanel:SetActive(true) if leftCount == -1 then -- 无限制次数刷新 self.refreshCountPanel:SetActive(false) elseif leftCount >= 0 then -- 限制次数刷新 self.refreshCountPanel:SetActive(true) self.countLab:GetComponent("Text").text = leftCount end local isAutoRecover = ShopManager.IsAutoRecoverCount(self.ShopType) if isAutoRecover then self.costIcon:SetActive(false) self.costLab:SetActive(false) self.countLabTip:GetComponent("Text").text = "(剩余免费刷新 次)" self.isMaxTime = false else self.costIcon:SetActive(true) self.costLab:SetActive(true) self.countLabTip:GetComponent("Text").text = "(剩余可用刷新 次)" -- 刷新物品计算 local shopInfo = ShopManager.GetShopInfoByType(self.ShopType) local costId, abcd = shopInfo.RefreshItem[1][1], shopInfo.RefreshItem[2] self.costIcon:GetComponent("Image").sprite = SetIcon(self.spLoader, costId) -- 商店特权正确性检测 if not shopInfo.RefreshPrivilege or shopInfo.RefreshPrivilege == 0 then Log("错误:商店类型 == " .. self.ShopType .. "商店支持手动刷新,但是未配置刷新次数对应的特权id(无限制次数也需要配置特权id)请检查") end local refreshNum = PrivilegeManager.GetPrivilegeUsedTimes(shopInfo.RefreshPrivilege) self.costLab:GetComponent("Text").text = "×" .. CalculateCostCount(refreshNum, abcd) end end -- 商店标题 if self.ShopConfig.Title and self.ShopConfig.Title ~= "" then self.titleImg:GetComponent("Image").sprite = self.spLoader:LoadSprite(self.ShopConfig.Title) end self.contentBg:SetActive(false) end -- 开始倒计时 function ShopViewNew:StartTimeCount() local self = self local function _TimeUpdate() -- 检测计时器是否已销毁,避免计时器销毁后仍然会执行一次,导致报错的问题 if not self._TimeCounter then return end -- 刷新时间 if self.isShowRefreshTime then local refreshTime = ShopManager.GetShopRefreshLeftTime(self.ShopType) if refreshTime >= 0 then self.refreshTime:GetComponent("Text").text = TimeToHMS(refreshTime) end end -- 关闭时间 if self.isShowCloseTime then local closeTime = ShopManager.GetShopCloseTime(self.ShopType) if closeTime >= 0 then local timeStr = "" -- if self.ShopType == SHOP_TYPE.ACTIVITY_SHOP then -- timeStr = TimeToDHMS(closeTime) -- else timeStr = TimeToHMS(closeTime) -- end self.closeTime:GetComponent("Text").text = timeStr end end -- 次数恢复时间 if self.isShowCountTime then local refreshTime = ShopManager.GetShopRefreshCountRecoverTime(self.ShopType) local maxTime = ShopManager.GetMaxRefreshCount(self.ShopType) local isAutoRecover, leftTime = ShopManager.IsAutoRecoverCount(self.ShopType) if refreshTime > 0 then self.countTime:GetComponent("Text").text = TimeToHMS(refreshTime) elseif isAutoRecover and maxTime == leftTime and not self.isMaxTime then -- self:RefreshBase() self.countTime:GetComponent("Text").text = "次数已满" self.countLabTip:GetComponent("Text").text = "(剩余免费刷新 次)" self.countLab:GetComponent("Text").text = leftTime self.isMaxTime = true elseif isAutoRecover and maxTime ~= leftTime and refreshTime == 0 then self:RefreshBase() self.isMaxTime = false end end end -- 开始吧 if not self._TimeCounter then self._TimeCounter = Timer.New(_TimeUpdate, 1, -1, true) self._TimeCounter:Start() end -- 刷新一次 _TimeUpdate() end -- 刷新物品列表 function ShopViewNew:RefreshItemList(isTop) if self.ShopType == SHOP_TYPE.SOUL_STONE_SHOP then self.ScrollView.gameObject:SetActive(false) self.RechargeScrollView.gameObject:SetActive(true) local itemlist = self.RechargeShopData self.RechargeScrollView:SetData(itemlist, function(index, shopItem) local itemData = itemlist[index] self:RechargeShopItemAdapter(shopItem, itemData) end, not isTop) else -- 重置列表 self.RechargeScrollView.gameObject:SetActive(false) self.ScrollView.gameObject:SetActive(true) local itemlist = ShopManager.CheckShopItemList(self.ShopData.storeItem) self.ScrollView:SetData(itemlist, function(index, shopItem) local itemData = itemlist[index] self:ShopItemAdapter(shopItem, itemData) end, not isTop) local curindex = 0 for i = 1 ,#itemlist do if self.ShopType == ShopManager.selectIndex.shopType then for j = 1 , #ShopManager.selectIndex.storeId do if itemlist[i].id == ShopManager.selectIndex.storeId[j] then ShopManager.SetSelectIndex(0,{},1) curindex = i break end end end if curindex ~= 0 then break end end if curindex ~= 0 then self.ScrollView:SetIndex(curindex) end end end -- 妖晶商店物品数据匹配 function ShopViewNew:RechargeShopItemAdapter(shopItem, itemData) -- 获取对象 local first = Util.GetGameObject(shopItem, "first") local firstNum = Util.GetGameObject(shopItem, "first/Text"):GetComponent("Text") local icon = Util.GetGameObject(shopItem, "icon"):GetComponent("Image") local num = Util.GetGameObject(shopItem, "itemName"):GetComponent("Text") local price = Util.GetGameObject(shopItem, "price/Text"):GetComponent("Text") -- 计算数据 local itemInfo = ShopManager.GetRechargeItemInfo(itemData.goodsId) icon.sprite = self.spLoader:LoadSprite(GetResourcePath(itemInfo.Resources)) num.text = itemInfo.Name price.text = MoneyUtil.GetMoneyMark() .. MoneyUtil.GetMoney(itemInfo.Price) -- 判断首充赠送 local curBuyCount = itemData.buyTimes first:SetActive(curBuyCount < 1) firstNum.text = itemInfo.FirstMultiple[1][2] -- 购买事件 Util.AddOnceClick(shopItem, function() PayManager.Pay(itemData.goodsId, function(id) self:RechargeSuccessFunc(itemData.goodsId) end) end) end -- 商店物品数据匹配 function ShopViewNew:ShopItemAdapter(shopItem, itemData) -- 获取对象 local effect = Util.GetGameObject(shopItem, "Fx_SquareFlow") effect.gameObject:SetActive(false) Util.SetParticleSortLayer(effect, sortingOrder + 1) -- 获取对象 local bg = Util.GetGameObject(shopItem, "bg") local item = Util.GetGameObject(bg, "item") local itemName = Util.GetGameObject(bg, "itemName"):GetComponent("Text") local itemDes = Util.GetGameObject(bg, "itemDes"):GetComponent("Text") local limitBg = Util.GetGameObject(bg, "buyLimitbg") local limitTip = Util.GetGameObject(bg, "buyLimitbg/tip"):GetComponent("Text") local limitTimes = Util.GetGameObject(bg, "buyLimitbg/buyLimit"):GetComponent("Text") local priceBg = Util.GetGameObject(bg, "pricebg") local itemPrice = Util.GetGameObject(bg, "pricebg/price"):GetComponent("Text") local costIcon = Util.GetGameObject(bg, "pricebg/costIcon"):GetComponent("Image") local discountbg = Util.GetGameObject(bg, "discountbg") local empty = Util.GetGameObject(shopItem, "empty") local yihuode = Util.GetGameObject(shopItem, "yihuode") local lock = Util.GetGameObject(shopItem, "lock") local lockTip = Util.GetGameObject(shopItem, "lock/tip"):GetComponent("Text") local new = Util.GetGameObject(shopItem, "GameObject/new") -- 计算数据 local itemInfo = ShopManager.GetShopItemInfo(itemData.id) local curBuyCount = itemData.buyNum local maxLimitCount = ShopManager.GetShopItemLimitBuyCount(itemData.id) local costId, price = ShopManager.calculateBuyCost(self.ShopType, itemData.id, 1) local goods = ShopManager.GetShopItemGoodsInfo(itemData.id) local con = ConfigManager.GetConfigData(ConfigName.ItemConfig,goods[1][1]) itemName.text = SubString2(GetLanguageStrById(con.Name),8) if con.ItemType == ItemType.LingShouChip then local haveCount = BagManager.GetTotalItemNum(con.Id) itemName.text = itemName.text.."\n"..string.format("%s(%s/%s)",UIColorStr.BLACK, "25", "拥有:", haveCount, con.UsePerCount) end -- 折扣 if price == 0 then discountbg:SetActive(true) discountbg:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_shop_zhekou_00") else local isDiscount = itemInfo.IsDiscount == 1 discountbg:SetActive(isDiscount) if isDiscount then discountbg:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_shop_zhekou_0" .. itemInfo.DiscountDegree.."_zh") end end -- 消耗物品的信息 itemPrice.text = PrintWanNum2(tonumber(price))--tostring(price) costIcon.sprite = SetIcon(self.spLoader, costId) -- 判断商品栏位是否解锁 local _IsUnLock = true if self.ShopType == SHOP_TYPE.GUILD_SHOP then local isUnLock, unLockLevel = MyGuildManager.GetGuildShopSortIsUnLock(itemInfo.Sort) if not isUnLock then _IsUnLock = false lockTip.text = string.format("公会%d级解锁", unLockLevel) end end if con.ItemType == ItemType.Talisman then itemDes.gameObject:SetActive(true) if con.ItemDescribe then local str=string.split(con.ItemDescribe,',') if str[1] then itemDes.text=str[1] end else itemDes.gameObject:SetActive(false) end else itemDes.gameObject:SetActive(false) end lock:SetActive(not _IsUnLock) priceBg.gameObject:SetActive(_IsUnLock) itemName.gameObject:SetActive(_IsUnLock) -- 限购 limitBg:SetActive(maxLimitCount ~= -1) limitTimes.text = maxLimitCount limitTimes.gameObject:SetActive(maxLimitCount ~= -1) -- 售空 限购次数为-1 表示不限购 local isEmpty = maxLimitCount ~= -1 and curBuyCount >= maxLimitCount if curBuyCount >= maxLimitCount then empty:SetActive(true) else empty:SetActive(false) end empty:SetActive(isEmpty) -- 数据匹配 if not self._GoodsItemList then self._GoodsItemList = {} end if not self._GoodsItemList[shopItem] then self._GoodsItemList[shopItem] = SubUIManager.Open(SubUIConfig.ItemView, item.transform) end Util.SetGray(self._GoodsItemList[shopItem].gameObject, not _IsUnLock) if isEmpty or not _IsUnLock then -- 物品空或者未解锁不现实物品特效 self._GoodsItemList[shopItem]:OnOpen(false, goods[1],1,false,false,false) else self._GoodsItemList[shopItem]:OnOpen(false, goods[1],1,false,false,false,sortingOrder) end -- 商品颜色显示 local imgColor = isEmpty and Color.New(0.5, 0.5, 0.5, 1) or Color.New(1, 1, 1, 1) local textA = isEmpty and 0.7 or 1 Util.SetColor(bg, imgColor) self:SetAlpha(itemName, textA) self:SetAlpha(limitTip, textA) self:SetAlpha(limitTimes, textA) self:SetAlpha(itemPrice, textA) local isshow = false if self.ShopType == ShopManager.selectIndex2.shopType then for j = 1 , #ShopManager.selectIndex2.storeId do if itemData.id == ShopManager.selectIndex2.storeId[j] then isshow = true break end end end if isshow then effect.gameObject:SetActive(true) end if self.ShopType == SHOP_TYPE.QIANKUNBOX_SHOP then if SoulPrintManager.CheckSoulExist(con.Id) then new.gameObject:SetActive(false) else new.gameObject:SetActive(true) end else new.gameObject:SetActive(false) end yihuode.gameObject:SetActive(false) if con.ItemType == ItemType.Incarnation and not isEmpty then local num = BagManager.GetItemCountById(con.Id) if num > 0 or IncarnationManager.GetStatusByItemId(con.Id) >= 0 then yihuode.gameObject:SetActive(true) Util.SetColor(bg, Color.New(0.5, 0.5, 0.5, 1)) end end -- 购买事件 Util.AddOnceClick(lock, function() PopupTipPanel.ShowTip("商品未解锁") end) Util.AddOnceClick(empty, function() PopupTipPanel.ShowTip("商品已售空") end) Util.AddOnceClick(bg, function() -- if con.ItemType == ItemType.Incarnation then -- local num = BagManager.GetItemCountById(con.Id) -- if num > 0 or IncarnationManager.GetStatusByItemId(con.Id) >= 0 then -- PopupTipPanel.ShowTip("无法选择已获取过的变身卡!") -- return -- end -- end -- 售空 if isEmpty then PopupTipPanel.ShowTip("商品已售空") return end if not _IsUnLock then PopupTipPanel.ShowTip("商品未解锁") return end UIManager.OpenPanel(UIName.ShopBuyPopup, self.ShopType, itemData.id) end) end -- 充值成功回调 function ShopViewNew:RechargeSuccessFunc(id) FirstRechargeManager.RefreshAccumRechargeValue(id) OperatingManager.RefreshGiftGoodsBuyTimes(GoodsTypeDef.DemonCrystal, id) self:RefreshShopInfo(false, false) --PopupTipPanel.ShowTip("购买成功,请到邮箱中领取!") PlayerPrefs.SetInt(PlayerManager.uid.."czlb", 0) CheckRedPointStatus(RedPointType.GrowthPackage)--成长礼包红点检测 end --界面关闭时调用(用于子类重写) function ShopViewNew:OnClose() if self._TimeCounter then self._TimeCounter:Stop() self._TimeCounter = nil end self.parent.tabbox.gameObject:SetActive(true) self.gameObject:SetActive(false) end --界面销毁时调用(用于子类重写) function ShopViewNew:OnDestroy() self.spLoader:Destroy() -- 物品节点回收 if self._GoodsItemList then for _, item in pairs(self._GoodsItemList) do Util.SetColor(item.gameObject, Color.New(1,1,1,1)) Util.SetGray(item.gameObject, false) SubUIManager.Close(item) end self._GoodsItemList = {} end if self.ScrollView then SubUIManager.Close(self.ScrollView) self.ScrollView = nil end if self.RechargeScrollView then SubUIManager.Close(self.RechargeScrollView) self.RechargeScrollView = nil end if self.liveNode then poolManager:UnLoadLive(self.LiveName, self.liveNode) self.liveNode = nil end end ---=================================工具函数========================================== -- 设置文本透明度 function ShopViewNew:SetAlpha(text, a) local color = text.color color.a = a text.color = color end ---=====================================对外接口=============================---- -- 设置立绘位置 function ShopViewNew:SetLivePosition(pos) -- 计算位置 if not pos then return end if not self.liveNode then return end self.liveNode.transform.localPosition = pos end -- 设置商店物品栏位置 function ShopViewNew:SetItemContentPosition(pos) -- 计算位置 if not pos then return end self.scrollBg.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(pos.x, pos.y) --self.scrollBg.transform.localPosition = pos end -- 设置基础信息位置 function ShopViewNew:SetBasePanelPostion(pos) self.basePanel:GetComponent("RectTransform").anchoredPosition = pos end -- 设置层级 function ShopViewNew:SetSortLayer(sortLayer) if not self._GoodsItemList then self._GoodsItemList = {} end -- -- Log("sortLayer _GoodsItemList "..sortLayer.." "..LengthOfTable(self._GoodsItemList)) for _, item in pairs(self._GoodsItemList) do item:SetEffectLayer(sortLayer)--ShopViewNew.sortingOrder) end -- self.titleBg:GetComponent("Canvas").sortingOrder = sortLayer + 1 -- 保存层级 sortingOrder = sortLayer end return ShopViewNew