slot0 = class("WorldTaskProxy", import("....BaseEntity")) slot0.Fields = { taskFinishCount = "number", itemListenerList = "table", list = "table", mapList = "table", mapListenerList = "table" } slot0.EventUpdateTask = "WorldTaskProxy.EventUpdateTask" function slot0.Build(slot0) slot0.list = {} slot0.itemListenerList = {} slot0.mapListenerList = {} end function slot0.Setup(slot0, slot1) for slot5, slot6 in ipairs(slot1) do slot0:addTask(WorldTask.New(slot6)) end end function slot0.Dispose(slot0) slot0:Clear() end function slot0.getTaskById(slot0, slot1) return slot0.list[slot1] end function slot0.addTaskListener(slot0, slot1) if slot1.config.complete_condition == WorldConst.TaskTypeSubmitItem then slot0.itemListenerList[slot2] = slot0.itemListenerList[slot1.config.complete_parameter[1]] or {} table.insert(slot0.itemListenerList[slot2], slot1.id) elseif slot1.config.complete_condition == WorldConst.TaskTypePressingMap then for slot5, slot6 in ipairs(slot1.config.complete_parameter) do slot0.mapListenerList[slot6] = slot0.mapListenerList[slot6] or {} table.insert(slot0.mapListenerList[slot6], slot1.id) end end end function slot0.removeTaskListener(slot0, slot1) if slot1.config.complete_condition == WorldConst.TaskTypeSubmitItem then table.removebyvalue(slot0.itemListenerList[slot1.config.complete_parameter[1]], slot1.id) elseif slot1.config.complete_condition == WorldConst.TaskTypePressingMap then for slot5, slot6 in ipairs(slot1.config.complete_parameter) do table.removebyvalue(slot0.mapListenerList[slot6], slot1.id) end end end function slot0.doUpdateTaskByItem(slot0, slot1) if not slot0.itemListenerList[slot1.id] then return end for slot5, slot6 in ipairs(slot0.itemListenerList[slot1.id]) do slot7 = slot0:getTaskById(slot6) slot7:updateProgress(slot1.count) slot0:updateTask(slot7) end end function slot0.doUpdateTaskByMap(slot0, slot1, slot2) if not slot0.mapListenerList[slot1] then return end for slot6, slot7 in ipairs(slot0.mapListenerList[slot1]) do slot8 = slot0:getTaskById(slot7) slot8:updateProgress(slot8:getProgress() + (slot2 and 1 or -1)) slot0:updateTask(slot8) end end function slot0.addTask(slot0, slot1) slot0.list[slot1.id] = slot1 slot0:addTaskListener(slot1) slot0:DispatchEvent(uv0.EventUpdateTask, slot1) end function slot0.deleteTask(slot0, slot1) if not slot0.list[slot1] then return end slot2 = slot0.list[slot1] slot0.list[slot1] = nil slot0:removeTaskListener(slot2) slot0:DispatchEvent(uv0.EventUpdateTask, slot2) end function slot0.updateTask(slot0, slot1) if slot1:getState() == WorldTask.STATE_RECEIVED then slot0:deleteTask(slot1.id) else slot0.list[slot1.id] = slot1 slot0:DispatchEvent(uv0.EventUpdateTask, slot1) end end function slot0.getTasks(slot0) return slot0.list end function slot0.getTaskVOs(slot0) return _.values(slot0.list) end function slot0.getDoingTaskVOs(slot0) slot1 = {} for slot5, slot6 in pairs(slot0:getTasks()) do if slot6:getState() == WorldTask.STATE_ONGOING or slot7 == WorldTask.STATE_FINISHED then table.insert(slot1, slot6) end end return slot1 end function slot0.getAutoSubmitTaskVO(slot0) for slot4, slot5 in pairs(slot0:getTasks()) do if slot5:IsAutoSubmit() and slot5:getState() == WorldTask.STATE_FINISHED then return slot5 end end return nil end function slot0.riseTaskFinishCount(slot0) slot0.taskFinishCount = slot0.taskFinishCount + 1 end return slot0