local InfoReminder_Model = {} local private = {} local remindList = nil local info_remind = require "Proto.info_remind_pb" local EventSystem = require('Event/EventSystem') local playerEventType = {} InfoReminder_Model.PlayerEventEnum = { SoloFight = 1, Rival = 2, OfficerRank = 3, OfficerPower = 4, GuildEvent = 5, GuildAllies = 6, CountryPVP = 7, --国战场景对战 GuildMind = 8, --势力矿场 ThreeTeamFight = 9, --群雄演武 } private.specialParamDic = {} function InfoReminder_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageReadInfoRemind, private.OnReadInfoRemind) EventSystem.Regist(EventID.AcquireSystemRedAfterUnlock, private.OnLoginPostprocess) table.ResetTableByIter(playerEventType, DataSheetManager.PlayerEventType:GetEnumerator()) table.sort(playerEventType, private.SortPlayerEvent) end function private.OnLoginPostprocess() CTL.InfoReminder.RefreshRedPoint(remindList) end function InfoReminder_Model.GetPlayerEventType() return playerEventType end function InfoReminder_Model.IsShowLevelType(id) local mapFeature = DataSheetManager.LevelFeatureData:GetDataByLevelFeatureID(BattleDataGetter.GetCurLevelType()) for i, v in ipairs(mapFeature.InfoReminderList) do if v == id then return true end end return false end function InfoReminder_Model.AddInfoReminds(reminds) for i, v in ipairs(reminds) do InfoReminder_Model.SetDescParams(v) table.insert(remindList, v) end table.sort(remindList, private.SortPlayerEventList) CTL.InfoReminder.RefreshRedPoint(remindList) end function InfoReminder_Model.DelInfoRemindIds(remindIds) for i, v in ipairs(remindIds) do for index, remind in ipairs(remindList) do if v == remind.Id then table.remove(remindList, index) break end end end end function InfoReminder_Model.InitInfoReminds(reminds) remindList = reminds for i, v in ipairs(remindList) do InfoReminder_Model.SetDescParams(v) end table.sort(remindList, private.SortPlayerEventList) end function InfoReminder_Model.ReadInfoRemind(id) local msg = info_remind.ReadInfoRemindReq() msg.mainTempId = id NetManager.SendMessage(MessageEnums.MessageReadInfoRemind, msg) for i, v in ipairs(remindList) do if v.mainTempId == id then v.isRead = true end end end local curIndex = 1 local curIterateId = nil function InfoReminder_Model.GetListByTypeId() local data = remindList[curIndex] if data then curIndex = curIndex + 1 if data.mainTempId == curIterateId then return data else return InfoReminder_Model.GetListByTypeId(curIndex) end else curIndex = 1 curIterateId = nil end end function InfoReminder_Model.SetIterateId(id) curIterateId = id end function InfoReminder_Model.IsUnRead(id) for i, v in ipairs(remindList) do if v.mainTempId == id then if not v.isRead then return true end end end return false end function InfoReminder_Model.GetSpecialParam(data) return private.specialParamDic[data] end --数字对应PlayerEvent 将对应的参数再各个系统表找到ids 然后拼接 function InfoReminder_Model.SetDescParams(data) local PlayerEventEnum = MDL.InfoReminder.PlayerEventEnum if data.mainTempId == PlayerEventEnum.SoloFight then --[1]acid [2]name [3]titleId [4]rank local id = tonumber(data.params[3]) local rank = tonumber(data.params[4]) local officialPVPGradeID = DataSheetManager.ConstData:GetDataByID("OfficialPVPGradeID").IntValue local titleData = DataSheetManager.OfficialPosition:GetDataByID(id) if titleData.GradeID >= officialPVPGradeID then local txt = UIUtils.GetLocalizedTxt(Const_IDS.IDS_OfficialPosition_PVPTab) data.params[3] = UTL.Color.FormatQualityText(txt, titleData.QualityColor) else data.params[3] = CTL.OfficialPosition.GetColorTitleFullTxt(tonumber(data.params[3])) end if MDL.OfficialPosition.IsInDegradation(titleData.GradeID, rank) then local special = private.specialParamDic[data] if special == nil then special = {} private.specialParamDic[data] = special end special.content = UIUtils.GetLocalizedTxt(Const_IDS.IDS_InfoReminder_AreaRankDown3) special.isWarning = true end elseif data.mainTempId == PlayerEventEnum.ThreeTeamFight then --[1]acid [2]玩家名 [3]服务器id [4]排名 data.params[3] = "S." .. data.params[3] local rank = tonumber(data.params[4]) local rankDesc = CTL.ThreeTeamFight.GetRankDesc(rank, false, true) if CTL.ThreeTeamFight.GetRankDesc(rank, false, true) then data.params[4] = rankDesc .. "·" .. string.FormatByIdsId(Const_IDS.IDS_DemonGod_UI_37, CTL.ThreeTeamFight.GetLevelRank(rank)) else data.params[4] = UIUtils.GetLocalizedTxt(Const_IDS.IDS_Rank_Unranked) end elseif data.mainTempId == PlayerEventEnum.OfficerRank then if data.subTempId ~= 4 then local id = data.params[1] local titleData = DataSheetManager.OfficialPosition:GetDataByID(tonumber(id)) data.params[1] = titleData.Name1 if data.subTempId == 1 then--晋升 data.params[2] = CTL.OfficialPosition.GetColorTitleFullTxt(tonumber(data.params[2])) elseif data.subTempId == 2 then --落榜 data.params[3] = CTL.OfficialPosition.GetColorTitleFullTxt(tonumber(data.params[3])) end else local id = tonumber(data.params[1]) local titleData = DataSheetManager.OfficialPosition:GetDataByID(id) data.params[1] = CTL.OfficialPosition.GetColorTitleFullTxt(id) end elseif data.mainTempId == PlayerEventEnum.OfficerPower and data.subTempId == 4 then --提拔了您 local id = data.params[3] data.params[3] = CTL.OfficialPosition.GetColorTitleFullTxt(tonumber(id)) elseif data.mainTempId == PlayerEventEnum.GuildEvent then if data.subTempId == 3 then local id = data.params[5] local level = data.params[4] data.params[5] = DataSheetManager.GuildBuildingBase:GetDataByID(tonumber(id)).BuildingName table.insert(data.params, id) table.insert(data.params, level) elseif data.subTempId == 4 then local id = data.params[1] data.params[1] = DataSheetManager.GuildBuildingBase:GetDataByID(tonumber(id)).BuildingName elseif data.subTempId == 1 or data.subTempId == 2 then local id = data.params[1] data.params[1] = CTL.Guild.GetGuildLevelStr(tonumber(id)) elseif data.subTempId == 6 then local excelData = DataSheetManager.GuildWarGroup:GetDataByID(tonumber(data.params[1])) data.params[1] = UTL.Color.FormatTextByColor(excelData.Color,UIUtils.GetLocalizedTxt(Const_IDS[excelData.GroupName])) end elseif data.mainTempId == PlayerEventEnum.GuildAllies then local index = nil if data.subTempId == 4 or data.subTempId == 5 then index = 2 elseif data.subTempId == 6 then index = 3 end if index then local str = "" for i = index, #data.params do if string.match(data.params[i], "^IDS") then str = str .. UIUtils.GetLocalizedTxt(Const_IDS[data.params[i]]) else str = str .. "+" .. data.params[i].." " end data.params[i] = "" end data.params[index] = str end elseif data.mainTempId == PlayerEventEnum.CountryPVP then --国战场景对战 local mapInfo = DataSheetManager.LevelInfoData:GetDataByLevelID(tonumber(data.params[1])) local mapName = UIUtils.GetLocalizedTxt(Const_IDS[mapInfo.LevelNameIDS]) data.params[1] = mapName data.params[2] = CTL.Country.GetCountryName(tonumber(data.params[2])) elseif data.mainTempId == PlayerEventEnum.GuildMind then -- 势力矿场 data.params[3] = UIUtils.GetLocalizedTxt(Const_IDS[DataSheetManager.MineQuality:GetDataByID(tonumber(data.params[3])).Name]) data.params[4] = UTL.Item.GetItemDataSpliceByType(tonumber(data.params[4])).Name..'*'..data.params[5] data.params[5] = nil end end function private.OnReadInfoRemind(remind) CTL.InfoReminder.RefreshRedPoint(remindList) end function private.SortPlayerEvent(a, b) return a.SortId < b.SortId end function private.SortPlayerEventList(a, b) return a.time > b.time end return InfoReminder_Model