140 lines
3.4 KiB
Lua
140 lines
3.4 KiB
Lua
local ActGiftData = class("ActGiftData", BaseData)
|
|
|
|
local ActGift = ConfigManager:getConfig("act_gift")
|
|
|
|
function ActGiftData:ctor()
|
|
end
|
|
|
|
function ActGiftData:clear()
|
|
self.giftConfig = nil
|
|
end
|
|
|
|
--@region 礼包
|
|
function ActGiftData:getActGiftsByActId(actId)
|
|
local cfg = ConfigManager:getConfig("activity")[actId]
|
|
if not cfg then
|
|
return {}
|
|
end
|
|
return cfg.act_gift
|
|
end
|
|
|
|
function ActGiftData:getGiftConfig(actId, id)
|
|
self.giftConfig = self.giftConfig or {}
|
|
if self.giftConfig[actId] == nil then
|
|
self.giftConfig[actId] = {}
|
|
local ids = self:getActGiftsByActId(actId)
|
|
for i, id in ipairs(ids) do
|
|
local info = ConfigManager:getConfig("act_gift")[id]
|
|
info.id = id
|
|
self.giftConfig[actId][id] = info
|
|
end
|
|
end
|
|
|
|
if id then
|
|
return self.giftConfig[actId][id]
|
|
else
|
|
return self.giftConfig[actId]
|
|
end
|
|
end
|
|
|
|
function ActGiftData:getGiftIdsSort(actId)
|
|
local tempList = {}
|
|
for id, info in pairs(self:getGiftConfig(actId)) do
|
|
local temp = {id = info.id, _sort = info.id}
|
|
|
|
-- if self:isFreeGift(actId, info.id) then
|
|
-- temp._sort = temp._sort - 100000
|
|
-- end
|
|
if self:getGiftCanBuyCount(actId, info.id) <= 0 then
|
|
temp._sort = temp._sort + 100000000000
|
|
end
|
|
|
|
table.insert(tempList, temp)
|
|
end
|
|
table.sort(tempList, function(a, b) return a._sort < b._sort end)
|
|
|
|
local ids = {}
|
|
for i, data in ipairs(tempList) do
|
|
table.insert(ids, data.id)
|
|
end
|
|
|
|
return ids
|
|
end
|
|
|
|
-- 是否是广告礼包
|
|
function ActGiftData:isAdGift(actId, id)
|
|
local cfg = self:getGiftConfig(actId, id)
|
|
if cfg.item_cost == nil and cfg.recharge_id == nil and cfg.parameter_pro == nil then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 是否是免费礼包
|
|
function ActGiftData:isFreeGift(actId, id)
|
|
local cfg = self:getGiftConfig(actId, id)
|
|
if cfg.parameter_pro and cfg.parameter_pro[1] and cfg.parameter_pro[1] == 1 then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 是否是每日刷新礼包
|
|
function ActGiftData:isDailyGift(actId, id)
|
|
local cfg = self:getGiftConfig(actId, id)
|
|
if cfg.limit_type ~= nil and cfg.limit_type == 1 then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 是否是每周刷新礼包
|
|
function ActGiftData:isWeekGift(actId, id)
|
|
local cfg = self:getGiftConfig(actId, id)
|
|
if cfg.limit_type ~= nil and cfg.limit_type == 2 then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 获取礼包购买次数
|
|
function ActGiftData:getGiftBuyCount(id)
|
|
return DataManager.PaymentData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, id)
|
|
end
|
|
|
|
-- 获取礼包剩余可购买次数
|
|
function ActGiftData:getGiftCanBuyCount(actId, id)
|
|
local cfg = self:getGiftConfig(actId, id)
|
|
if cfg then
|
|
return cfg.limit - self:getGiftBuyCount(id)
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function ActGiftData:tryResetGift(actId, force)
|
|
local ids = self:getActGiftsByActId(actId)
|
|
if ids == nil then
|
|
return
|
|
end
|
|
for index, id in ipairs(ids) do
|
|
local config = ActGift[id]
|
|
if config then
|
|
if force or self:isDailyGift(actId, id) then
|
|
DataManager.PaymentData:resetGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, id)
|
|
elseif self:isWeekGift(actId, id) then
|
|
local isCrossWeek = Time:getDayofWeek() == 1
|
|
if isCrossWeek then
|
|
DataManager.PaymentData:resetGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, id)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 礼包名
|
|
function ActGiftData:getActGiftI18NName(actGiftId)
|
|
return I18N:getConfig("act_gift")[actGiftId] and I18N:getConfig("act_gift")[actGiftId].value
|
|
end
|
|
--@endregion
|
|
|
|
return ActGiftData |