local Turntable_Model = {} local private = {} local EventSystem = require('Event/EventSystem') local Turntable_Record_Key = "Turntable_Record" local RecordLimitCount = DataSheetManager.ConstData:GetDataByID("DrawCardShowHistoryNum").IntValue function Turntable_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessagePetCasinoStartDraw, private.OnPetCasinoStartDrawResp) NetManager.RegisterMsgCB(MessageEnums.MessagePetCasinoGetReward, private.OnPetCasinoGetRewardResp) private.activityType = MDL.OperationActivity.ActivityType.Turntable private.activityId = 0 private.totalDrawTimes = 0 --抽取次数 private.hasTotalRewardList = nil --已领取的累充奖励id列表 end function Turntable_Model.GetActivityId() return private.activityId end function Turntable_Model.GetDrawTimes() return private.totalDrawTimes end function Turntable_Model.GetPreviewTotalRewardCfg() local lastData for i, data in MDL.OperationActivity.TurntableTotalAward:GetEnumeratorByActivityID(private.activityId) do if data.TotalTimes > private.totalDrawTimes then return true, data else if Turntable_Model.HasGetReward(data.ID) == false then return true, data end end lastData = data end return false, lastData end --当前是有可领取的累抽奖励 function Turntable_Model.CanGetTotalReward() if private.activityId > 0 then for i, data in MDL.OperationActivity.TurntableTotalAward:GetEnumeratorByActivityID(private.activityId) do if private.totalDrawTimes >= data.TotalTimes and Turntable_Model.HasGetReward(data.ID) == false then return true, data.ID end end end return false end function Turntable_Model.HasGetReward(id) for i, v in ipairs(private.hasTotalRewardList) do if id == v then return true end end return false end function Turntable_Model.GetTotalTimes() return private.totalDrawTimes end function private.UpdateDrawTimes(times) if private.totalDrawTimes ~= times then private.totalDrawTimes = times EventSystem.Dispatch(EventID.UI_Turntable_UpdateDrawTimes) end end function private.UpdateTotalReward(idList) private.hasTotalRewardList = idList EventSystem.Dispatch(EventID.UI_Turntable_UpdateTotalReward) end function Turntable_Model.SyncInfo(infos) local info = infos[#infos] if info then private.activityId = info.activityId private.UpdateDrawTimes(info.curCasinoNums) private.UpdateTotalReward(info.hasRewardList) CTL.Turntable.ProcessRegisterItem() EventSystem.Dispatch(EventID.UI_Turntable_UpdateRedPoint) end end function Turntable_Model.PetCasinoStartDrawReq(activityId, drawTimes) local msg = NetManager.GetPB("activity_pet_casino_opt_pb").PetCasinoStartDrawReq() msg.activityId = activityId msg.drawTimes = drawTimes private.drawTimes = drawTimes NetManager.SendMessage(MessageEnums.MessagePetCasinoStartDraw, msg) end function private.OnPetCasinoStartDrawResp(msgResp) if msgResp.Resp.Code == 0 then private.UpdateDrawTimes(msgResp.curCasinoNums) EventSystem.Dispatch(EventID.UI_Turntable_DrawItemList, msgResp.rewardIdList) private.SaveDrawRecord(msgResp.rewardIdList, private.drawTimes) EventSystem.Dispatch(EventID.UI_Turntable_UpdateRedPoint) end end function Turntable_Model.PetCasinoGetRewardReq(activityId, rewardId) local msg = NetManager.GetPB("activity_pet_casino_opt_pb").PetCasinoGetRewardReq() msg.activityId = activityId msg.rewardId = rewardId NetManager.SendMessage(MessageEnums.MessagePetCasinoGetReward, msg) end function private.OnPetCasinoGetRewardResp(msgResp) if msgResp.Resp.Code == 0 then private.UpdateTotalReward(msgResp.hasRewardList) CTL.Reward.ShowDelayReward() EventSystem.Dispatch(EventID.UI_Turntable_UpdateRedPoint) end end function private.SaveDrawRecord(itemList, drawTimes) local tab = PersistentData.PlayerData:Get(Turntable_Record_Key, nil) if tab == nil then tab = {} end local cfg = MDL.OperationActivity.TurntableBackGround:GetDataByActivityID(Turntable_Model.GetActivityId()) local record = { time = UTL.Time.GetServerTimestamp(), itemList = {}, extraItemId = cfg.IntegralID, extraItemCount = cfg.PresentedItemNum * drawTimes, } for i, v in ipairs(itemList) do record.itemList[i] = v end if #tab + 1 > RecordLimitCount then table.remove(tab, #tab) end table.insert(tab, 1, record) PersistentData.PlayerData:Set(Turntable_Record_Key, tab, true) end function Turntable_Model.GetDrawRecord() return PersistentData.PlayerData:Get(Turntable_Record_Key, nil) end return Turntable_Model