miduo_client/Assets/ManagedResources/~Lua/Modules/Operating/MonthCardPage.lua

211 lines
8.3 KiB
Lua

local MonthCardPage = {}
local cardData = {
[1] = { curState = 0 ,cardType = MONTH_CARD_TYPE.MONTHCARD},
[2] = { curState = 0 ,cardType = MONTH_CARD_TYPE.LUXURYMONTHCARD},
[3] = { curState = 0 ,cardType = MONTH_CARD_TYPE.GIFT}
}
local sortingOrder = 0
local addTimeNum = 30 * 24 * 60 * 60
local monthCardConFig = ConfigManager.GetConfig(ConfigName.MonthcardConfig)
function MonthCardPage:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = MonthCardPage })
return b
end
local offSetX = {
[0] = Vector3.New(71.1,-7.34,0),
[1] = Vector3.New(188,-56,0),
[2] = Vector3.New(188,-56,0),
}
--初始化组件(用于子类重写)
function MonthCardPage:InitComponent()
self.spLoader = SpriteLoader.New()
self.grid = Util.GetGameObject(self.gameObject, "grid")
self.cardPres = {}
self.timerList = {}
for i= 1 ,3 do
self.cardPres[i] = {}
self.cardPres[i].go = self.grid.transform:GetChild(i - 1).gameObject
self.cardPres[i].month = Util.GetGameObject(self.cardPres[i].go, "small")
self.cardPres[i].btnText = Util.GetGameObject(self.cardPres[i].month, "Text"):GetComponent("Text")
self.cardPres[i].monthRedPot = Util.GetGameObject(self.cardPres[i].month, "redPoint")
self.cardPres[i].time = Util.GetGameObject(self.cardPres[i].go, "time")
self.cardPres[i].activRewardGrid=Util.GetGameObject(self.cardPres[i].go, "reward/activScroll/activRewardGrid")
self.cardPres[i].dayRewardGrid=Util.GetGameObject(self.cardPres[i].go, "reward/dayScroll/dayRewardGrid")
self.cardPres[i].rewardNum=Util.GetGameObject(self.cardPres[i].go, "Image (1)/num"):GetComponent("Text")
-- Util.GetGameObject(self.cardPres[i].go, "day/icon"):GetComponent("RectTransform").anchoredPosition = offSetX[GetCurLanguage()]
end
end
--绑定事件(用于子类重写)
function MonthCardPage:BindEvent()
for i = 1, #self.cardPres do
Util.AddOnceClick(self.cardPres[i].month,function()
local cardType=cardData[i].cardType
if cardData[i].curState==0 then
local curMonthCardConfig=monthCardConFig[cardType]
PayManager.Pay(curMonthCardConfig.Price, function()
cardData[i].curState=1
MonthCardManager.SetMonthCardGetStateData(cardType,1)
self.curAllMonthCardData = MonthCardManager.GetMonthCardData()
Util.SetGray(self.cardPres[i].month,false)
self.cardPres[i].month:GetComponent("Button").enabled = true
self.cardPres[i].btnText.text = "领取"
self:SetMonthCardTimes(i)
self.cardPres[i].monthRedPot:SetActive(true)
end)
else
NetManager.MonthCardTakeDailyRequest(cardData[i].cardType, function(drop)
MonthCardManager.SetMonthCardGetStateData(cardData[i].cardType,2)
self.curAllMonthCardData = MonthCardManager.GetMonthCardData()
Util.SetGray(self.cardPres[i].month,true)
self.cardPres[i].month:GetComponent("Button").enabled = false
self.cardPres[i].btnText.text = "已领取"
self.cardPres[i].monthRedPot:SetActive(false)
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1)
end)
end
end)
end
end
--添加事件监听(用于子类重写)
function MonthCardPage:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.MoneyPay.OnPayResultSuccess, self.BuySuccess)
Game.GlobalEvent:AddEvent(GameEvent.MonthCard.OnMonthCardUpdate, function()
MonthCardManager.RefreshMonthCardEnd()
PlayerPrefs.SetInt(PlayerManager.uid.."monthCard", 1)
self:RefreshStoneShow()
end)
end
--移除事件监听(用于子类重写)
function MonthCardPage:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.MoneyPay.OnPayResultSuccess, self.BuySuccess)
Game.GlobalEvent:RemoveEvent(GameEvent.MonthCard.OnMonthCardUpdate, function()
MonthCardManager.RefreshMonthCardEnd()
PlayerPrefs.SetInt(PlayerManager.uid.."monthCard", 1)
self:RefreshStoneShow()
end)
end
--界面打开时调用(用于子类重写)
function MonthCardPage:OnOpen(_activityConfig,_index,parent)
self.actConfig = _activityConfig
self.pageIndex = _index
self.parent = parent
end
function MonthCardPage:OnSortingOrderChange()
end
-- 打开,重新打开时回调
function MonthCardPage:OnShow(_sortingOrder)
self.gameObject:SetActive(true)
sortingOrder = _sortingOrder
MonthCardManager.RefreshMonthCardEnd()
PlayerPrefs.SetInt(PlayerManager.uid.."monthCard", 1)
self:RefreshStoneShow()
end
-- 妖晶数量显示
function MonthCardPage:RefreshStoneShow(index)
self.curAllMonthCardData = MonthCardManager.GetMonthCardData()
--月卡
for i = 1, #self.cardPres do
self:SetCardShow(i)
end
end
function MonthCardPage.RefreshStoneShow2()
LogError("刷新月卡")
self.curAllMonthCardData = MonthCardManager.GetMonthCardData()
--月卡
for i = 1, #self.cardPres do
self:SetCardShow(i)
end
end
function MonthCardPage:SetCardShow(i)
local cardType=cardData[i].cardType
local monthCardData=self.curAllMonthCardData[cardType]
local curMonthCardConfig=monthCardConFig[cardType]
local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,curMonthCardConfig.Price)
cardData[i].curState = monthCardData.state
self.cardPres[i].monthRedPot:SetActive(MonthCardManager.RefreshMonthCardRedPoint(cardType))
if cardType==MONTH_CARD_TYPE.MONTHCARD then
self.cardPres[i].rewardNum.text="双倍"
else
self.cardPres[i].rewardNum.text=curMonthCardConfig.ContiueDays * curMonthCardConfig.BaseReward[1][2]
end
self:SetMonthCardTimes(i)
---设置按钮显示
if monthCardData.state == 0 then
Util.SetGray(self.cardPres[i].month,false)
self.cardPres[i].month:GetComponent("Button").enabled = true
self.cardPres[i].btnText.text = rechargeConfig.Price..""
elseif monthCardData.state == 1 then
Util.SetGray(self.cardPres[i].month,false)
self.cardPres[i].month:GetComponent("Button").enabled = true
self.cardPres[i].btnText.text = "领取"
elseif monthCardData.state == 2 then
Util.SetGray(self.cardPres[i].month,true)
self.cardPres[i].month:GetComponent("Button").enabled = false
self.cardPres[i].btnText.text = Language[10101]
end
if self.cardPres[i].activRewardGrid.transform.childCount<=0 then
---设置奖励物品显示
for j = 1, #rechargeConfig.RewardShow do
local itemInfo = SubUIManager.Open(SubUIConfig.ItemView, self.cardPres[i].activRewardGrid.transform)
itemInfo:OnOpen(false, rechargeConfig.RewardShow[j], 0.6)
end
for j = 1, #curMonthCardConfig.BaseReward do
local itemInfo = SubUIManager.Open(SubUIConfig.ItemView, self.cardPres[i].dayRewardGrid.transform)
itemInfo:OnOpen(false, curMonthCardConfig.BaseReward[j], 0.6)
end
end
end
function MonthCardPage:SetMonthCardTimes(i)
local monthCardData=self.curAllMonthCardData[cardData[i].cardType]
local curMonthCardConfig=monthCardConFig[cardData[i].cardType]
---设置剩余时间
if monthCardData.state > 0 then
self.cardPres[i].time:SetActive(true)
local residueTimeNum = monthCardData.endingTime - GetTimeStamp()
local dayNum = math.floor(residueTimeNum / (24 * 3600))
self.cardPres[i].time:GetComponent("Text").text = Language[10480] .. dayNum ..Language[10017]
self.cardPres[i].time:SetActive(true)
else
self.cardPres[i].time:SetActive(false)
end
end
--界面关闭时调用(用于子类重写)
function MonthCardPage:OnClose()
self.gameObject:SetActive(false)
end
--界面销毁时调用(用于子类重写)
function MonthCardPage:OnDestroy()
self.spLoader:Destroy()
self.cardPres = {}
for index = 1, #self.timerList do
if self.timerList[index] then
self.timerList[index]:Stop()
self.timerList[index] = nil
end
end
self.timerList = {}
end
return MonthCardPage