------------------------------------------------ --作者: 王圣 --日期: 2021-06-17 --文件: HomeTaskSystem.lua --模块: HomeTaskSystem --描述: 家园任务 ------------------------------------------------ --引用 local L_TaskData = require "Logic.HomeTaskSystem.HomeTaskData" local L_GetSortValue = nil local L_TaskSortFunc = nil local L_SortBase = 1000000000 local HomeTaskSystem = { --聚灵等级 JuLingLv = 0, --装饰当前值 ZHValue = 0, --装饰最大值 ZHMaxValue = 0, --每日奖励经验 RewardExp = 0, --是否领取过每日经验 IsRewardExp = 0, --任务字典 DicTask = Dictionary:New(), } --初始化 function HomeTaskSystem:Initialize() end function HomeTaskSystem:UnInitialize() end function HomeTaskSystem:CanRewardExp() local _ret = not self.IsRewardExp local _activeLogic = GameCenter.MapLogicSystem.ActiveLogic if _activeLogic ~= nil and _activeLogic.TupInfo ~= nil then _ret = _activeLogic.TupInfo.tupReward end return _ret end function HomeTaskSystem:GetTaskListByType(type) local _ret = nil if self.DicTask ~= nil then if type == 0 then local _taskList = List:New() local _keys = self.DicTask:GetKeys() if _keys ~= nil then for i = 1, #_keys do local _key = _keys[i] local _list = self.DicTask[_key] if _list ~= nil then for m = 1, #_list do local _task = _list[m] _taskList:Add(_task) end end end end _ret = _taskList else _ret = self.DicTask[type] end end if _ret ~= nil then _ret:Sort(L_TaskSortFunc) end return _ret end function HomeTaskSystem:GetTask(id) local _ret = nil local _keys = self.DicTask:GetKeys() if _keys ~= nil then for i = 1, #_keys do local _key = _keys[i] local _list = self.DicTask[_key] if _list ~= nil then for m = 1, #_list do local _task = _list[m] if _task.Id == id then _ret = _task break end end end end end return _ret end function HomeTaskSystem:GetRedPointArray() local _result = {} local _container = self.DicTask if _container == nil then return _result end _container:Foreach(function(k, v) local _list = v local _listCount = #_list for i = 1, _listCount do local _task = _list[i] local _taskId = _task.Id local _type = _task.Type if _result[_type] == nil then if _task.State == 1 then _result[_type] = true _result[HomeTaskType.Default] = true end end end end) return _result end function HomeTaskSystem:CheckRedPoint() local _isHave = self:CanRewardExp() if not _isHave then local _redPointArray = self:GetRedPointArray() _isHave = _redPointArray[HomeTaskType.Default] if not _isHave then _isHave = _redPointArray[HomeTaskType.BaiFang] if not _isHave then _isHave = _redPointArray[HomeTaskType.SongLi] if not _isHave then _isHave = _redPointArray[HomeTaskType.GouMai] if not _isHave then _isHave = _redPointArray[HomeTaskType.RenQi] if not _isHave then _isHave = _redPointArray[HomeTaskType.ZhuangShiDu] end end end end end end if _isHave == nil then _isHave = false end GameCenter.MainFunctionSystem:SetAlertFlag(FunctionStartIdCode.HomeTask, _isHave) end L_TaskSortFunc = function(left, right) return L_GetSortValue(left) < L_GetSortValue(right) end L_GetSortValue = function(taskData) local _sort = 0 local _subsort = 0 if taskData == nil then return _sort end local _taskId = taskData.Id if taskData.State == 1 then _sort = 0 _subsort = math.floor(L_SortBase / 10) elseif taskData.State == 2 then _sort = L_SortBase*2 _subsort = 0 else _sort = L_SortBase _subsort = 0 end _sort = _sort + _subsort + taskData.Sort return _sort end ----------------------------------------msg---------------------------------------- --请求领取聚宝盆奖励 function HomeTaskSystem:ReqGetTupReward() GameCenter.Network.Send("MSG_Home.ReqGetTupReward") end function HomeTaskSystem:ReqTaskList() GameCenter.Network.Send("MSG_Home.ReqTaskList") end --请求领取任务奖励 function HomeTaskSystem:ReqTaskReward(taskId) GameCenter.Network.Send("MSG_Home.ReqTaskReward", {id = taskId}) end --返回任务列表 function HomeTaskSystem:ResHomeTaskList(msg) if msg == nil then return end self.DicTask:Clear() if msg.tasks ~= nil then for i = 1, #msg.tasks do local _info = msg.tasks[i] local _cfg = DataConfig.DataSocialHouseTask[_info.id] local _type = _cfg.Type local _taskList = self.DicTask[_type] if _taskList == nil then _taskList = List:New() local _task = L_TaskData:New() _task:ParaseMsg(_info, _cfg) _taskList:Add(_task) self.DicTask:Add(_type, _taskList) else local _task = L_TaskData:New() _task:ParaseMsg(_info, _cfg) _taskList:Add(_task) end end end self:CheckRedPoint() GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HOMETASKCHANG) end --返回任务更新 function HomeTaskSystem:ResTaskUpdate(msg) if msg == nil then return end if msg.tasks ~= nil then for i = 1, #msg.tasks do local _info = msg.tasks[i] local _cfg = DataConfig.DataSocialHouseTask[_info.id] local _type = _cfg.Type local _taskList = self.DicTask[_type] if _taskList == nil then _taskList = List:New() local _task = L_TaskData:New() _task:ParaseMsg(_info, _cfg) _taskList:Add(_task) self.DicTask:Add(_type, _taskList) else local _isFind = false for i = #_taskList, 1, -1 do local _task = _taskList[i] if _task.Id == _info.id then _task:Updata(_info, _cfg) _isFind = true break end end if not _isFind then local _task = L_TaskData:New() _task:ParaseMsg(_info, _cfg) _taskList:Add(_task) end end end end self:CheckRedPoint() GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HOMETASKCHANG) end return HomeTaskSystem