From b9023a0a39d56bc9a9183f32e74f9f4a72c35b83 Mon Sep 17 00:00:00 2001 From: chenxi Date: Tue, 16 May 2023 18:56:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=98=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/ui/bounty/bounty_main_ui.lua | 3 +- lua/app/userdata/bounty/bounty_data.lua | 45 ++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/lua/app/ui/bounty/bounty_main_ui.lua b/lua/app/ui/bounty/bounty_main_ui.lua index cc4368d7..c24ffb9d 100644 --- a/lua/app/ui/bounty/bounty_main_ui.lua +++ b/lua/app/ui/bounty/bounty_main_ui.lua @@ -7,6 +7,7 @@ end function BountyMainUI:ctor() self.maxCellIdx = 0 self.maxCellNum = 0 + self.endTime = DataManager.BountyData:getEndTime() -- 默认预览第10档奖励 self.previewRewardIndex = 10 end @@ -304,7 +305,7 @@ function BountyMainUI:scrollToIndex(targetIndex) end function BountyMainUI:updateTime() - local remainTime = DataManager.BountyData:getRemainTime() + local remainTime = self.endTime - Time:getServerTime() if remainTime < 0 then UIManager:closeUnderUI(self) return self:closeUI() diff --git a/lua/app/userdata/bounty/bounty_data.lua b/lua/app/userdata/bounty/bounty_data.lua index cbde61cb..c2bc9e2e 100644 --- a/lua/app/userdata/bounty/bounty_data.lua +++ b/lua/app/userdata/bounty/bounty_data.lua @@ -7,6 +7,10 @@ function BountyData:ctor() self.data.dirty = false end +function BountyData:clear() + DataManager:unregisterCrossDayFunc("BountyData") +end + function BountyData:init(data) data = data or GConst.EMPTY_TABLE self.season = data.season or 1 @@ -18,6 +22,10 @@ function BountyData:init(data) self.endTime = 0 self:initBountyTime() self:initBountyLevelCfg() + DataManager:registerCrossDayFunc("BountyData", function() + self:checkNextSeason() + self:markDirty() + end) end function BountyData:initBountyTime() @@ -30,7 +38,13 @@ function BountyData:initBountyTime() end function BountyData:initBountyLevelCfg() - self.bountyLevelCfg = {} + if self.bountyLevelCfg == nil then + self.bountyLevelCfg = {} + else + for i = 1, #self.bountyLevelCfg do + table.remove(self.bountyLevelCfg) + end + end local cfg = ConfigManager:getConfig("bounty_level") for k, v in pairs(cfg) do if v.season == self.season then @@ -40,6 +54,30 @@ function BountyData:initBountyLevelCfg() self.repeatLevelInfo = table.remove(self.bountyLevelCfg) end +function BountyData:checkNextSeason() + if self.endTime > Time:getServerTime() then + return + end + local nextSeason = self.season + 1 + local info = ConfigManager:getConfig("bounty_time")[nextSeason] + if info == nil then + self.endTime = 0 + return + end + self.endTime = Time:getCertainTimeByStr(info.end_time) + self.season = nextSeason + self.level = 1 + self.exp = 0 + self.bought = false + for k, v in pairs(self.claimed) do + self.claimed[k] = false + end + for k, v in pairs(self.proClaimed) do + self.proClaimed[k] = false + end + self:initBountyLevelCfg() +end + function BountyData:getBought() return self.bought end @@ -157,9 +195,8 @@ function BountyData:markDirty() self.data.dirty = not self.data.dirty end -function BountyData:getRemainTime() - local nowTime = Time:getServerTime() - return self.endTime - nowTime +function BountyData:getEndTime() + return self.endTime end function BountyData:getExpItemIcon()