mirror of
https://github.com/ckaczor/TillerTracker.git
synced 2026-01-14 01:25:42 -05:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4c9f9eb9ec | |||
| 296c95b3a2 | |||
| 8ce33b2a2d | |||
| 330de41b3e | |||
| 4fe4f65882 | |||
| 0dee31d633 | |||
| 5ae9aaa8c7 | |||
| 6da8b8bff1 | |||
| b14c4a358a |
7
.pkgmeta
7
.pkgmeta
@@ -8,8 +8,7 @@ externals:
|
||||
url: https://repos.wowace.com/wow/ace3/trunk/CallbackHandler-1.0
|
||||
tag: latest
|
||||
Libs/LibQTip-1.0:
|
||||
url: https://repos.wowace.com/wow/libqtip-1-0
|
||||
tag: latest
|
||||
url: https://repos.curseforge.com/wow/libqtip-1-0
|
||||
Libs/LibDataBroker-1.1:
|
||||
url: https://github.com/tekkub/libdatabroker-1-1
|
||||
tag: latest
|
||||
@@ -39,4 +38,6 @@ externals:
|
||||
tag: latest
|
||||
Libs/LibDBIcon-1.0:
|
||||
url: https://repos.wowace.com/wow/libdbicon-1-0/trunk/LibDBIcon-1.0
|
||||
tag: latest
|
||||
tag: latest
|
||||
|
||||
enable-nolib-creation: no
|
||||
32
Data.lua
32
Data.lua
@@ -9,7 +9,8 @@ private.QUESTS = {
|
||||
LOCATION = { 34.4, 46.8 },
|
||||
MATS = { { COUNT = 1, ITEM_ID = 74864 }, { COUNT = 1, ITEM_ID = 74839 } },
|
||||
REP_ID = 1277,
|
||||
RECIPE_ID = 104302
|
||||
RECIPE_ID = 104302,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30386] = {
|
||||
NAME = L["A Dish for Ella"],
|
||||
@@ -17,7 +18,8 @@ private.QUESTS = {
|
||||
LOCATION = { 31.6, 58.0 },
|
||||
MATS = { { COUNT = 1, ITEM_ID = 74857 } },
|
||||
REP_ID = 1275,
|
||||
RECIPE_ID = 104307
|
||||
RECIPE_ID = 104307,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30421] = {
|
||||
NAME = L["A Dish for Farmer Fung"],
|
||||
@@ -25,7 +27,8 @@ private.QUESTS = {
|
||||
LOCATION = { 48.2, 33.8 },
|
||||
MATS = { { COUNT = 1, ITEM_ID = 74839 } },
|
||||
REP_ID = 1283,
|
||||
RECIPE_ID = 104310
|
||||
RECIPE_ID = 104310,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30427] = {
|
||||
NAME = L["A Dish for Fish"],
|
||||
@@ -33,7 +36,8 @@ private.QUESTS = {
|
||||
LOCATION = { 41.6, 30.0 },
|
||||
MATS = { { COUNT = 2, ITEM_ID = 74865 } },
|
||||
REP_ID = 1282,
|
||||
RECIPE_ID = 104311
|
||||
RECIPE_ID = 104311,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30390] = {
|
||||
NAME = L["A Dish for Gina"],
|
||||
@@ -41,7 +45,8 @@ private.QUESTS = {
|
||||
LOCATION = { 53.2, 51.6 },
|
||||
MATS = { { COUNT = 1, ITEM_ID = 74856 } },
|
||||
REP_ID = 1281,
|
||||
RECIPE_ID = 104304
|
||||
RECIPE_ID = 104304,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30414] = {
|
||||
NAME = L["A Dish for Haohan"],
|
||||
@@ -49,7 +54,8 @@ private.QUESTS = {
|
||||
LOCATION = { 44.6, 34.0 },
|
||||
MATS = { { COUNT = 1, ITEM_ID = 74833 } },
|
||||
REP_ID = 1279,
|
||||
RECIPE_ID = 104298
|
||||
RECIPE_ID = 104298,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30439] = {
|
||||
NAME = L["A Dish for Jogu"],
|
||||
@@ -57,7 +63,8 @@ private.QUESTS = {
|
||||
LOCATION = { 53.6, 52.4 },
|
||||
MATS = { { COUNT = 2, ITEM_ID = 74841 } },
|
||||
REP_ID = 1273,
|
||||
RECIPE_ID = 104301
|
||||
RECIPE_ID = 104301,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30396] = {
|
||||
NAME = L["A Dish for Old Hillpaw"],
|
||||
@@ -65,7 +72,8 @@ private.QUESTS = {
|
||||
LOCATION = { 31.0, 53.0 },
|
||||
MATS = { { COUNT = 1, ITEM_ID = 74837 }, { COUNT = 5, ITEM_ID = 74841 } },
|
||||
REP_ID = 1276,
|
||||
RECIPE_ID = 104305
|
||||
RECIPE_ID = 104305,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30408] = {
|
||||
NAME = L["A Dish for Sho"],
|
||||
@@ -73,7 +81,8 @@ private.QUESTS = {
|
||||
LOCATION = { 29.6, 30.6 },
|
||||
MATS = { { COUNT = 1, ITEM_ID = 74856 }, { COUNT = 5, ITEM_ID = 74848 } },
|
||||
REP_ID = 1278,
|
||||
RECIPE_ID = 104299
|
||||
RECIPE_ID = 104299,
|
||||
COMPLETED = false
|
||||
},
|
||||
[30433] = {
|
||||
NAME = L["A Dish for Tina"],
|
||||
@@ -81,6 +90,7 @@ private.QUESTS = {
|
||||
LOCATION = { 45.0, 33.8 },
|
||||
MATS = { { COUNT = 1, ITEM_ID = 74859 }, { COUNT = 5, ITEM_ID = 74843 } },
|
||||
REP_ID = 1280,
|
||||
RECIPE_ID = 104308
|
||||
RECIPE_ID = 104308,
|
||||
COMPLETED = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -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")
|
||||
|
||||
@@ -376,7 +362,7 @@ function TillerTracker:ReputationDone(reputationId)
|
||||
local friendRep = C_GossipInfo.GetFriendshipReputation(reputationId).standing
|
||||
|
||||
-- Done if over exalted
|
||||
return (friendRep > 42000)
|
||||
return (friendRep >= 42000)
|
||||
end
|
||||
|
||||
function TillerTracker:AllReputationsDone()
|
||||
@@ -389,9 +375,25 @@ function TillerTracker:AllReputationsDone()
|
||||
return true
|
||||
end
|
||||
|
||||
function TillerTracker:GetAllCompletedQuestIDs()
|
||||
if C_QuestLog.GetAllCompletedQuestIDs then
|
||||
return C_QuestLog.GetAllCompletedQuestIDs()
|
||||
elseif GetQuestsCompleted then
|
||||
local completedQuestIds = {}
|
||||
|
||||
local questsCompleted = GetQuestsCompleted()
|
||||
|
||||
for quest_id in pairs(questsCompleted) do
|
||||
table.insert(completedQuestIds, quest_id)
|
||||
end
|
||||
|
||||
return completedQuestIds
|
||||
end
|
||||
end
|
||||
|
||||
function TillerTracker:UpdateData()
|
||||
-- Get information on all quests completed
|
||||
local questsCompleted = C_QuestLog.GetAllCompletedQuestIDs()
|
||||
local questsCompleted = TillerTracker:GetAllCompletedQuestIDs()
|
||||
|
||||
-- Create a table to store our current inventory of required mats
|
||||
local inv_table = {}
|
||||
@@ -402,6 +404,9 @@ function TillerTracker:UpdateData()
|
||||
|
||||
-- Loop over each quest in the data
|
||||
for _, quest_info in pairs(private.QUESTS) do
|
||||
|
||||
-- Reset completed to false
|
||||
quest_info["COMPLETED"] = false
|
||||
|
||||
-- Loop over the mats required to cook the food for the quest
|
||||
for _, mat_data in pairs(quest_info["MATS"]) do
|
||||
@@ -417,6 +422,15 @@ function TillerTracker:UpdateData()
|
||||
end
|
||||
end
|
||||
|
||||
-- Loop over each quest completed
|
||||
for _, quest_id in pairs(questsCompleted) do
|
||||
|
||||
-- Set completed to true if it is one we're tracking
|
||||
if (private.QUESTS[quest_id]) then
|
||||
private.QUESTS[quest_id]["COMPLETED"] = true
|
||||
end
|
||||
end
|
||||
|
||||
-- Create a table to hold the information to display for each quest
|
||||
private.quest_table = {}
|
||||
private.quest_count = 0
|
||||
@@ -431,7 +445,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)
|
||||
@@ -448,7 +462,7 @@ function TillerTracker:UpdateData()
|
||||
local quest_status = ""
|
||||
local can_craft = 0
|
||||
|
||||
if (questsCompleted[quest_id]) then
|
||||
if (quest_info["COMPLETED"]) then
|
||||
-- Quest has already been completed today
|
||||
quest_status = L["|cFF00FF00Complete|r"]
|
||||
else
|
||||
@@ -492,7 +506,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
|
||||
@@ -631,7 +645,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
|
||||
@@ -742,4 +756,4 @@ function TillerTracker:SetPlanAhead(value)
|
||||
end
|
||||
|
||||
TillerTracker:UpdateTooltip()
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## Interface: 100000
|
||||
## Interface: 110205
|
||||
## Title: Tiller Tracker
|
||||
## Version: 10.0.1
|
||||
## Version: 11.0.4
|
||||
## Notes: Helps with the daily Tiller food quests ("A Dish for...") by keeping track of what quests have been completed that day, how many dishes need to be cooked, and what materials are required.
|
||||
## Author: Amanoa
|
||||
## SavedVariables: TillerTrackerDB
|
||||
|
||||
31
TillerTracker_Mists.toc
Normal file
31
TillerTracker_Mists.toc
Normal file
@@ -0,0 +1,31 @@
|
||||
## Interface: 50500
|
||||
## Title: Tiller Tracker
|
||||
## Version: 11.0.4
|
||||
## Notes: Helps with the daily Tiller food quests ("A Dish for...") by keeping track of what quests have been completed that day, how many dishes need to be cooked, and what materials are required.
|
||||
## Author: Amanoa
|
||||
## SavedVariables: TillerTrackerDB
|
||||
## OptionalDeps: Ace3, AceEvent-3.0, LibQTip-1.0, LibStub, AceTimer-3.0, AceConsole-3.0
|
||||
|
||||
#@no-lib-strip@
|
||||
Libs\LibStub\LibStub.lua
|
||||
Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
|
||||
Libs\AceAddon-3.0\AceAddon-3.0.xml
|
||||
Libs\AceConsole-3.0\AceConsole-3.0.xml
|
||||
Libs\AceEvent-3.0\AceEvent-3.0.xml
|
||||
Libs\AceLocale-3.0\AceLocale-3.0.xml
|
||||
Libs\AceTimer-3.0\AceTimer-3.0.xml
|
||||
Libs\AceDB-3.0\AceDB-3.0.xml
|
||||
Libs\AceGUI-3.0\AceGUI-3.0.xml
|
||||
Libs\AceConfig-3.0\AceConfig-3.0.xml
|
||||
Libs\LibQTip-1.0\lib.xml
|
||||
Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
|
||||
Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
|
||||
#@end-no-lib-strip@
|
||||
|
||||
Locale\enUS.lua
|
||||
Locale\frFR.lua
|
||||
Locale\deDE.lua
|
||||
|
||||
Data.lua
|
||||
Sort.lua
|
||||
TillerTracker.lua
|
||||
Reference in New Issue
Block a user