local EnergyGet_Model = {} local private = {} local EventSystem = require('Event/EventSystem') local energy_pb = require 'Proto.energy_pb' local currency_pb = require 'Proto.currency_pb' local MaxEnergy = DataSheetManager.ConstData:GetDataByID("ServerMaxEnergy").IntValue local EnergyGetEffectDuration = 2 EnergyGet_Model.EnergyGetState = { NonReceive = currency_pb.UnDone, Received = currency_pb.Done, } function EnergyGet_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageEnergyGet, private.EnergyGetResp) private.isInit = false private.energyState = {} private.tempSelectIndex = {} end function EnergyGet_Model.SetEnergyGetState(info) if IsServerDataNotNil(info) then for i, v in ipairs(info) do if private.energyState[i] ~= v then private.energyState[i] = v if private.isInit then EventSystem.Dispatch(EventID.UI_EnergyGet_EnergyStateRefresh, i) end end end else for i = 1, DataSheetManager.EnergyGetData:GetDataCount() do private.energyState[i] = EnergyGet_Model.EnergyGetState.NonReceive end if private.isInit then EventSystem.Dispatch(EventID.UI_EnergyGet_EnergyStateRefresh) end end if not private.isInit then EventSystem.Dispatch(EventID.UI_EnergyGet_EnergyStateInit) private.isInit = true end CTL.EnergyGet.EnergyGetCountDown() end function EnergyGet_Model.GetState() return private.energyState end function EnergyGet_Model.GetStateByIndex(index) return private.energyState[index] or EnergyGet_Model.EnergyGetState.NonReceive end function EnergyGet_Model.IfHasTempSelectIndex(index) return table.containValue(private.tempSelectIndex, index) end function EnergyGet_Model.EnergyGetReq(index) if MDL.Player.GetEnergyValue() >= MaxEnergy then CTL.Tips.AddTipsMsg(Const_IDS["IDS_EnergyGet_Hint_6"]) EventSystem.Dispatch(EventID.UI_EnergyGet_EnergyStateRefresh, index) return end local msg = energy_pb.EnergyGetReq() msg.place = index - 1 table.removebyvalue(private.tempSelectIndex, index) NetManager.SendMessage(MessageEnums.MessageEnergyGet, msg) end function private.EnergyGetResp(msgResp) if msgResp.Resp.Code == 0 then private.energyState[msgResp.place + 1] = EnergyGet_Model.EnergyGetState.Received CTL.EnergyGet.EnergyGetCountDown() EventSystem.Dispatch(EventID.UI_WelfareBase_RefreshRedPoint) end end function EnergyGet_Model.OnShutdown() end return EnergyGet_Model