local EnergyGet_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') local DayRefreshTimeId = 1 EnergyGet_Controller.ReceiveType = { HasReceivable = 1, NoReceivable = 2, FinishReceive = 3, } function EnergyGet_Controller.OnStartup() private.randomTextList = {} private.energyGetTimeHandle = nil end local function DispatchCountDown() EventSystem.Dispatch(EventID.UI_EnergyGet_EnergyStateRefresh) end ---设置一个定时器,用来派发事件提醒主界面按钮倒计时和界面倒计时 function EnergyGet_Controller.EnergyGetCountDown() if private.energyGetTimeHandle then TimerUtil.Remove(private.energyGetTimeHandle) end local leftTime = private.GetNextEnergyGetTime() if leftTime > 0 then private.energyGetTimeHandle = TimerUtil.Interval(DispatchCountDown, leftTime, 1) end end function EnergyGet_Controller.GetReceiveType() local receiveState = MDL.EnergyGet.GetState() for i, v in ipairs(receiveState) do if v == MDL.EnergyGet.EnergyGetState.NonReceive then if EnergyGet_Controller.IsCanGetEnergy(i) then return EnergyGet_Controller.ReceiveType.HasReceivable end return EnergyGet_Controller.ReceiveType.NoReceivable end end return EnergyGet_Controller.ReceiveType.FinishReceive end function EnergyGet_Controller.GetRandomEnergyText() local receiveState = EnergyGet_Controller.GetReceiveType() if not private.randomTextList[receiveState] then private.randomTextList[receiveState] = {} for i, v in DataSheetManager.EnergyGetSentence:GetEnumerator() do if v.Type == receiveState then table.insert(private.randomTextList[receiveState], v.Sentence) end end end local random = math.random(1, #private.randomTextList[receiveState]) local ids = private.randomTextList[receiveState][random] return ids end function EnergyGet_Controller.IsCanGetEnergy(index) local state = MDL.EnergyGet.GetStateByIndex(index) if state == MDL.EnergyGet.EnergyGetState.Received then return false end local energyData = DataSheetManager.EnergyGetData:GetDataByID(index) local __, timeStr = UTL.Time.GetDateDescAndTime({[1] = energyData.Time}) if UTL.Time.IsServerInEndAndRefreshTime({EndTime=energyData.Time}) then return true, timeStr end return false, timeStr end function private.GetNextEnergyGetTime() local index = nil local state = nil for i, v in ipairs(MDL.EnergyGet.GetState()) do if v == MDL.EnergyGet.EnergyGetState.NonReceive then index = i state = v break end end if not index or not state then return 0 end local energyData = DataSheetManager.EnergyGetData:GetDataByID(index) return UTL.Time.GetServerIntervalTimeByTimeId(energyData.Time) end function EnergyGet_Controller.IsHasEnergyToGet() if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.EnergyGet) then for i, v in DataSheetManager.EnergyGetData:GetEnumerator() do if EnergyGet_Controller.IsCanGetEnergy(i) then return true end end end return false end function EnergyGet_Controller.OnShutdown() end return EnergyGet_Controller