fix(p2): restore plugin status UI, C_QuestLog/C_Map shims, QuestieServer init
- QuestieOptionsAdvanced.lua: restore compat_header, plugin_header, plugin_status_desc blocks showing loaded Questie-X plugins with stats in the Advanced options tab - QuestieCompat.lua: add C_QuestLog shim (GetNumQuestLogEntries, GetQuestLogTitle, GetAllQuestIDs, GetQuestObjectives, IsQuestFlaggedCompleted, GetQuestPlayerQuestLink), C_Map shim (GetPlayerMapPosition, GetBestMapForUnit, GetMapInfo), GetTrackedAchievements, IsAchievementCompleted, and LibUIDropDownMenu shims - QuestieInit.lua: import QuestieServer module, add QuestieServer:Init() call with nil guard, wrap HBDHooks:Init() in nil guard
This commit is contained in:
@@ -414,6 +414,44 @@ function QuestieOptions.tabs.advanced:Initialize()
|
||||
end
|
||||
end,
|
||||
},
|
||||
compat_header = {
|
||||
type = "header",
|
||||
order = 6,
|
||||
name = l10n('3.3.5 Compatibility Settings'),
|
||||
},
|
||||
plugin_header = {
|
||||
type = "header",
|
||||
order = 7,
|
||||
name = "|cFF5EBAF3Loaded Questie-X Plugins|r",
|
||||
},
|
||||
plugin_status_desc = {
|
||||
type = "description",
|
||||
order = 7.01,
|
||||
fontSize = "medium",
|
||||
name = function()
|
||||
if not QuestiePluginAPI or not QuestiePluginAPI.registeredPlugins then
|
||||
return "|cFF888888Plugin API not loaded.|r"
|
||||
end
|
||||
|
||||
local output = ""
|
||||
local hasPlugins = false
|
||||
|
||||
for pluginName, plugin in pairs(QuestiePluginAPI.registeredPlugins) do
|
||||
hasPlugins = true
|
||||
output = output .. "|cFF5EBAF3[Questie-" .. pluginName .. "]|r"
|
||||
output = output .. " Quests: |cFFFFD700" .. tostring(plugin.stats.QUEST) .. "|r"
|
||||
output = output .. " NPCs: |cFFFFD700" .. tostring(plugin.stats.NPC) .. "|r"
|
||||
output = output .. " Objects: |cFFFFD700" .. tostring(plugin.stats.OBJECT) .. "|r"
|
||||
output = output .. " Items: |cFFFFD700" .. tostring(plugin.stats.ITEM) .. "|r\n"
|
||||
end
|
||||
|
||||
if not hasPlugins then
|
||||
output = "|cFF888888No plugins loaded.|r"
|
||||
end
|
||||
|
||||
return output
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@@ -372,3 +372,85 @@ function QuestieCompat.GetItemCooldown(itemID)
|
||||
return GetItemCooldown(itemID)
|
||||
end
|
||||
end
|
||||
|
||||
--- C_QuestLog Shim
|
||||
QuestieCompat.C_QuestLog = QuestieCompat.C_QuestLog or {}
|
||||
|
||||
function QuestieCompat.C_QuestLog.GetNumQuestLogEntries()
|
||||
return GetNumQuestLogEntries()
|
||||
end
|
||||
|
||||
function QuestieCompat.C_QuestLog.GetQuestLogTitle(questIndex)
|
||||
return GetQuestLogTitle(questIndex)
|
||||
end
|
||||
|
||||
function QuestieCompat.C_QuestLog.GetQuestLogSelection()
|
||||
return GetQuestLogSelection()
|
||||
end
|
||||
|
||||
function QuestieCompat.C_QuestLog.GetQuestInfo(questID)
|
||||
return QuestieCompat.GetQuestInfo(questID)
|
||||
end
|
||||
|
||||
function QuestieCompat.C_QuestLog.GetAllQuestIDs()
|
||||
local questIDs = {}
|
||||
local numEntries = GetNumQuestLogEntries()
|
||||
for i = 1, numEntries do
|
||||
local questTitle, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID = GetQuestLogTitle(i)
|
||||
if questID and questID ~= 0 then
|
||||
table.insert(questIDs, questID)
|
||||
end
|
||||
end
|
||||
return questIDs
|
||||
end
|
||||
|
||||
function QuestieCompat.C_QuestLog.GetQuestObjectives(questID)
|
||||
local questIndex = GetQuestLogIndexByID(questID)
|
||||
if not questIndex then return nil end
|
||||
return QuestieCompat.GetQuestObjectives(questIndex)
|
||||
end
|
||||
|
||||
function QuestieCompat.C_QuestLog.IsQuestFlaggedCompleted(questID)
|
||||
return IsQuestFlaggedCompleted(questID)
|
||||
end
|
||||
|
||||
function QuestieCompat.C_QuestLog.GetQuestPlayerQuestLink(questID)
|
||||
return GetQuestLink(questID)
|
||||
end
|
||||
|
||||
--- C_Map Shim
|
||||
QuestieCompat.C_Map = QuestieCompat.C_Map or {}
|
||||
|
||||
function QuestieCompat.C_Map.GetPlayerMapPosition(uiMapID)
|
||||
local x, y = GetPlayerMapPosition(uiMapID)
|
||||
if x == 0 and y == 0 then
|
||||
x, y = GetPlayerMapPosition("player")
|
||||
end
|
||||
return x, y
|
||||
end
|
||||
|
||||
function QuestieCompat.C_Map.GetBestMapForUnit(unit)
|
||||
if unit == "player" then
|
||||
return GetCurrentMapAreaID()
|
||||
end
|
||||
return GetCurrentMapAreaID()
|
||||
end
|
||||
|
||||
function QuestieCompat.C_Map.GetMapInfo(uiMapID)
|
||||
return GetMapInfo(uiMapID)
|
||||
end
|
||||
|
||||
--- GetTrackedAchievements Shim
|
||||
QuestieCompat.GetTrackedAchievements = QuestieCompat.GetTrackedAchievements or function()
|
||||
return {}
|
||||
end
|
||||
|
||||
--- IsAchievementCompleted Shim
|
||||
QuestieCompat.IsAchievementCompleted = QuestieCompat.IsAchievementCompleted or function(achievementID)
|
||||
return GetAchievementNumCriteria(achievementID) > 0
|
||||
end
|
||||
|
||||
--- LibUIDropDownMenu Shim
|
||||
QuestieCompat.LibUIDropDownMenu = QuestieCompat.LibUIDropDownMenu or {}
|
||||
QuestieCompat.LibUIDropDownMenu.UIDropDownMenu_Menu_NewSize = function()
|
||||
end
|
||||
|
||||
@@ -85,6 +85,8 @@ local AvailableQuests = QuestieLoader:ImportModule("AvailableQuests")
|
||||
local SeasonOfDiscovery = QuestieLoader:ImportModule("SeasonOfDiscovery")
|
||||
---@type QuestieLearner
|
||||
local QuestieLearner = QuestieLoader:ImportModule("QuestieLearner")
|
||||
---@type QuestieServer
|
||||
local QuestieServer = QuestieLoader:ImportModule("QuestieServer")
|
||||
|
||||
--- COMPATIBILITY ---
|
||||
local WOW_PROJECT_ID = QuestieCompat.WOW_PROJECT_ID
|
||||
@@ -154,9 +156,15 @@ QuestieInit.Stages[1] = function() -- run as a coroutine
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieInit:Stage1] Starting QuestieOptions.Initialize Thread.")
|
||||
ThreadLib.ThreadSimple(QuestieOptions.Initialize, 0)
|
||||
|
||||
if QuestieServer and QuestieServer.Init then
|
||||
QuestieServer:Init()
|
||||
end
|
||||
|
||||
MinimapIcon:Init()
|
||||
|
||||
HBDHooks:Init()
|
||||
if HBDHooks and HBDHooks.Init then
|
||||
HBDHooks:Init()
|
||||
end
|
||||
|
||||
Questie:SetIcons()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user