294 lines
7.1 KiB
Lua
294 lines
7.1 KiB
Lua
local GrowthFundData = class("GrowthFundData", BaseData)
|
|
|
|
local ACT_GIFT_FUND_BASE_ID_1 = 60202
|
|
local ACT_GIFT_FUND_BASE_ID_2 = 60402
|
|
local ACT_GIFT_FUND_ADVANCE_ID_1 = 60102
|
|
local ACT_GIFT_FUND_ADVANCE_ID_2 = 60302
|
|
|
|
function GrowthFundData:ctor()
|
|
self.data.dirty = false
|
|
self.isClaimAll = false
|
|
end
|
|
|
|
function GrowthFundData: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:initGrowthInfo()
|
|
self:initFundGrade()
|
|
end
|
|
|
|
function GrowthFundData:initGrowthInfo()
|
|
if not self.growthInfoMap then
|
|
self.growthInfoMap = {}
|
|
local cfg = self:getLevelFundCfg()
|
|
for id, info in pairs(cfg) do
|
|
if not self.growthInfoMap[info.stage] then
|
|
self.growthInfoMap[info.stage] = {}
|
|
end
|
|
table.insert(self.growthInfoMap[info.stage], id)
|
|
end
|
|
for grade, _ in pairs(self.growthInfoMap) do
|
|
table.sort(self.growthInfoMap[grade], function(a, b)
|
|
return a < b
|
|
end)
|
|
end
|
|
end
|
|
end
|
|
|
|
function GrowthFundData:initFundGrade()
|
|
local fundGrade = 1
|
|
local totalCount = 0
|
|
while true do
|
|
local growInfoIds = self.growthInfoMap[fundGrade]
|
|
if growInfoIds == nil then
|
|
fundGrade = fundGrade - 1
|
|
break
|
|
end
|
|
totalCount = totalCount + #growInfoIds
|
|
if self.freeClaimedCount >= totalCount and
|
|
self.baseClaimedCount >= totalCount and
|
|
self.advanceClaimedCount >= totalCount then
|
|
fundGrade = fundGrade + 1
|
|
else
|
|
break
|
|
end
|
|
end
|
|
if fundGrade < 1 then
|
|
fundGrade = 1
|
|
end
|
|
self.data.fundGrade = fundGrade
|
|
if self.data.fundGrade == 2 then
|
|
self.fundBaseId = ACT_GIFT_FUND_BASE_ID_2
|
|
self.fundAdvanceId = ACT_GIFT_FUND_ADVANCE_ID_2
|
|
if self.freeClaimedCount >= totalCount and self.baseClaimedCount >= totalCount and self.advanceClaimedCount >= totalCount then
|
|
self.isClaimAll = true
|
|
end
|
|
else
|
|
self.fundBaseId = ACT_GIFT_FUND_BASE_ID_1
|
|
self.fundAdvanceId = ACT_GIFT_FUND_ADVANCE_ID_1
|
|
end
|
|
end
|
|
|
|
function GrowthFundData:markDirty()
|
|
self.data.dirty = not self.data.dirty
|
|
end
|
|
|
|
function GrowthFundData:getIsOpen()
|
|
if self.isClaimAll then
|
|
return false
|
|
end
|
|
return ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.FUND, true)
|
|
end
|
|
|
|
function GrowthFundData:getFundGrade()
|
|
return self.data.fundGrade
|
|
end
|
|
|
|
function GrowthFundData:getFundBaseId()
|
|
return self.fundBaseId
|
|
end
|
|
|
|
function GrowthFundData:getFundAdvanceId()
|
|
return self.fundAdvanceId
|
|
end
|
|
|
|
function GrowthFundData:getCurrGradeBaseRechargeId()
|
|
local info = self:getActGiftCfg()[self.fundBaseId]
|
|
return info.recharge_id
|
|
end
|
|
|
|
function GrowthFundData:getCurrGradeAdvanceRechargeId()
|
|
local info = self:getActGiftCfg()[self.fundAdvanceId]
|
|
return info.recharge_id
|
|
end
|
|
|
|
function GrowthFundData:getActGiftCfg()
|
|
if self.cfg == nil then
|
|
self.cfg = ConfigManager:getConfig("act_gift")
|
|
end
|
|
return self.cfg
|
|
end
|
|
|
|
function GrowthFundData:getLevelFundCfg()
|
|
if self.levelFundCfg == nil then
|
|
self.levelFundCfg = ConfigManager:getConfig("act_level_fund")
|
|
end
|
|
return self.levelFundCfg
|
|
end
|
|
|
|
function GrowthFundData:getCurrGradeInfoList()
|
|
return self.growthInfoMap[self.data.fundGrade] or GConst.EMPTY_TABLE
|
|
end
|
|
|
|
function GrowthFundData:getNeedLevel(id)
|
|
local levelFundInfo = self:getLevelFundCfg()[id]
|
|
if levelFundInfo == nil then
|
|
return 9999
|
|
end
|
|
return levelFundInfo.level
|
|
end
|
|
|
|
function GrowthFundData: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 GrowthFundData:getFreeFundRewards(id)
|
|
local levelFundInfo = self:getLevelFundCfg()[id]
|
|
if levelFundInfo == nil then
|
|
return nil
|
|
end
|
|
return levelFundInfo.reward_free
|
|
end
|
|
|
|
function GrowthFundData:getBaseFundRewards(id)
|
|
local levelFundInfo = self:getLevelFundCfg()[id]
|
|
if levelFundInfo == nil then
|
|
return nil
|
|
end
|
|
return levelFundInfo.reward_small
|
|
end
|
|
|
|
function GrowthFundData:getAdvanceFundRewards(id)
|
|
local levelFundInfo = self:getLevelFundCfg()[id]
|
|
if levelFundInfo == nil then
|
|
return nil
|
|
end
|
|
return levelFundInfo.reward
|
|
end
|
|
|
|
function GrowthFundData:getIsBoughtBase()
|
|
return DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, self.fundBaseId) > 0
|
|
end
|
|
|
|
function GrowthFundData:getIsBoughtAdvance()
|
|
return DataManager.ShopData:getGiftBoughtNum(PayManager.PURCHARSE_TYPE.ACT_GIFT, self.fundAdvanceId) > 0
|
|
end
|
|
|
|
function GrowthFundData:getFreeClaimedMap()
|
|
return self.freeClaimed
|
|
end
|
|
|
|
function GrowthFundData:getIsClaimedFree(id)
|
|
return self.freeClaimed[id]
|
|
end
|
|
|
|
function GrowthFundData:getBaseClaimedMap()
|
|
return self.baseClaimed
|
|
end
|
|
|
|
function GrowthFundData:getIsClaimedBase(id)
|
|
return self.baseClaimed[id]
|
|
end
|
|
|
|
function GrowthFundData:getAdvanceClaimedMap()
|
|
return self.advanceClaimed
|
|
end
|
|
|
|
function GrowthFundData:getIsClaimedAdvance(id)
|
|
return self.advanceClaimed[id]
|
|
end
|
|
|
|
function GrowthFundData:getMinUnclaimedRewardIndex()
|
|
local playerLevel = DataManager.PlayerData:getLv()
|
|
local growInfoIds = self:getCurrGradeInfoList()
|
|
local minIndex = 0
|
|
local isBoughtBase = self:getIsBoughtBase()
|
|
local isBoughtAdvance = self:getIsBoughtAdvance()
|
|
for k, id in ipairs(growInfoIds) do
|
|
local levelFundInfo = self:getLevelFundCfg()[id]
|
|
if levelFundInfo then
|
|
if playerLevel >= levelFundInfo.level then -- 等级到了
|
|
if not self.freeClaimed[id] then -- 能领但是没有领
|
|
minIndex = k
|
|
break
|
|
end
|
|
if isBoughtBase then
|
|
if not self.baseClaimed[id] then -- 能领但是没有领
|
|
minIndex = k
|
|
break
|
|
end
|
|
end
|
|
if isBoughtAdvance then
|
|
if not self.advanceClaimed[id] then -- 能领但是没有领
|
|
minIndex = k
|
|
break
|
|
end
|
|
end
|
|
else
|
|
break
|
|
end
|
|
end
|
|
end
|
|
return minIndex
|
|
end
|
|
|
|
-- 是否有未领取的奖励
|
|
function GrowthFundData:getIfCanClaimReward()
|
|
if not self:getIsOpen() then
|
|
return false
|
|
end
|
|
return self:getMinUnclaimedRewardIndex() > 0
|
|
end
|
|
|
|
function GrowthFundData:onClaimFundRewards(list)
|
|
if list == nil then
|
|
return
|
|
end
|
|
if #list <= 0 then
|
|
return
|
|
end
|
|
for _, v in ipairs(list) do
|
|
if v.grade == 0 then
|
|
if not self.freeClaimed[v.id] then
|
|
self.freeClaimed[v.id] = true
|
|
self.freeClaimedCount = self.freeClaimedCount + 1
|
|
end
|
|
elseif v.grade == 1 then
|
|
if not self.baseClaimed[v.id] then
|
|
self.baseClaimed[v.id] = true
|
|
self.baseClaimedCount = self.baseClaimedCount + 1
|
|
end
|
|
elseif v.grade == 2 then
|
|
if not self.advanceClaimed[v.id] then
|
|
self.advanceClaimed[v.id] = true
|
|
self.advanceClaimedCount = self.advanceClaimedCount + 1
|
|
end
|
|
end
|
|
end
|
|
self:initFundGrade()
|
|
self:markDirty()
|
|
end
|
|
|
|
function GrowthFundData:onBoughtFund()
|
|
self:markDirty()
|
|
end
|
|
|
|
return GrowthFundData |