c1_lua/lua/app/userdata/fund/fund_data.lua
2023-05-24 19:19:34 +08:00

182 lines
4.5 KiB
Lua

local FundData = class("FundData", BaseData)
local ACT_GIFT_FUND_BASE_ID_1 = 60202
local ACT_GIFT_FUND_BASE_ID_2 = 60102
local ACT_GIFT_FUND_ADVANCE_ID_1 = 60402
local ACT_GIFT_FUND_ADVANCE_ID_2 = 60302
function FundData:init(data)
data = data or GConst.EMPTY_TABLE
self.freeClaimed = {}
self.freeClaimedCount = 0
if data.free_awarded then
for _, v in ipairs(data.free_awarded) do
self.freeClaimed[v] = true
self.freeClaimedCount = self.freeClaimedCount + 1
end
end
self.baseClaimed = {}
self.baseClaimedCount = 0
if data.pay_low_awarded then
for _, v in ipairs(data.pay_low_awarded) do
self.baseClaimed[v] = true
self.baseClaimedCount = self.baseClaimedCount + 1
end
end
self.advanceClaimed = {}
self.advanceClaimedCount = 0
if data.pay_high_awarded then
for _, v in ipairs(data.pay_high_awarded) do
self.advanceClaimed[v] = true
self.advanceClaimedCount = self.advanceClaimedCount + 1
end
end
self:initLevelInfo()
local fundLevel = 1
local totalCount = 0
while true do
local levelInfoIds = self.levelInfoMap[fundLevel]
if levelInfoIds == nil then
fundLevel = fundLevel - 1
break
end
local firstLevelInfoId = levelInfoIds[1]
local cfg = self:getLevelFundCfg()
if DataManager.PlayerData:getLv() < cfg[firstLevelInfoId].level then -- 等级不够
fundLevel = fundLevel - 1
break
end
totalCount = totalCount + #levelInfoIds
if self.freeClaimedCount == totalCount and
self.freeClaimedCount == self.baseClaimedCount and
self.freeClaimedCount == self.advanceClaimedCount then
fundLevel = fundLevel + 1
else
break
end
end
if fundLevel < 1 then
fundLevel = 1
end
self.data.fundLevel = fundLevel
if self.data.fundLevel == 2 then
self.fundBaseId = ACT_GIFT_FUND_BASE_ID_2
self.fundAdvanceId = ACT_GIFT_FUND_ADVANCE_ID_2
else
self.fundBaseId = ACT_GIFT_FUND_BASE_ID_1
self.fundAdvanceId = ACT_GIFT_FUND_ADVANCE_ID_1
end
end
function FundData:initLevelInfo()
if not self.levelInfoMap then
self.levelInfoMap = {}
local cfg = self:getLevelFundCfg()
for id, info in pairs(cfg) do
if not self.levelInfoMap[info.stage] then
self.levelInfoMap[info.stage] = {}
end
table.insert(self.levelInfoMap[info.stage], id)
end
for level, _ in pairs(self.levelInfoMap) do
table.sort(self.levelInfoMap[level], function(a, b)
return a < b
end)
end
end
end
function FundData:getIsOpen()
return ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.FUND, true)
end
function FundData:getCurrLevelBaseRechargeId()
local info = self:getActGiftCfg()[self.fundBaseId]
return info.recharge_id
end
function FundData:getCurrLevelAdvanceRechargeId()
local info = self:getActGiftCfg()[self.fundAdvanceId]
return info.recharge_id
end
function FundData:getActGiftCfg()
if self.cfg == nil then
self.cfg = ConfigManager:getConfig("act_gift")
end
return self.cfg
end
function FundData:getLevelFundCfg()
if self.levelFundCfg == nil then
self.levelFundCfg = ConfigManager:getConfig("act_level_fund")
end
return self.levelFundCfg
end
function FundData:getCurrLevelInfoList()
return self.levelInfoMap[self.data.fundLevel] or GConst.EMPTY_TABLE
end
function FundData:getNeedLevel(id)
local levelFundInfo = self:getLevelFundCfg()[id]
if levelFundInfo == nil then
return 9999
end
return levelFundInfo.level
end
function FundData:getAllStepFundRewards(id)
local levelFundInfo = self:getLevelFundCfg()[id]
if levelFundInfo == nil then
return nil, nil, nil
end
return levelFundInfo.reward_free, levelFundInfo.reward_small, levelFundInfo.reward
end
function FundData:getFreeFundRewards(id)
local levelFundInfo = self:getLevelFundCfg()[id]
if levelFundInfo == nil then
return nil
end
return levelFundInfo.reward_free
end
function FundData:getBaseFundRewards(id)
local levelFundInfo = self:getLevelFundCfg()[id]
if levelFundInfo == nil then
return nil
end
return levelFundInfo.reward_small
end
function FundData:getAdvanceFundRewards(id)
local levelFundInfo = self:getLevelFundCfg()[id]
if levelFundInfo == nil then
return nil
end
return levelFundInfo.reward
end
function FundData:getIsBoughtBase()
return DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, self.fundBaseId) > 0
end
function FundData:getIsBoughtAdvance()
return DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, self.fundAdvanceId) > 0
end
function FundData:getIsClaimedFree(id)
return self.freeClaimed[id]
end
function FundData:getIsClaimedBase(id)
return self.baseClaimed[id]
end
function FundData:getIsClaimedAdvance(id)
return self.advanceClaimed[id]
end
return FundData