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.
302 lines
11 KiB
302 lines
11 KiB
local NARCI_VERSION_INFO = "1.3.2";
|
|
|
|
local VERSION_DATE = 1667748142;
|
|
local CURRENT_VERSION = 10301;
|
|
local PREVIOUS_VERSION = CURRENT_VERSION;
|
|
local TIME_SINCE_LAST_UPDATE = 0;
|
|
|
|
do
|
|
TIME_SINCE_LAST_UPDATE = ((time and time()) or (VERSION_DATE)) - VERSION_DATE;
|
|
if TIME_SINCE_LAST_UPDATE < 0 then
|
|
TIME_SINCE_LAST_UPDATE = 0;
|
|
end
|
|
end
|
|
|
|
|
|
local _, addon = ...
|
|
local SettingFunctions = {};
|
|
addon.SettingFunctions = SettingFunctions;
|
|
|
|
--[[
|
|
Saved Variables:
|
|
1. NarcissusDB (primary)
|
|
2. NarciCreatureOptions (creature database)
|
|
3. NarcissusDB_PC (per character)
|
|
--]]
|
|
|
|
Narci = {};
|
|
NarciAPI = {};
|
|
NarciViewUtil = {};
|
|
|
|
local DefaultValues = {
|
|
DetailedIlvlInfo = true,
|
|
IsSortedByCategory = true, --Title Sorting
|
|
FontHeightItemName = 10,
|
|
GlobalScale = 0.8,
|
|
EnableDoubleTap = false,
|
|
CameraOrbit = true,
|
|
CameraSafeMode = true,
|
|
TooltipTheme = "Bright",
|
|
TruncateText = false,
|
|
ItemNameWidth = 180,
|
|
WeatherEffect = true,
|
|
VignetteStrength = 0.5,
|
|
LetterboxEffect = false,
|
|
LetterboxRatio = 2,
|
|
AFKScreen = false,
|
|
AKFScreenDelay = false, --Ope Narcissus when you go afk with a delay. Move to cancel.
|
|
GemManager = true, --Enable gem manager for Blizzard item socketing frame
|
|
DressingRoom = true, --Enable dressing room module
|
|
DressingRoomUseTargetModel = true, --Replace the the dressing room room with your targeted player
|
|
DressingRoomIncludeItemID = false, --Show Item ID in the clipboard
|
|
DressingRoomShowIconSelect = false, --Display a list of icons when saving a new outfit
|
|
UseEntranceVisual = true,
|
|
ModelPanelScale = 1,
|
|
BaseLineOffset = 0, --Ultra-wide
|
|
ShrinkArea = 0, --Reduce the width of the area where you can control the model
|
|
AutoPlayAnimation = false, --Play recommended animation when clicking a spell visual entry
|
|
UseEscapeButton = true, --Use Escape button to exit
|
|
ShowMinimapButton = true,
|
|
FadeButton = false,
|
|
ShowModulePanelOnMouseOver = true, --Mouseover to show Module panel while mouseover minimap button
|
|
IndependentMinimapButton = false, --Set Minimap Button Parent to Minimap or UIParent; Handle by other addons like MBB
|
|
AnchorToMinimap = true, --Anchor the mini button to Minimap
|
|
CameraTransition = true, --(2nd you use the Character Pane) Camera moves smoothly bewtween presets
|
|
UseBustShot = true, --Zoom in to the upper torso
|
|
ConduitTooltip = false, --Show conduit effects of higher ranks
|
|
PaperDollWidget = true, --Show Domination/Class Set indicator on the Blizzard character pane
|
|
OnlyShowOwnedUpgradeItem = true, --Filter for gems/enchant scrolls
|
|
ItemTooltipStyle = 1,
|
|
ShowItemID = false, --Show itemID on equipment tooltip
|
|
OutfitSortMethod = "name", --Filter for sorting outfits: (name alphabet/recently visited)
|
|
HideTextsWithUI = true, --Hide all texts when UI is hidden
|
|
|
|
MissingEnchantAlert = false, --Show alert if the item isn't enchanted
|
|
TalentTreeForInspection = true,
|
|
TalentTreeForPaperDoll = false, --True on Beta for testing
|
|
TalentTreeForEquipmentManager = true,
|
|
TalentTreeUseClassBackground = false,
|
|
|
|
--# NPC
|
|
SearchRelatives = false, --Search for NPCs with the same last name
|
|
TranslateName = false, --Show NPC localized name
|
|
NameTranslationPosition = 1, --Show translated name on 1.tooltip 2.nameplate
|
|
NamePlateNameOffset = 0, --Y Offset
|
|
NamePlateLanguage = "enUS", --The localized name on NamePlate (only one)
|
|
TooltipLanguages = {}, --Enabled localized names on tooltip
|
|
|
|
--# Internal Hotkey
|
|
SearchRelativesHotkey = "TAB", --The key you press to begin/cycle relative search
|
|
|
|
|
|
--Search Suggestion
|
|
SearchSuggestEnable = true,
|
|
SearchSuggestDirection = 1; --Below Item Search Box
|
|
AutoFilterMail = false,
|
|
AutoFilterAuction = false,
|
|
AutoFilterGem = false,
|
|
|
|
--# Initializationd in other files
|
|
--["MinimapIconStyle = 1, --Change the icon of minimap button (Main.lua)
|
|
|
|
--# Deprecated
|
|
--["UseExitConfirmation = true, --Show exit confirmation dialog upon leaving group photo mode
|
|
--["ShowFullBody = true, --Show entire body in Xmog Mode
|
|
--["AlwaysShowModel = false, --Related to mog mode layout
|
|
--["DefaultLayout = 2, --Related to mog mode layout
|
|
--["FadeMusic = false,
|
|
--["AFKAutoStand = false, --Do /stand emote now and then when you go AFK. Cause player to stand/sit repeatedly
|
|
--["EyeColor = 1, --8.3 Corruption Indicator Orange
|
|
--["CorruptionBar = true,
|
|
--["CorruptionTooltip = false,
|
|
--["CorruptionTooltipModel = true,
|
|
--["BorderTheme = "Dark", --No longer update the bright border theme
|
|
--["EnableGrainEffect = false,
|
|
--["AutoColorTheme = true,
|
|
--["ColorChoice = 0,
|
|
|
|
--# User Tag
|
|
--"UserIsCurious" (user interacted with our item shop)
|
|
};
|
|
|
|
|
|
local AchievementOptions = {
|
|
UseAsDefault = false,
|
|
Scale = 1,
|
|
Theme = 1,
|
|
IncompleteFirst = true,
|
|
ShowRedMark = false, --Mark achievement that was not earned by me with a red cross
|
|
ReplaceToast = true, --Replace the original achievement toast
|
|
};
|
|
|
|
|
|
local TutorialMarkers = {
|
|
"SpellVisualBrowser", "Movement", "ExitConfirmation", --"IndependentMinimapButton" , "EquipmentSetManager"
|
|
"NPCBrowserEntance", "NPCBrowser",
|
|
"WeaponBrowser",
|
|
};
|
|
|
|
local function LoadDatabase()
|
|
NarcissusDB = NarcissusDB or {}; --Account-wide Variables
|
|
local db = NarcissusDB;
|
|
|
|
NarciCreatureOptions = NarciCreatureOptions or {}; --Creature Database
|
|
NarciAchievementOptions = NarciAchievementOptions or {}; --Achievement Settings
|
|
|
|
NarcissusDB_PC = NarcissusDB_PC or {}; --Character-specific Variables
|
|
NarcissusDB_PC.EquipmentSetDB = NarcissusDB_PC.EquipmentSetDB or {};
|
|
|
|
db.MinimapButton = db.MinimapButton or {};
|
|
db.MinimapButton.Position = db.MinimapButton.Position or math.rad(150);
|
|
|
|
|
|
--Migrate deprecated variables
|
|
if db.HideTextsWithUI == nil then
|
|
if db.PhotoModeButton and db.PhotoModeButton.HideTexts ~= nil then
|
|
db.HideTextsWithUI = db.PhotoModeButton.HideTexts;
|
|
end
|
|
end
|
|
|
|
|
|
---- Preference ----
|
|
local type = type;
|
|
|
|
for k, v in pairs(DefaultValues) do
|
|
if db[k] == nil or type(db[k]) ~= type(v) then
|
|
db[k] = v;
|
|
end
|
|
end
|
|
|
|
|
|
---- Achievement Data ----
|
|
for k, v in pairs(AchievementOptions) do
|
|
if NarciAchievementOptions[k] == nil then
|
|
NarciAchievementOptions[k] = v;
|
|
end
|
|
end
|
|
|
|
|
|
---- Per Character ----
|
|
if NarcissusDB_PC.UseAlias == nil then
|
|
NarcissusDB_PC.UseAlias = false;
|
|
end
|
|
|
|
if NarcissusDB_PC.PlayerAlias == nil then
|
|
NarcissusDB_PC.PlayerAlias = "";
|
|
end
|
|
|
|
|
|
---- Tutorial Markers ----
|
|
db.Tutorials = db.Tutorials or {};
|
|
local Tutorials = db.Tutorials;
|
|
for _, v in pairs(TutorialMarkers) do
|
|
if Tutorials[v] == nil then
|
|
Tutorials[v] = true; --True ~ will show tutorial
|
|
end
|
|
end
|
|
|
|
|
|
---- Addon Update Info ----
|
|
if (not db.Version) or (type(db.Version) ~= "number") then --Used for showing patch notes when opening Narcissus after an update
|
|
db.Version = 10000;
|
|
end
|
|
|
|
if CURRENT_VERSION > db.Version then
|
|
PREVIOUS_VERSION = db.Version;
|
|
--wake SplashFrame
|
|
end
|
|
|
|
if not db.installTime or type(db.installTime) ~= "number" then
|
|
db.installTime = (time and time()) or VERSION_DATE;
|
|
end
|
|
|
|
DefaultValues = nil;
|
|
AchievementOptions = nil;
|
|
TutorialMarkers = nil;
|
|
|
|
if db.SearchRelatives or db.TranslateName then
|
|
C_Timer.After(0, function()
|
|
LoadAddOn("Narcissus_Database_NPC");
|
|
end)
|
|
end
|
|
end
|
|
|
|
local function LoadSettings()
|
|
local db = NarcissusDB;
|
|
|
|
for _, func in pairs(SettingFunctions) do
|
|
func(nil, db);
|
|
end
|
|
|
|
C_Timer.After(0, function()
|
|
collectgarbage("collect");
|
|
end)
|
|
end
|
|
|
|
|
|
local Initialization = CreateFrame("Frame");
|
|
Initialization:RegisterEvent("ADDON_LOADED");
|
|
Initialization:RegisterEvent("PLAYER_ENTERING_WORLD");
|
|
|
|
Initialization:SetScript("OnEvent",function(self,event,...)
|
|
if event == "ADDON_LOADED" then
|
|
local name = ...
|
|
if name == "Narcissus" then
|
|
self:UnregisterEvent(event);
|
|
LoadDatabase();
|
|
end
|
|
elseif event == "PLAYER_ENTERING_WORLD" then
|
|
self:UnregisterEvent(event);
|
|
self:SetScript("OnEvent", nil);
|
|
LoadSettings();
|
|
end
|
|
end);
|
|
|
|
|
|
local function GetAddOnVersionInfo(versionOnly)
|
|
if versionOnly then
|
|
return NARCI_VERSION_INFO
|
|
end
|
|
|
|
local dateString;
|
|
local timeString = date("%d %m %y", VERSION_DATE);
|
|
local day, month, year = string.split(" ", timeString);
|
|
|
|
if day and month and year then
|
|
day = tonumber(day);
|
|
month = tonumber(month);
|
|
year = tonumber(year);
|
|
dateString = FormatShortDate(day, month, year);
|
|
end
|
|
|
|
-- time since last update
|
|
local timeDiff;
|
|
local days = math.floor(TIME_SINCE_LAST_UPDATE / 86400 + 0.5);
|
|
if days > 2 then
|
|
if days < 60 then
|
|
timeDiff = string.format(Narci.L["Format Days Ago"], days);
|
|
else
|
|
local months = math.floor(days / 30.5 + 0.5);
|
|
timeDiff = string.format(Narci.L["Format Months Ago"], months);
|
|
end
|
|
else
|
|
timeDiff = string.lower(KBASE_RECENTLY_UPDATED or "recently updated");
|
|
end
|
|
|
|
return NARCI_VERSION_INFO, dateString, timeDiff
|
|
end
|
|
|
|
NarciAPI.GetAddOnVersionInfo = GetAddOnVersionInfo;
|
|
|
|
|
|
do
|
|
local version = GetBuildInfo();
|
|
local expansionID = string.match(version, "(%d+)%.");
|
|
local isDF = (tonumber(expansionID) or 1) >= 10;
|
|
|
|
local function IsDragonflight()
|
|
return isDF
|
|
end
|
|
|
|
addon.IsDragonflight = IsDragonflight;
|
|
end
|