miduo_client/Assets/ManagedResources/~Lua/View/ShopViewNew.lua

687 lines
28 KiB
Lua
Raw Normal View History


local _ShopTypeConfig = ConfigManager.GetConfig(ConfigName.StoreTypeConfig)
2021-07-26 15:07:49 +08:00
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)
2021-07-24 19:33:56 +08:00
self:OnShow(sortingOrder)
end
--添加事件监听(用于子类重写)
function ShopViewNew:AddListener()
2021-07-24 19:33:56 +08:00
Game.GlobalEvent:AddEvent(GameEvent.Shop.OnShopInfoChange,RefreshData,self)
end
--移除事件监听(用于子类重写)
function ShopViewNew:RemoveListener()
2021-07-24 19:33:56 +08:00
Game.GlobalEvent:RemoveEvent(GameEvent.Shop.OnShopInfoChange,RefreshData,self)
end
2021-06-01 20:02:48 +08:00
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
2021-07-26 15:07:49 +08:00
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
2021-07-26 15:07:49 +08:00
end
self.ShopType = self.actConfig.ShopData[1][1]
2021-07-26 15:07:49 +08:00
LogYellow("self.ShopType:"..tostring(self.ShopType))
2021-07-15 16:43:35 +08:00
if self.ShopType == SHOP_TYPE.QIANKUNBOX_SHOP 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)
2021-07-26 15:07:49 +08:00
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)
2021-06-30 18:12:24 +08:00
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 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 lock = Util.GetGameObject(shopItem, "lock")
local lockTip = Util.GetGameObject(shopItem, "lock/tip"):GetComponent("Text")
-- 计算数据
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("<color=%s><size=%s>%s(%s/%s)</size></color>",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
2021-07-30 16:34:50 +08:00
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
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
-- 购买事件
Util.AddOnceClick(lock, function()
PopupTipPanel.ShowTip("商品未解锁")
end)
Util.AddOnceClick(empty, function()
PopupTipPanel.ShowTip("商品已售空")
end)
Util.AddOnceClick(bg, function()
-- 售空
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
2021-07-15 16:43:35 +08:00
self.parent.tabbox.gameObject:SetActive(true)
2021-07-24 17:02:30 +08:00
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