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

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