--[[ 势力共建Model ]] local GuildTarget_Model = {} local private = {} local EventSystem = require('Event/EventSystem') GuildTarget_Model.TaskType = { Day = 1, Week = 2, } function GuildTarget_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageReceiveTargetReward, nil) NetManager.RegisterMsgCB(MessageEnums.MessageReceiveGuildTaskReward, nil) private.dayTask = {} private.weekTask = {} private.score = 0 --个人名望值 private.scoreRewardRedPoint = false private.dayRewardRedPoint = false private.weekRewardRedPoint = false end function private.SortTask(targetInfoA, targetInfoB) if targetInfoA.rewardStatus == targetInfoB.rewardStatus then local targetDataA = DataSheetManager.GuildTarget:GetDataByID(targetInfoA.id) local targetDataB = DataSheetManager.GuildTarget:GetDataByID(targetInfoB.id) return targetDataA.SortID < targetDataB.SortID end if targetInfoA.rewardStatus == 1 then return true elseif targetInfoB.rewardStatus == 1 then return false end return targetInfoA.rewardStatus < targetInfoB.rewardStatus end function private.InitGuildTaskData(guildTargetPanelInfo) private.score = guildTargetPanelInfo.score private.receivedId = guildTargetPanelInfo.receivedId table.clear(private.dayTask) table.clear(private.weekTask) for _, v in ipairs(guildTargetPanelInfo.targetInfos) do local targetData = DataSheetManager.GuildTarget:GetDataByID(v.id) if targetData.LimitType == GuildTarget_Model.TaskType.Day then table.insert(private.dayTask, v) else table.insert(private.weekTask, v) end end private.RefreshData() end function GuildTarget_Model.InitGuildTargetData(guildTargetPanelInfo) private.InitGuildTaskData(guildTargetPanelInfo) CTL.GuildTarget.RefreshGuildTargetRedpoint() end --跨天跨周,直接全量数据覆盖 function GuildTarget_Model.ChangeGuildTargetData(guildTargetPanelInfo) if guildTargetPanelInfo.isCover then private.InitGuildTaskData(guildTargetPanelInfo) else private.score = guildTargetPanelInfo.score private.receivedId = guildTargetPanelInfo.receivedId if IsProtoDataNotNil(guildTargetPanelInfo.targetInfos) then for _, newTargetInfo in ipairs(guildTargetPanelInfo.targetInfos) do local oldTargetInfo = private.GetTargetInfo(newTargetInfo.id) oldTargetInfo.finishNum = newTargetInfo.finishNum oldTargetInfo.rewardStatus = newTargetInfo.rewardStatus end end private.RefreshData() end CTL.GuildTarget.RefreshGuildTargetRedpoint() EventSystem.Dispatch(EventID.GuildTarget_RefreshAllData) end function private.RefreshData() table.sort(private.dayTask, private.SortTask) table.sort(private.weekTask, private.SortTask) private.RefreshDayRewardRedPoint() private.RefreshWeekRewardRedPoint() private.RefreshScoreRewardRedPoint() end function private.GetTargetInfo(id) for _, v in ipairs(private.weekTask) do if id == v.id then return v end end for _, v in ipairs(private.dayTask) do if id == v.id then return v end end logging.error(LTAG.ERROR,"未找到任务,id为: ", id) return end function GuildTarget_Model.GetGuildDayTask() return private.dayTask end function GuildTarget_Model.GetGuildWeekTask() return private.weekTask end function GuildTarget_Model.GetGuildTaskScore() return private.score end function GuildTarget_Model.GetScoreRewardRedPoint() return private.scoreRewardRedPoint end function GuildTarget_Model.GetDayRewardRedPoint() return private.dayRewardRedPoint end function GuildTarget_Model.GetWeekRewardRedPoint() return private.weekRewardRedPoint end function GuildTarget_Model.IsHasGetRewardById(id) for __, rewardId in ipairs(private.receivedId) do if id == rewardId then return true end end return false end function private.RefreshScoreRewardRedPoint() for __, rewardData in DataSheetManager.GuildTargetSchedule:GetEnumerator() do if CTL.GuildTarget.IsCanGetRewardById(rewardData.ID) then private.scoreRewardRedPoint = true return end end private.scoreRewardRedPoint = false end function private.RefreshDayRewardRedPoint() for _, v in ipairs(private.dayTask) do if v.rewardStatus == 1 then private.dayRewardRedPoint = true return end end private.dayRewardRedPoint = false end function private.RefreshWeekRewardRedPoint() for _, v in ipairs(private.weekTask) do if v.rewardStatus == 1 then private.weekRewardRedPoint = true return end end private.weekRewardRedPoint = false end function GuildTarget_Model.IsCompleteAllDayTasks() for _, v in ipairs(private.dayTask) do if v.rewardStatus == 0 then return false end end return true end function GuildTarget_Model.ReqReceiveTargetReward(rewardId) local msg = NetManager.GetPB("guild_target_pb").ReceiveTargetRewardReq() msg.id = rewardId NetManager.SendMessage(MessageEnums.MessageReceiveTargetReward, msg) end function GuildTarget_Model.ReqReceiveTaskReward(taskId) local msg = NetManager.GetPB("guild_target_pb").ReceiveGuildTaskRewardReq() msg.taskId = taskId NetManager.SendMessage(MessageEnums.MessageReceiveGuildTaskReward, msg) end return GuildTarget_Model