diff --git a/Modules/Options/AdvancedTab/QuestieOptionsAdvanced.lua b/Modules/Options/AdvancedTab/QuestieOptionsAdvanced.lua index a0580d7..88bc630 100644 --- a/Modules/Options/AdvancedTab/QuestieOptionsAdvanced.lua +++ b/Modules/Options/AdvancedTab/QuestieOptionsAdvanced.lua @@ -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 diff --git a/Modules/QuestieCompat.lua b/Modules/QuestieCompat.lua index bb1a712..77f1306 100644 --- a/Modules/QuestieCompat.lua +++ b/Modules/QuestieCompat.lua @@ -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 diff --git a/Modules/QuestieInit.lua b/Modules/QuestieInit.lua index 96dbd2c..4567e83 100644 --- a/Modules/QuestieInit.lua +++ b/Modules/QuestieInit.lua @@ -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()