local FunctionUpdateNotice_Model = {} local private = {} local EventSystem = require('Event/EventSystem') FunctionUpdateNotice_Model.ModeType = { General = 1, --常规模板(视频、图片) Collection = 2 --集合模板 } FunctionUpdateNotice_Model.ModeChildType = { Video = 1, --视频 Image = 2 --图片 } function FunctionUpdateNotice_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageVerIntroduceReward, nil) private.rewardReceived = {} private.activityId = 0 end ---同步服务器数据 function FunctionUpdateNotice_Model.SyncInfos(msgResp) logging.log(LTAG.LOG,"版本更新内容SyncInfos: ",msgResp) private.activityId = msgResp.activityId if private.activityId == 0 then EventSystem.Dispatch(EventID.FunctionUpdateNotice_ShowOrHideGolden, false) table.clear(private.rewardReceived) return end for _,v in ipairs(msgResp.reward) do if not private.rewardReceived[v] then private.rewardReceived[v] = true EventSystem.Dispatch(EventID.FunctionUpdateNotice_RewardUpdate) end end private.RefreshRedPoint() private.SetShowGolden() end -- 刷新红点 function private.RefreshRedPoint() local modeIdList = FunctionUpdateNotice_Model.GetFunctionUpdateModeIDs() if table.getDictCount(private.rewardReceived) < #modeIdList then CTL.RedPoint.AddRedPoint(CTL.RedPoint.RedPointKey.FunctionUpdateNotice) else CTL.RedPoint.RemoveRedPoint(CTL.RedPoint.RedPointKey.FunctionUpdateNotice) end end -- 设置金色显示,不屏蔽 function private.SetShowGolden() --大页签列表(模板id) local collectionModeIds = {} local modeIdList = FunctionUpdateNotice_Model.GetFunctionUpdateModeIDs() for i, v in ipairs(modeIdList) do local modeType = DataSheetManager.FunctionUpdateNoticeMode:GetDataByModeID(v).ModeType if modeType == FunctionUpdateNotice_Model.ModeType.Collection then table.insert(collectionModeIds, v) end end if #collectionModeIds >0 then local goldenHero = {} local goldenHorse = {} local goldenTreasure = {} for i, v in DataSheetManager.FunctionUpdateNoticeChild2:GetEnumerator() do if table.containValue(collectionModeIds, v.ModeID)then if v.ChildType == MDL.ItemSources.SourceType.HeroSelect then table.insert(goldenHero, v.GotoID) elseif v.ChildType == MDL.ItemSources.SourceType.MagicWeaponFashion then local heroID = DataSheetManager.WeaponAppearance:GetDataByID(v.GotoID).HeroID table.insert(goldenHero, heroID) elseif v.ChildType == MDL.ItemSources.SourceType.HeroAppearance then local heroID = DataSheetManager.HeroAppearance:GetDataByID(v.GotoID).HeroID table.insert(goldenHero, heroID) elseif v.ChildType == MDL.ItemSources.SourceType.HorseBreak then table.insert(goldenHorse, v.GotoID) elseif v.ChildType == MDL.ItemSources.SourceType.TreasureBreak then table.insert(goldenTreasure, v.GotoID) end end end EventSystem.Dispatch(EventID.FunctionUpdateNotice_ShowOrHideGolden,true, goldenHero, goldenHorse, goldenTreasure) end end function FunctionUpdateNotice_Model.GetFunctionUpdateModeIDs() return MDL.OperationActivity.FunctionUpdateNotice:GetDataByActivityID(private.activityId).ModeID end function FunctionUpdateNotice_Model.GetFunctionUpdateData(tabIndex) local id = FunctionUpdateNotice_Model.GetFunctionUpdateModeIDs()[tabIndex] return DataSheetManager.FunctionUpdateNoticeMode:GetDataByModeID(id) end function FunctionUpdateNotice_Model.GetFunctionUpdatePageCfgs(tabIndex) local cfg = FunctionUpdateNotice_Model.GetFunctionUpdateData(tabIndex) local cfgs = {} if cfg.ModeType == FunctionUpdateNotice_Model.ModeType.General then for i, v in DataSheetManager.FunctionUpdateNoticeChild:GetEnumerator() do if v.ModeID == cfg.ModeID then table.insert(cfgs,v) end end else for i, v in DataSheetManager.FunctionUpdateNoticeChild2:GetEnumerator() do if v.ModeID == cfg.ModeID then table.insert(cfgs,v) end end end return cfgs end function FunctionUpdateNotice_Model.IsRewardReceived(tabIndex) local modeId = FunctionUpdateNotice_Model.GetFunctionUpdateData(tabIndex).ModeID return private.rewardReceived[modeId] end --活动剩余时间 function FunctionUpdateNotice_Model.GetRemineTime() local activityTypeInfo = MDL.OperationActivity.GetOperationActivityInfo(MDL.OperationActivity.ActivityType.FunctionUpdateNotice, private.activityId) return activityTypeInfo.endTime - UTL.Time.GetServerTimestamp() end function FunctionUpdateNotice_Model.GetRewardReq(tabIndex) local msg = NetManager.GetPB("activity_ver_introduce_ope_pb").VerIntroduceRewardReq() msg.activityId = private.activityId msg.modeId = FunctionUpdateNotice_Model.GetFunctionUpdateModeIDs()[tabIndex] NetManager.SendMessage(MessageEnums.MessageVerIntroduceReward, msg) end return FunctionUpdateNotice_Model