You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.0 KiB

local WIT, core = ...
local ExecutiveAssistantHelper = {}
core.ExecutiveAssistantHelper = ExecutiveAssistantHelper
function ExecutiveAssistantHelper.IsExecutiveAssistantAvailable()
return ExecAssist and ExecAssist.AddTask
end
function ExecutiveAssistantHelper.GetOrCreateGroup(name)
local agg = ExecAssist.db.global.groupStem.agg
for _, item in pairs(agg) do
if item.isGroup and item.isWorthItGroup then
return item
end
end
local group = agg[ExecAssist:AddGroup(name, nil, true)]
group.listName = name
group.isWorthItGroup = true
return group
end
local function getFarmName(farm)
local name = ''
if farm.ItemId then
name = core.TSMHelper.GetItemName(farm.ItemId)
elseif farm.NameMapId then
name = core.LocationHelper.GetMapName(farm.NameMapId)
else
name = farm.Name
end
if farm.NameSuffix then
name = name .. " " .. core.GetString(farm.NameSuffix)
end
return name
end
function ExecutiveAssistantHelper.GetOrCreateTask(group, farm)
local agg = ExecAssist.db.global.groupStem.agg
for _, item in pairs(agg) do
if item.isTask and item.p == group.id and item.WorthItId == farm.Id then
return item
end
end
local task = ExecAssist:AddTask(group, nil, true)
task.taskName = core.FarmHelper.GetName(farm)
task.WorthItId = farm.Id
return task
end
function ExecutiveAssistantHelper.RefreshTaskWindow()
ExecAssist:loadGroups_toOptionsTable()
ExecAssist:UpdateWindow()
end
function ExecutiveAssistantHelper.CreateToDoList(groupName, farmList)
local taskIds = {}
local group = ExecutiveAssistantHelper.GetOrCreateGroup(groupName)
for _, farm in pairs(farmList) do
table.insert(taskIds, ExecutiveAssistantHelper.GetOrCreateTask(group, farm).id)
end
for _, id in pairs(group.DO) do
if not tContains(taskIds, id) then
ExecAssist:GarbageCollection({id})
end
end
group.DO = taskIds
ExecutiveAssistantHelper.RefreshTaskWindow()
end