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.
166 lines
5.0 KiB
166 lines
5.0 KiB
local VERSION_TEXT = "v1.3.6";
|
|
local VERSION_DATE = 1724400000;
|
|
|
|
|
|
local addonName, addon = ...
|
|
|
|
local L = {}; --Locale
|
|
local API = {}; --Custom APIs used by this addon
|
|
local DB;
|
|
|
|
addon.L = L;
|
|
addon.API = API;
|
|
addon.VERSION_TEXT = VERSION_TEXT;
|
|
|
|
|
|
local CallbackRegistry = {};
|
|
CallbackRegistry.events = {};
|
|
addon.CallbackRegistry = CallbackRegistry;
|
|
|
|
local tinsert = table.insert;
|
|
local type = type;
|
|
local ipairs = ipairs;
|
|
|
|
--[[
|
|
callbackType:
|
|
1. Function func(owner)
|
|
2. Method owner:func()
|
|
--]]
|
|
|
|
function CallbackRegistry:Register(event, func, owner)
|
|
if not self.events[event] then
|
|
self.events[event] = {};
|
|
end
|
|
|
|
local callbackType;
|
|
|
|
if type(func) == "string" then
|
|
callbackType = 2;
|
|
else
|
|
callbackType = 1;
|
|
end
|
|
|
|
tinsert(self.events[event], {callbackType, func, owner})
|
|
end
|
|
|
|
function CallbackRegistry:Trigger(event, ...)
|
|
if self.events[event] then
|
|
for _, cb in ipairs(self.events[event]) do
|
|
if cb[1] == 1 then
|
|
if cb[3] then
|
|
cb[2](cb[3], ...);
|
|
else
|
|
cb[2](...);
|
|
end
|
|
else
|
|
cb[3][cb[2]](cb[3], ...);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
local function GetDBValue(dbKey)
|
|
return DB[dbKey]
|
|
end
|
|
addon.GetDBValue = GetDBValue;
|
|
|
|
local function SetDBValue(dbKey, value)
|
|
DB[dbKey] = value;
|
|
addon.CallbackRegistry:Trigger("SettingChanged."..dbKey, value);
|
|
end
|
|
addon.SetDBValue = SetDBValue;
|
|
|
|
|
|
local DefaultValues = {
|
|
AutoJoinEvents = true,
|
|
BackpackItemTracker = true,
|
|
HideZeroCountItem = true,
|
|
ConciseTokenTooltip = true,
|
|
TrackItemUpgradeCurrency = true,
|
|
TrackHolidayItem = true,
|
|
TrackerBarInsideSeparateBag = false,
|
|
GossipFrameMedal = true,
|
|
EmeraldBountySeedList = true, --Show a list of Dreamseed when appoaching Emarad Bounty Soil
|
|
WorldMapPinSeedPlanting = true, --Aditional Map Pin: Dreamseed
|
|
AlternativePlayerChoiceUI = true, --Revamp PlayerChoiceFrame for Dreamseed Nurturing
|
|
HandyLockpick = true, --Right-click to lockpick inventory items (Rogue/Mechagnome)
|
|
Technoscryers = true, --Show Technoscryers on QuickSlot (Azerothian Archives World Quest)
|
|
TooltipChestKeys = true, --Show keys that unlocked the current chest or door
|
|
ExpansionLandingPage = true, --Display extra info on the ExpansionLandingPage
|
|
Delves_SeasonProgress = true, --Display Seaonal Journey changes on a progress bar
|
|
|
|
|
|
--Unified Map Pin System
|
|
WorldMapPin_TWW = true, --Master Switch for TWW Map Pins
|
|
WorldMapPin_TWW_Delve = true, --Show Bountiful Delves on continent map
|
|
WorldMapPin_TWW_Quest = true, --Show Special Assignment on continent map
|
|
|
|
|
|
--Modify default interface behavior:
|
|
BlizzFixEventToast = true, --Make Toast non-interactable
|
|
MerchantPrice = false; --Merchant Price (Alt Currency) Overview, gray insufficient items
|
|
|
|
|
|
--In-game Navigation: Use waypoint (Super Tracking) to navigate players. Generally default to false, since it will mute WoW's own SuperTrackedFrame
|
|
Navigator_MasterSwitch = true, --Decide if using our SuperTrackedFrame or the default one
|
|
Navigator_Dreamseed = false,
|
|
|
|
|
|
--Talking Head Revamp
|
|
TalkingHead_MasterSwitch = false,
|
|
TalkingHead_FontSize = 100, --% Multiply default QuestFont Height
|
|
TalkingHead_InstantText = false,
|
|
TalkingHead_TextOutline = false,
|
|
TalkingHead_HideInInstance = false,
|
|
TalkingHead_HideWorldQuest = false,
|
|
TalkingHead_BelowWorldMap = false,
|
|
|
|
|
|
--Declared elsewhere:
|
|
--DreamseedChestABTesting = math.random(100) >= 50
|
|
|
|
|
|
--Deprecated:
|
|
--DruidModelFix = true, --Fixed by Blizzard in 10.2.0
|
|
--PlayerChoiceFrameToken = true, --First implementation in 10.2.0 --We instead revamp the who PlayerChoiceFrame
|
|
--BlizzFixWardrobeTrackingTip = true, --Hide Wardrobe tip that cannot be disabled --Tip removed by Blizzard
|
|
};
|
|
|
|
local function LoadDatabase()
|
|
PlumberDB = PlumberDB or {};
|
|
DB = PlumberDB;
|
|
|
|
for dbKey, value in pairs(DefaultValues) do
|
|
if DB[dbKey] == nil then
|
|
DB[dbKey] = value;
|
|
end
|
|
end
|
|
|
|
if not DB.installTime or type(DB.installTime) ~= "number" then
|
|
DB.installTime = VERSION_DATE;
|
|
end
|
|
|
|
DefaultValues = nil;
|
|
end
|
|
|
|
local EL = CreateFrame("Frame");
|
|
EL:RegisterEvent("ADDON_LOADED");
|
|
|
|
EL:SetScript("OnEvent", function(self, event, ...)
|
|
local name = ...
|
|
if name == addonName then
|
|
self:UnregisterEvent(event);
|
|
LoadDatabase();
|
|
end
|
|
end);
|
|
|
|
|
|
do
|
|
local tocVersion = select(4, GetBuildInfo());
|
|
tocVersion = tonumber(tocVersion or 0);
|
|
|
|
addon.IsGame_10_2_0 = tocVersion >= 100200;
|
|
addon.IsGame_11_0_0 = tocVersion >= 110000;
|
|
addon.IsGame_11_0_2 = tocVersion >= 110002;
|
|
end
|