c1_lua/lua/app/ui/shop/shop_comp.lua
2023-07-24 17:07:05 +08:00

434 lines
15 KiB
Lua

local ShopComp = class("ShopComp", LuaComponent)
local TOP_HEIGHT = 136
local BOTTOM_HEIGHT = 218
local TITLE_HEIGHT = 54
local PAGE_DISCOUNT = 1
local PAGE_MAIN = 2
local TITLE_POS = -100
local PAGE_MAIN_BOX_SELL_CELL = "app/ui/shop/cell/box_sell_cell"
local PAGE_MAIN_HOT_SELL_CELL = "app/ui/shop/cell/hot_sell_cell"
local PAGE_MAIN_GEM_SELL_CELL = "app/ui/shop/cell/gem_sell_cell"
local PAGE_MAIN_GOLD_SELL_CELL = "app/ui/shop/cell/gold_sell_cell"
local PAGE_DISCOUNT_CHAPTER_SELL_CELL = "app/ui/shop/cell/chapter_sell_cell" -- 章节
local PAGE_DISCOUNT_BEGINNER_SELL_CELL = "app/ui/shop/cell/beginner_sell_cell" -- 新手
local PAGE_DISCOUNT_LEVEL_SELL_CELL = "app/ui/shop/cell/level_sell_cell" -- 助力
local PAGE_DISCOUNT_GROW_SELL_CELL = "app/ui/shop/cell/grow_sell_cell" -- 成长
local PAGE_DISCOUNT_COIN_SELL_CELL = "app/ui/shop/cell/coin_sell_cell" -- 金币
local PAGE_DISCOUNT_ARENA_SELL_CELL = "app/ui/shop/cell/arena_gift_sell_cell" -- 竞技场
local PAGE_DISCOUNT_WEAPON_SELL_CELL = "app/ui/shop/cell/weapon_gift_sell_cell" -- 武器
local PAGE_DISCOUNT_ARMOR_SELL_CELL = "app/ui/shop/cell/armor_gift_sell_cell" -- 防具
function ShopComp:init()
self.uiMap = self.baseObject:genAllChildren()
self.page = PAGE_MAIN -- 默认展示主要商品
self.post = false
self:initTitlePage()
self:initMainPage()
self:initDiscountPage()
self:switchPage(self.page)
end
function ShopComp:initTitlePage()
self.titleNode = self.uiMap["shop_comp.title_node"]
self.subTitleText1 = self.uiMap["shop_comp.title_node.btn_cell_1.text"]
self.subTitleSelectText1 = self.uiMap["shop_comp.title_node.btn_cell_1.select_text"]
self.subTitleIcon1 = self.uiMap["shop_comp.title_node.btn_cell_1.icon"]
self.subTitleBtn1 = self.uiMap["shop_comp.title_node.btn_cell_1"]
self.subTitleText2 = self.uiMap["shop_comp.title_node.btn_cell_2.text"]
self.subTitleSelectText2 = self.uiMap["shop_comp.title_node.btn_cell_2.select_text"]
self.subTitleIcon2 = self.uiMap["shop_comp.title_node.btn_cell_2.icon"]
self.subTitleBtn2 = self.uiMap["shop_comp.title_node.btn_cell_2"]
self.subTitleText1:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_16)) -- 特惠商品
self.subTitleSelectText1:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_16)) -- 特惠商品
self.subTitleText2:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_17)) -- 主要商品
self.subTitleSelectText2:setText(I18N:getGlobalText(I18N.GlobalConst.SHOP_DESC_17)) -- 主要商品
self.subTitleBtn1:addClickListener(function()
self:switchPage(PAGE_DISCOUNT)
end)
self.subTitleBtn2:addClickListener(function()
self:switchPage(PAGE_MAIN)
end)
self:refreshTitle()
local safeHeight = SafeAreaManager:getNotchScreenHeight()
self.titleNode:setAnchoredPositionY(TITLE_POS - safeHeight)
if GFunc.isShenhe() then
self.subTitleBtn2:setAnchoredPositionX(0)
self.subTitleBtn1:setVisible(false)
end
end
function ShopComp:refreshTitle()
if self.page == PAGE_DISCOUNT then
self.subTitleText1:setAnchoredPositionY(GConst.NOT_VISIBLE_POS)
self.subTitleSelectText1:setAnchoredPositionY(0)
self.subTitleIcon1:setAnchoredPositionY(0)
self.subTitleText2:setAnchoredPositionY(0)
self.subTitleSelectText2:setAnchoredPositionY(GConst.NOT_VISIBLE_POS)
self.subTitleIcon2:setAnchoredPositionY(GConst.NOT_VISIBLE_POS)
else
self.subTitleText1:setAnchoredPositionY(0)
self.subTitleSelectText1:setAnchoredPositionY(GConst.NOT_VISIBLE_POS)
self.subTitleIcon1:setAnchoredPositionY(GConst.NOT_VISIBLE_POS)
self.subTitleText2:setAnchoredPositionY(GConst.NOT_VISIBLE_POS)
self.subTitleSelectText2:setAnchoredPositionY(0)
self.subTitleIcon2:setAnchoredPositionY(0)
end
end
function ShopComp:switchPage(page)
if page == PAGE_DISCOUNT and GFunc.isShenhe() then
page = PAGE_MAIN
end
if self.page ~= page then
self.page = page
self.post = false
self:refresh()
end
end
function ShopComp:goSubType(subType)
local scrollRectObj = self.uiMap["shop_comp.main.scrollrect"]
local contentObj = self.uiMap["shop_comp.main.scrollrect.viewport.content"]
local boxHeight = 0
if self.boxSellCell and self.boxSellCell:getIsOpen() then
boxHeight = self.boxSellCell:getCellHeight()
end
local hotHeight = 0
if self.hotSellCell and self.hotSellCell:getIsOpen() then
hotHeight = self.hotSellCell:getCellHeight()
end
local gemHeight = 0
if self.gemSellCell and self.gemSellCell:getIsOpen() then
gemHeight = self.gemSellCell:getCellHeight()
end
local goldHeight = 0
if self.goldSellCell and self.goldSellCell:getIsOpen() then
goldHeight = self.goldSellCell:getCellHeight()
end
local maxHeight = math.min(boxHeight + hotHeight + gemHeight + goldHeight - scrollRectObj:fastGetSizeDeltaY())
local height = 0
if subType == GConst.ShopConst.MAIN_PAGE_TYPE.BOX then
-- 默认在开头
elseif subType == GConst.ShopConst.MAIN_PAGE_TYPE.HOT then
height = height + boxHeight
elseif subType == GConst.ShopConst.MAIN_PAGE_TYPE.GEM then
height = height + boxHeight + hotHeight
elseif subType == GConst.ShopConst.MAIN_PAGE_TYPE.GOLD then
height = height + boxHeight + hotHeight + gemHeight
end
contentObj:setAnchoredPositionY(math.min(height, maxHeight))
end
function ShopComp:initMainPage()
self.mainNode = self.uiMap["shop_comp.main"]
local scrollrect = self.uiMap["shop_comp.main.scrollrect"]
local height = self.baseObject:getTransform().rect.height
height = height - TITLE_HEIGHT - TOP_HEIGHT - BOTTOM_HEIGHT
local safeHeight = SafeAreaManager:getNotchScreenHeight()
height = height - safeHeight
scrollrect:setSizeDeltaY(height)
self.mainScrollContent = self.uiMap["shop_comp.main.scrollrect.viewport.content"]
self.boxSellCell = self.uiMap["shop_comp.main.scrollrect.viewport.content.box_sell_cell"]:addLuaComponent(PAGE_MAIN_BOX_SELL_CELL)
self.hotSellCell = self.uiMap["shop_comp.main.scrollrect.viewport.content.hot_sell_cell"]:addLuaComponent(PAGE_MAIN_HOT_SELL_CELL)
self.gemSellCell = self.uiMap["shop_comp.main.scrollrect.viewport.content.gem_sell_cell"]:addLuaComponent(PAGE_MAIN_GEM_SELL_CELL)
self.goldSellCell = self.uiMap["shop_comp.main.scrollrect.viewport.content.gold_sell_cell"]:addLuaComponent(PAGE_MAIN_GOLD_SELL_CELL)
end
function ShopComp:initDiscountPage()
self.discountNode = self.uiMap["shop_comp.discount"]
local scrollrect = self.uiMap["shop_comp.discount.scrollrect"]
local height = self.baseObject:getTransform().rect.height
height = height - TITLE_HEIGHT - TOP_HEIGHT - BOTTOM_HEIGHT
local safeHeight = SafeAreaManager:getNotchScreenHeight()
height = height - safeHeight
scrollrect:setSizeDeltaY(height)
self.discountContent = self.uiMap["shop_comp.discount.scrollrect.viewport.content"]
self.chapterSellCell = self.uiMap["shop_comp.discount.scrollrect.viewport.content.chapter_sell_cell"]:addLuaComponent(PAGE_DISCOUNT_CHAPTER_SELL_CELL)
self.beginnerSellCell = self.uiMap["shop_comp.discount.scrollrect.viewport.content.beginner_sell_cell"]:addLuaComponent(PAGE_DISCOUNT_BEGINNER_SELL_CELL)
self.levelSellCell = self.uiMap["shop_comp.discount.scrollrect.viewport.content.level_sell_cell"]:addLuaComponent(PAGE_DISCOUNT_LEVEL_SELL_CELL)
self.growSellCell = self.uiMap["shop_comp.discount.scrollrect.viewport.content.grow_sell_cell"]:addLuaComponent(PAGE_DISCOUNT_GROW_SELL_CELL)
self.coinSellCell = self.uiMap["shop_comp.discount.scrollrect.viewport.content.coin_sell_cell"]:addLuaComponent(PAGE_DISCOUNT_COIN_SELL_CELL)
self.arenaSellCell = self.uiMap["shop_comp.discount.scrollrect.viewport.content.arena_gift_sell_cell"]:addLuaComponent(PAGE_DISCOUNT_ARENA_SELL_CELL)
self.weponSellCell = self.uiMap["shop_comp.discount.scrollrect.viewport.content.weapon_gift_sell_cell"]:addLuaComponent(PAGE_DISCOUNT_WEAPON_SELL_CELL)
self.armorSellCell = self.uiMap["shop_comp.discount.scrollrect.viewport.content.armor_gift_sell_cell"]:addLuaComponent(PAGE_DISCOUNT_ARMOR_SELL_CELL)
end
function ShopComp:refresh()
if self.page == PAGE_DISCOUNT then
self.mainNode:setAnchoredPositionX(GConst.NOT_VISIBLE_POS)
self.discountNode:setAnchoredPositionX(0)
DataManager.ShopData:markShopDiscountRedPoint()
self.subTitleBtn1:removeRedPoint()
if DataManager.ShopData:getRp() then
self.subTitleBtn2:addRedPoint(84, 24)
else
self.subTitleBtn2:removeRedPoint()
end
else
self.mainNode:setAnchoredPositionX(0)
self.discountNode:setAnchoredPositionX(GConst.NOT_VISIBLE_POS)
self.subTitleBtn2:removeRedPoint()
if DataManager.ShopData:getShopDiscountRedPoint() then
self.subTitleBtn1:addRedPoint(-84, 24)
else
self.subTitleBtn1:removeRedPoint()
end
end
self:refreshTitle()
self:refreshDiscountPage()
self:refreshMainPage()
-- 如果已经跨天了 需要重新请求每日礼包数据
if DataManager.ShopData:getMallDailyDirty() then
DataManager.ShopData:markMallDailyDirty(false)
ModuleManager.ShopManager:mallDailyGiftOverDay()
end
self:refreshTime()
-- 上报
self:postEnterPage()
end
function ShopComp:postEnterPage()
if self.post then
return
end
self.post = true
if self.page == PAGE_DISCOUNT then
-- 找到所有的项目
-- 章节
local actIdList = DataManager.ShopData:getActChapterStoreCanBuyActIds()
if actIdList and #actIdList > 0 then
BIReport:postPayUIShow(BIReport.GIFT_TYPE.ACT_CHAPTER_STORE, actIdList[1]) -- 约定上报第一个付费项
end
-- 新手
if not DataManager.ShopData:getBeginnerGiftHasBuy() then
BIReport:postPayUIShow(BIReport.GIFT_TYPE.BEGINNER_GIFT, GConst.ShopConst.BEGINNER_GIFT_ID)
end
-- 助力
local actIdList = DataManager.ShopData:getLevelUpGiftActIds()
if actIdList and #actIdList > 0 then
for _, id in ipairs(actIdList) do
BIReport:postPayUIShow(BIReport.GIFT_TYPE.LEVEL_UP_GIFT, id)
end
end
-- 成长
local act = DataManager.ShopData:getGrowUpGift()
if act then
BIReport:postPayUIShow(BIReport.GIFT_TYPE.GROW_UP_GIFT_NEW, act.current_grow_up_id)
end
-- 金币
local actId = DataManager.ShopData:getValidCoinGiftId()
if actId and actId > 0 then
BIReport:postPayUIShow(BIReport.GIFT_TYPE.COIN_GIFT, actId)
end
else
-- 找到所有的钻石项目
BIReport:postPayUIShow(BIReport.GIFT_TYPE.MALL_TREASURE, 2) -- 约定上报第一个付费项
end
end
function ShopComp:clearPostFlag()
self.post = false
end
function ShopComp:refreshTime()
if self.hotSellCell and self.hotSellCell:getIsOpen() then
self.hotSellCell:refreshTime()
end
local coinCellCount = 0
if self.coinSellCell and self.coinSellCell:getIsOpen() then
coinCellCount = self.coinSellCell:getCellCount()
self.coinSellCell:refreshTime()
end
if self.coinCellCount ~= coinCellCount then
self.coinCellCount = coinCellCount
DataManager.ShopData:setDirty()
end
local growCellCount = 0
if self.growSellCell and self.growSellCell:getIsOpen() then
growCellCount = self.growSellCell:getCellCount()
self.growSellCell:refreshTime()
end
if self.growCellCount ~= growCellCount then
self.growCellCount = growCellCount
DataManager.ShopData:setDirty()
end
local arenaGiftOpen = false
if self.arenaSellCell and self.arenaSellCell:getIsOpen() then
arenaGiftOpen = true
self.arenaSellCell:refreshTime()
end
if self.arenaGiftOpen ~= arenaGiftOpen then
self.arenaGiftOpen = arenaGiftOpen
DataManager.ShopData:setDirty()
end
local weponGiftOpen = false
if self.weponSellCell and self.weponSellCell:getIsOpen() then
weponGiftOpen = true
self.weponSellCell:refreshTime()
end
if self.weponGiftOpen ~= weponGiftOpen then
self.weponGiftOpen = weponGiftOpen
DataManager.ShopData:setDirty()
end
local armorGiftOpen = false
if self.armorSellCell and self.armorSellCell:getIsOpen() then
armorGiftOpen = true
self.armorSellCell:refreshTime()
end
if self.armorGiftOpen ~= armorGiftOpen then
self.armorGiftOpen = armorGiftOpen
DataManager.ShopData:setDirty()
end
end
function ShopComp:refreshDiscountPage()
-- 同SideBarDiscountCell:getIsOpen()一起修改
local y = 0
local cellHeight = 0
-- 章节
if self.chapterSellCell:getIsOpen() then
self.chapterSellCell:setVisible(true)
self.chapterSellCell:refresh()
self.chapterSellCell:getBaseObject():setAnchoredPositionY(0)
cellHeight = self.chapterSellCell:getCellHeight()
y = y + cellHeight
else
self.chapterSellCell:setVisible(false)
end
-- 新手
if self.beginnerSellCell:getIsOpen() then
self.beginnerSellCell:setVisible(true)
self.beginnerSellCell:refresh()
self.beginnerSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.beginnerSellCell:getCellHeight()
y = y + cellHeight
else
self.beginnerSellCell:setVisible(false)
end
-- 竞技场
if self.arenaSellCell:getIsOpen() then
self.arenaSellCell:setVisible(true)
self.arenaSellCell:refresh()
self.arenaSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.arenaSellCell:getCellHeight()
y = y + cellHeight
else
self.arenaSellCell:setVisible(false)
end
-- 武器
if self.weponSellCell:getIsOpen() then
self.weponSellCell:setVisible(true)
self.weponSellCell:refresh()
self.weponSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.weponSellCell:getCellHeight()
y = y + cellHeight
else
self.weponSellCell:setVisible(false)
end
-- 防具
if self.armorSellCell:getIsOpen() then
self.armorSellCell:setVisible(true)
self.armorSellCell:refresh()
self.armorSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.armorSellCell:getCellHeight()
y = y + cellHeight
else
self.armorSellCell:setVisible(false)
end
-- 助力
if self.levelSellCell:getIsOpen() then
self.levelSellCell:setVisible(true)
self.levelSellCell:refresh()
self.levelSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.levelSellCell:getCellHeight()
y = y + cellHeight
else
self.levelSellCell:setVisible(false)
end
-- 成长
if self.growSellCell:getIsOpen() then
self.growSellCell:setVisible(true)
self.growSellCell:refresh()
self.growSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.growSellCell:getCellHeight()
y = y + cellHeight
else
self.growSellCell:setVisible(false)
end
-- 金币
if self.coinSellCell:getIsOpen() then
self.coinSellCell:setVisible(true)
self.coinSellCell:refresh()
self.coinSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.coinSellCell:getCellHeight()
y = y + cellHeight
else
self.coinSellCell:setVisible(false)
end
self.discountContent:setSizeDeltaY(y)
end
function ShopComp:refreshMainPage()
local y = 0
local cellHeight = 0
-- 宝箱
if self.boxSellCell:getIsOpen() then
self.boxSellCell:setVisible(true)
self.boxSellCell:refresh()
self.boxSellCell:getBaseObject():setAnchoredPositionY(0)
cellHeight = self.boxSellCell:getCellHeight()
y = y + cellHeight
else
self.boxSellCell:setVisible(false)
end
-- 每日特惠
if self.hotSellCell:getIsOpen() then
self.hotSellCell:setVisible(true)
self.hotSellCell:refresh()
self.hotSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.hotSellCell:getCellHeight()
y = y + cellHeight
else
self.hotSellCell:setVisible(false)
end
-- 钻石
if self.gemSellCell:getIsOpen() then
self.gemSellCell:setVisible(true)
self.gemSellCell:refresh()
self.gemSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.gemSellCell:getCellHeight()
y = y + cellHeight
else
self.gemSellCell:setVisible(false)
end
-- 金币
if self.goldSellCell:getIsOpen() then
self.goldSellCell:setVisible(true)
self.goldSellCell:refresh()
self.goldSellCell:getBaseObject():setAnchoredPositionY(-y)
cellHeight = self.goldSellCell:getCellHeight()
y = y + cellHeight
else
self.goldSellCell:setVisible(false)
end
self.mainScrollContent:setSizeDeltaY(y)
end
return ShopComp