local HardMissionDataMgr = class('HardMissionDataMgr', require('DataBase')) local TaskGroup = require('HardLevel/TaskGroup') local GroupItemData = require('HardLevel/GroupItemData') function HardMissionDataMgr:ctor() --LogError("---------HardMissionDataMgr--------ctor-----") self.TaskGroupList = {} self.GroupCfg = nil self.missionType = 1 -- 1 是困难 end function HardMissionDataMgr:SetMissionType(type) self.missionType = type end function HardMissionDataMgr:InitData() local cfgs = nil if self.missionType == 1 then cfgs = ManagerContainer.CfgMgr:GetHardMissionCfg() else cfgs = ManagerContainer.CfgMgr:GetEMMissionCfg() end for _, v in pairs(cfgs) do if not self.GroupCfg[v.GroupID] then self.GroupCfg[v.GroupID] = GroupItemData:new(v.GroupID) end local group = self.GroupCfg[v.GroupID] local cdtp,cddata = self:GetFirstConditionData(v) group:SetCondition(cdtp,cddata) group:AddTaskid(v.MissionID) group:SetRewardCfg(v) end end function HardMissionDataMgr:GetFirstConditionData(cfg) local data = nil local cdtype = nil if cfg.MissionCondition[1] then data = cfg.MissionCondition[1][2] cdtype = cfg.MissionCondition[1][1] end return cdtype,data end function HardMissionDataMgr:RegisterNetEvents() end function HardMissionDataMgr:Clear() self.TaskGroupList = {} end function HardMissionDataMgr:Destroy() self.TaskGroupList = {} end function HardMissionDataMgr:UnRegisterNetEvents() end function HardMissionDataMgr:GetReward(rewards) local datalist = {} if rewards then local reward for i = 1, #rewards do reward = rewards[i] datalist[i] = {cfgId = reward[1], num = reward[2]} end end return datalist end function HardMissionDataMgr:RefreshAllGroupTask(taskData,groupTaskData) for _, v in pairs(groupTaskData) do self:RefreshGroupTaskData(v) end for _, v in pairs(taskData) do self:RefreshGroupTask(v) end end function HardMissionDataMgr:RefreshGroupTask(task) --LogError("task ID "..task._cfgData.MissionID.." GID = "..task._cfgData.GroupID) if self.TaskGroupList[task._cfgData.GroupID] == nil then local taskgroup = TaskGroup:new(task._cfgData.GroupID) taskgroup:AddTask(task) self.TaskGroupList[task._cfgData.GroupID] = taskgroup else self.TaskGroupList[task._cfgData.GroupID]:AddTask(task) end end function HardMissionDataMgr:RefreshGroupTaskData(grouptask) --LogError("grouptask ID "..grouptask._id) if self.TaskGroupList[grouptask._id] == nil then local taskgroup = TaskGroup:new(grouptask._id) taskgroup.groupTask = grouptask self.TaskGroupList[grouptask._id] = taskgroup else self.TaskGroupList[grouptask._id].groupTask = grouptask end --local rdf = self:GetGroupCfgByGroupID(grouptask._id).RewardCfg --self.TaskGroupList[grouptask._id]:SetWewardCfg(rdf) end function HardMissionDataMgr:GetShowGroup() local retData = nil local curmaxGetId = -1 local maxId = -1 local minId = 999999 for _, v in pairs(self.TaskGroupList) do if v ~= nil and v:IsGetAllReward() and v.groupID > curmaxGetId then curmaxGetId = v.groupID end if v ~= nil and v.groupID > maxId then maxId = v.groupID end if v ~= nil and v.groupID < minId then minId = v.groupID end end --LogError("-------------curmaxGetId---------- "..curmaxGetId) curmaxGetId = curmaxGetId + 1 curmaxGetId = curmaxGetId > maxId and maxId or curmaxGetId curmaxGetId = curmaxGetId < minId and minId or curmaxGetId retData = self.TaskGroupList[curmaxGetId] --LogError("-------------GetShowGroup---------- "..curmaxGetId) return retData end function HardMissionDataMgr:GetGroupCfgByGroupID(id) if self.GroupCfg == nil then self.GroupCfg = {} self:InitData() end --LogError("---------GetGroupCfgByGroupID----------"..id) return self.GroupCfg[id] end function HardMissionDataMgr:GetConditionTxt(task) local condition = task._cfgData.MissionCondition[1] if( condition == nil ) then return "" end local lvCfg = ManagerContainer.CfgMgr:GetLevelDataById(condition[2]) local state = task._got >= 1 and 1 or 0 local txt = I18N.SetLanguageValue("DiffTaskConditionTxt",lvCfg.Name,state) return txt end return HardMissionDataMgr