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

104 lines
2.7 KiB
Lua

WeekCardManager = {}
local this = WeekCardManager
--初始化月卡数据
local _WeekCardData = {}
function this.InitWeekCardData()
NetManager.GetWeekCardData(function(msg)
this.UpdateAllWeekCard(msg)
end)
end
-- 更新所有周卡数据
function this.UpdateAllWeekCard(msg)
_WeekCardData = {}
Log("周卡信息初始化 "..#msg.allWeekCardInfo)
for i, data in ipairs(msg.allWeekCardInfo) do
this.UpdateWeekCardData(data)
end
-- 发送事件
Game.GlobalEvent:DispatchEvent(GameEvent.WeekCard.OnWeekCardUpdate)
end
-- 更新月卡数据
function this.UpdateWeekCardData(data)
-- LogRed("月卡信息更新 "..data.id.." "..tostring(data.isBuy).." "..data.leaveGetRewardDays)
local week = {}
week.id = data.id
week.isBuy = data.isBuy
week.leaveGetRewardDays = data.leaveGetRewardDays
_WeekCardData[data.id] = week
-- 检测红点显示
CheckRedPointStatus(RedPointType.WeekCardReward)
end
-- 请求获取周卡数据
function this.GetWeekCardData(id)
return _WeekCardData[id]
end
-- 获取周卡数据,以数组的形式
function this.GetWeekCardDataArray()
local list = {}
if _WeekCardData then
for id, data in pairs(_WeekCardData) do
table.insert(list, data)
end
end
table.sort(list, function(a, b)
return a.id < b.id
end)
return list
end
-- 请求领取周卡奖励
function this.RequestGetWeekCardReward(id, func)
local data = this.GetWeekCardData(id)
if not data then
LogRed("未找到周卡数据:"..id)
return
end
if not data.isBuy then
LogRed("尚未购买周卡:"..id)
return
end
-- 请求领取
NetManager.GetWeekCardReward(id, function(msg)
UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1)
-- 累计时间归0
data.leaveGetRewardDays = 0
this.UpdateWeekCardData(data)
--
if func then
func()
end
end)
end
-- 检测是否进入过周卡界面
function this.CheckRedOpen()
local isCheck = PlayerPrefs.GetInt("IsCheckWeekCard_"..PlayerManager.uid, 0)
if isCheck == 1 then
return false
end
return true
end
-- 是否有可以领取的红点
function this.CheckRedReward()
if _WeekCardData then
for id, data in pairs(_WeekCardData) do
if data.isBuy and data.leaveGetRewardDays > 0 then
return true
end
end
end
return false
end
-- 根据是否有周卡数据,判断周卡功能是否开启
function this.IsWeekCardOpen()
local list = this.GetWeekCardDataArray()
if list and #list > 0 then
return true
end
return false
end