|
|
|
|
@@ -197,9 +197,8 @@ function TillerTracker:OnInitialize()
|
|
|
|
|
private.pinned = false
|
|
|
|
|
private.need_index = 1
|
|
|
|
|
private.loaded = false
|
|
|
|
|
private.item_wait_table = {}
|
|
|
|
|
private.item_wait_count = 0
|
|
|
|
|
|
|
|
|
|
private.item_name_table = {}
|
|
|
|
|
|
|
|
|
|
-- Get rid of settings from before AceDB
|
|
|
|
|
if TillerTrackerDB then
|
|
|
|
|
TillerTrackerDB["SORT_FIELD"] = nil
|
|
|
|
|
@@ -223,9 +222,9 @@ function TillerTracker:OnInitialize()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function TillerTracker:OnEnable()
|
|
|
|
|
-- Disable if the player is less than 90
|
|
|
|
|
if (UnitLevel("player") < 90) then
|
|
|
|
|
LDB.text = L["Disabled until level 90"]
|
|
|
|
|
-- Disable if the player is less than 10
|
|
|
|
|
if (UnitLevel("player") < 10) then
|
|
|
|
|
LDB.text = L["Disabled until level 10"]
|
|
|
|
|
|
|
|
|
|
-- Register to get player level events
|
|
|
|
|
self:RegisterEvent("PLAYER_LEVEL_UP")
|
|
|
|
|
@@ -244,7 +243,7 @@ function TillerTracker:OnEnable()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function TillerTracker:PLAYER_LEVEL_UP(event, newLevel)
|
|
|
|
|
if (tonumber(newLevel) >= 90) then
|
|
|
|
|
if (tonumber(newLevel) >= 10) then
|
|
|
|
|
-- Do the real enable
|
|
|
|
|
TillerTracker:OnEnableCore()
|
|
|
|
|
|
|
|
|
|
@@ -258,66 +257,56 @@ function TillerTracker:OnEnableCore()
|
|
|
|
|
TillerTracker:Print(L["Loading..."])
|
|
|
|
|
LDB.text = L["Loading..."]
|
|
|
|
|
|
|
|
|
|
-- Register to get item info events for now
|
|
|
|
|
self:RegisterEvent("GET_ITEM_INFO_RECEIVED")
|
|
|
|
|
|
|
|
|
|
-- Attempt to load the cache
|
|
|
|
|
-- Load item info from cache
|
|
|
|
|
TillerTracker:LoadCache()
|
|
|
|
|
|
|
|
|
|
-- If everything is cached we're good to go
|
|
|
|
|
if (private.item_wait_count == 0) then
|
|
|
|
|
TillerTracker:OnLoaded(self)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function TillerTracker:LoadCache()
|
|
|
|
|
local item_count = 0
|
|
|
|
|
local item_loaded_count = 0
|
|
|
|
|
local item_table = {}
|
|
|
|
|
|
|
|
|
|
private.item_name_table = {}
|
|
|
|
|
|
|
|
|
|
-- Loop over each quest in the data
|
|
|
|
|
for _, quest_info in pairs(private.QUESTS) do
|
|
|
|
|
|
|
|
|
|
-- Get the item ID of the food
|
|
|
|
|
local food_id = quest_info["FOOD_ID"]
|
|
|
|
|
|
|
|
|
|
-- Add the food to the list of items
|
|
|
|
|
item_table[food_id] = Item:CreateFromItemID(food_id)
|
|
|
|
|
item_count = item_count + 1
|
|
|
|
|
|
|
|
|
|
-- Try to get the info for the food
|
|
|
|
|
local food_name = GetItemInfo(food_id)
|
|
|
|
|
|
|
|
|
|
-- If the information wasn't available add it to the list of waiting items
|
|
|
|
|
if (food_name == nil) then
|
|
|
|
|
private.item_wait_table[food_id] = true
|
|
|
|
|
private.item_wait_count = private.item_wait_count + 1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Loop over the mats required to cook the food for the quest
|
|
|
|
|
for _, mat_data in pairs(quest_info["MATS"]) do
|
|
|
|
|
|
|
|
|
|
-- Get the item ID of the mat
|
|
|
|
|
local mat_id = mat_data["ITEM_ID"]
|
|
|
|
|
|
|
|
|
|
-- Try to get the info for the mat
|
|
|
|
|
local mat_name = GetItemInfo(mat_id)
|
|
|
|
|
|
|
|
|
|
-- If the information wasn't available add it to the list of waiting items
|
|
|
|
|
if (mat_name == nil) then
|
|
|
|
|
if (private.item_wait_table[mat_id] == nil) then
|
|
|
|
|
private.item_wait_table[mat_id] = true
|
|
|
|
|
private.item_wait_count = private.item_wait_count + 1
|
|
|
|
|
end
|
|
|
|
|
-- Add the mat to the list of items
|
|
|
|
|
if (item_table[mat_id] == nil) then
|
|
|
|
|
item_table[mat_id] = Item:CreateFromItemID(mat_id)
|
|
|
|
|
item_count = item_count + 1
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function TillerTracker:GET_ITEM_INFO_RECEIVED()
|
|
|
|
|
for id, _ in pairs(private.item_wait_table) do
|
|
|
|
|
if GetItemInfo(id) then
|
|
|
|
|
private.item_wait_table[id] = nil
|
|
|
|
|
-- Loop over all items we need to cache
|
|
|
|
|
for _, item in pairs(item_table) do
|
|
|
|
|
|
|
|
|
|
-- Wait for the item to load
|
|
|
|
|
item:ContinueOnItemLoad(function()
|
|
|
|
|
|
|
|
|
|
private.item_wait_count = private.item_wait_count - 1
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- If everything is cached we're good to go
|
|
|
|
|
if (private.item_wait_count == 0) then
|
|
|
|
|
TillerTracker:OnLoaded(self)
|
|
|
|
|
-- Save the name
|
|
|
|
|
private.item_name_table[item:GetItemID()] = item:GetItemName()
|
|
|
|
|
item_loaded_count = item_loaded_count + 1
|
|
|
|
|
|
|
|
|
|
-- If everything is cached we're good to go
|
|
|
|
|
if (item_count == item_loaded_count) then
|
|
|
|
|
TillerTracker:OnLoaded(self)
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@@ -326,9 +315,6 @@ function TillerTracker:OnLoaded(self)
|
|
|
|
|
TillerTracker:Print(L["Loaded"])
|
|
|
|
|
LDB.text = L["Loaded"]
|
|
|
|
|
|
|
|
|
|
-- Done with item info events
|
|
|
|
|
self:UnregisterEvent("GET_ITEM_INFO_RECEIVED")
|
|
|
|
|
|
|
|
|
|
self:RegisterEvent("QUEST_LOG_UPDATE")
|
|
|
|
|
self:RegisterEvent("BAG_UPDATE")
|
|
|
|
|
|
|
|
|
|
@@ -363,13 +349,17 @@ local function SetSort(cell, sort)
|
|
|
|
|
private.db.global.sort_dir = "ASC"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if not private.loaded then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
TillerTracker:UpdateData()
|
|
|
|
|
TillerTracker:UpdateTooltip()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function TillerTracker:ReputationDone(reputationId)
|
|
|
|
|
-- Get the reputation information
|
|
|
|
|
local _, friendRep = GetFriendshipReputation(reputationId)
|
|
|
|
|
local friendRep = C_GossipInfo.GetFriendshipReputation(reputationId).standing
|
|
|
|
|
|
|
|
|
|
-- Done if over exalted
|
|
|
|
|
return (friendRep > 42000)
|
|
|
|
|
@@ -387,7 +377,7 @@ end
|
|
|
|
|
|
|
|
|
|
function TillerTracker:UpdateData()
|
|
|
|
|
-- Get information on all quests completed
|
|
|
|
|
local questsCompleted = GetQuestsCompleted()
|
|
|
|
|
local questsCompleted = C_QuestLog.GetAllCompletedQuestIDs()
|
|
|
|
|
|
|
|
|
|
-- Create a table to store our current inventory of required mats
|
|
|
|
|
local inv_table = {}
|
|
|
|
|
@@ -427,7 +417,7 @@ function TillerTracker:UpdateData()
|
|
|
|
|
local food_id = quest_info["FOOD_ID"]
|
|
|
|
|
|
|
|
|
|
-- Get the name of the food for display
|
|
|
|
|
local food_name = GetItemInfo(food_id)
|
|
|
|
|
local food_name = private.item_name_table[food_id]
|
|
|
|
|
|
|
|
|
|
-- Get how many of the food we have in our bags
|
|
|
|
|
local food_count = GetItemCount(food_id, true, false)
|
|
|
|
|
@@ -488,7 +478,7 @@ function TillerTracker:UpdateData()
|
|
|
|
|
if (mat_count > 0) then
|
|
|
|
|
|
|
|
|
|
-- Get the name of the mat
|
|
|
|
|
local mat_name = GetItemInfo(mat_id)
|
|
|
|
|
local mat_name = private.item_name_table[mat_id]
|
|
|
|
|
|
|
|
|
|
-- Set the mat need string to the count needed and the name
|
|
|
|
|
local mat_need = mat_count .. " " .. mat_name
|
|
|
|
|
@@ -627,7 +617,7 @@ function TillerTracker:UpdateText()
|
|
|
|
|
-- Loop over the need table
|
|
|
|
|
for need_id, need_count in pairs(private.need_table) do
|
|
|
|
|
if need_index == private.need_index then
|
|
|
|
|
LDB.text = L["Gather:"] .. " " .. need_count .. " " .. GetItemInfo(need_id)
|
|
|
|
|
LDB.text = L["Gather:"] .. " " .. need_count .. " " .. private.item_name_table[need_id]
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
@@ -648,6 +638,10 @@ function LDB.OnEnter(self)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function TillerTracker:QUEST_LOG_UPDATE()
|
|
|
|
|
if not private.loaded then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
TillerTracker:UpdateData()
|
|
|
|
|
TillerTracker:UpdateText()
|
|
|
|
|
|
|
|
|
|
@@ -659,6 +653,10 @@ function TillerTracker:QUEST_LOG_UPDATE()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function TillerTracker:BAG_UPDATE()
|
|
|
|
|
if not private.loaded then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
TillerTracker:UpdateData()
|
|
|
|
|
TillerTracker:UpdateText()
|
|
|
|
|
|
|
|
|
|
@@ -718,6 +716,10 @@ end
|
|
|
|
|
function TillerTracker:SetPlanAhead(value)
|
|
|
|
|
private.db.global.plan_ahead = value
|
|
|
|
|
|
|
|
|
|
if not private.loaded then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
TillerTracker:UpdateData()
|
|
|
|
|
TillerTracker:UpdateText()
|
|
|
|
|
|
|
|
|
|
@@ -726,4 +728,4 @@ function TillerTracker:SetPlanAhead(value)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
TillerTracker:UpdateTooltip()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|