local IdleData = class("IdleData", BaseData) function IdleData:ctor() self.data.dirty = false self.idleRewardMap = {} end function IdleData:init(data) data = data or GConst.EMPTY_TABLE self.data.dropTime = (data.claim_at or 0) // 1000 self.data.adCount = data.ad_count or 0 self.data.energyCount = data.energy_count or 0 end function IdleData:onGetIdleShowRewrad(data) data = data or GConst.EMPTY_TABLE self.data.dropTime = (data.claim_at or 0) // 1000 self.data.adCount = data.ad_count or 0 self.data.energyCount = data.energy_count or 0 self:updateIdleRewards(data.items) self:markDirty() end function IdleData:updateIdleRewards(items) if items == nil then return end for k, v in pairs(self.idleRewardMap) do self.idleRewardMap[k].num = 0 end for id, num in pairs(items) do if self.idleRewardMap[id] then self.idleRewardMap[id].num = num else self.idleRewardMap[id] = { id = id, num = num, type = GConst.REWARD_TYPE.ITEM } end end self:markDirty() end function IdleData:getIdleRewards() return self.idleRewardMap end function IdleData:markDirty() self.data.dirty = not self.data.dirty end function IdleData:getLastDropTime() return self.data.dropTime end function IdleData:onGetIdleRewrad(time) self.data.dropTime = time // 1000 for k, v in pairs(self.idleRewardMap) do self.idleRewardMap[k].num = 0 end self:markDirty() end function IdleData:getIsOpen() return ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.IDLE_DROP, true) end function IdleData:getIdleGoldDropTime() if self.idleGoldDropTime == nil then self.idleGoldDropTime = ConfigManager:getConfig("const")["idle_gold_drop_time"].value end return self.idleGoldDropTime end function IdleData:getIdleExpDropTime() if self.idleExpDropTime == nil then self.idleExpDropTime = ConfigManager:getConfig("const")["idle_exp_drop_time"].value end return self.idleExpDropTime end function IdleData:getIdleMaxTime() if self.idleMaxTime == nil then self.idleMaxTime = ConfigManager:getConfig("const")["idle_maxtime"].value end return self.idleMaxTime end function IdleData:getGoldPerHour() local goldDrop = DataManager.ChapterData:getGoldDrop() local time = self:getIdleGoldDropTime() return math.floor(goldDrop * 3600 / time) end function IdleData:getExpPerHour() local expDrop = DataManager.ChapterData:getExpDrop() local time = self:getIdleExpDropTime() return math.floor(expDrop * 3600 / time) end function IdleData:getQuickIdleMaxAdTimes() if self.quickIdleMaxAdTimes == nil then self.quickIdleMaxAdTimes = ConfigManager:getConfig("const")["idle_drop_fast_times_1"].value end return self.quickIdleMaxAdTimes end function IdleData:getQuickIdleMaxVitTimes() if self.quickIdleMaxVitTimes == nil then self.quickIdleMaxVitTimes = ConfigManager:getConfig("const")["idle_drop_fast_times_2"].value end return self.quickIdleMaxVitTimes end function IdleData:getQuickIdleTimes() return self:getQuickIdleMaxAdTimes() + self:getQuickIdleMaxVitTimes() - self.data.adCount - self.data.energyCount end return IdleData