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.1 KiB
81 lines
2.1 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
|