Skip to content

Commit 8eada88

Browse files
committed
Implement configuration options for when to show/hide the tooltip info (closes #5)
1 parent 5e964d1 commit 8eada88

File tree

3 files changed

+179
-3
lines changed

3 files changed

+179
-3
lines changed

TransmogUpgradeMaster.lua

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ local name, ns = ...
44
local TUM = {}
55
TransmogUpgradeMaster = TUM
66

7-
TUM.debug = false
8-
97
--- @type TransmogUpgradeMasterData
108
TUM.data = ns.data
9+
--- @type TransmogUpgradeMasterConfig
10+
TUM.Config = ns.Config
1111

1212
local TIER_LFR = 1
1313
local TIER_NORMAL = 2
@@ -78,6 +78,7 @@ do
7878
end
7979

8080
EventUtil.ContinueOnAddOnLoaded(name, function()
81+
TUM.db = TUM.Config:Init()
8182
local currentSeason = C_MythicPlus.GetCurrentSeason()
8283
TUM.currentSeason = (currentSeason and currentSeason > 0) and currentSeason or 14
8384

@@ -181,10 +182,26 @@ function TUM:IsCurrentSeasonItem(itemLink)
181182
return false
182183
end
183184

185+
local modifierFunctions = {
186+
[TUM.Config.modifierKeyOptions.always] = function() return true end,
187+
[TUM.Config.modifierKeyOptions.shift] = IsShiftKeyDown,
188+
[TUM.Config.modifierKeyOptions.ctrl] = IsControlKeyDown,
189+
[TUM.Config.modifierKeyOptions.alt] = IsAltKeyDown,
190+
[TUM.Config.modifierKeyOptions.never] = function() return false end,
191+
}
192+
184193
--- @param tooltip GameTooltip
185194
--- @param text string
186195
--- @param isCollected boolean
187196
function TUM:AddTooltipLine(tooltip, text, isCollected)
197+
local modifierSetting = isCollected
198+
and self.db.showCollectedModifierKey
199+
or self.db.showUncollectedModifierKey
200+
local modifierFunction = modifierFunctions[modifierSetting]
201+
if not modifierFunction or not modifierFunction() then
202+
return
203+
end
204+
188205
local ok = OK_MARKUP .. GREEN_FONT_COLOR:WrapTextInColorCode(' Collected ') .. OK_MARKUP
189206
local nok = NOK_MARKUP .. RED_FONT_COLOR:WrapTextInColorCode(' Not Collected ') .. NOK_MARKUP
190207
tooltip:AddDoubleLine(text, isCollected and ok or nok)
@@ -193,7 +210,7 @@ end
193210
--- @param tooltip GameTooltip
194211
--- @param text string
195212
function TUM:AddDebugLine(tooltip, text)
196-
if not self.debug then return end
213+
if not self.db.debug then return end
197214

198215
tooltip:AddDoubleLine('<TUM Debug>', text, 1, 0.5, 0, 1, 1, 1)
199216
end

TransmogUpgradeMaster.toc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
## Author: Numy
55
## IconTexture: Interface\Addons\TransmogUpgradeMaster\media\icon
66
## Version: @project-version@
7+
## SavedVariables: TransmogUpgradeMasterDB
78
## X-Curse-Project-ID: 1265598
89
## X-Wago-ID: 4N2mjQGL
910
## Category-enUS: Collections
@@ -19,4 +20,5 @@
1920
## Category-zhTW: 戰隊收藏
2021

2122
data.lua
23+
config.lua
2224
TransmogUpgradeMaster.lua

config.lua

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
local name, ns = ...;
2+
3+
--- @class TransmogUpgradeMasterConfig
4+
local Config = {}
5+
ns.Config = Config;
6+
7+
local WARBAND_INFO_IMPLEMENTED = false;
8+
9+
Config.modifierKeyOptions = {
10+
always = "always",
11+
shift = "shift",
12+
ctrl = "ctrl",
13+
alt = "alt",
14+
never = "never",
15+
};
16+
17+
Config.settingKeys = {
18+
hideWhenCollected = "hideWhenCollected",
19+
showCollectedModifierKey = "showCollectedModifierKey",
20+
showUncollectedModifierKey = "showUncollectedModifierKey",
21+
showWarbandCatalystInfo = "showWarbandCatalystInfo",
22+
showClassCatalystInfoPrefix = "showClassCatalystInfo_",
23+
debug = "debug",
24+
};
25+
26+
function Config:Init()
27+
TransmogUpgradeMasterDB = TransmogUpgradeMasterDB or {};
28+
self.db = TransmogUpgradeMasterDB;
29+
local defaults = {
30+
[self.settingKeys.hideWhenCollected] = false,
31+
[self.settingKeys.debug] = false,
32+
[self.settingKeys.showCollectedModifierKey] = self.modifierKeyOptions.always,
33+
[self.settingKeys.showUncollectedModifierKey] = self.modifierKeyOptions.always,
34+
[self.settingKeys.showWarbandCatalystInfo] = self.modifierKeyOptions.shift,
35+
};
36+
for classID = 1, GetNumClasses() do
37+
defaults[self.settingKeys.showClassCatalystInfoPrefix .. classID] = true;
38+
end
39+
for k, v in pairs(defaults) do
40+
if self.db[k] == nil then
41+
self.db[k] = v;
42+
end
43+
end
44+
45+
local category, layout = Settings.RegisterVerticalLayoutCategory("Transmog Upgrade Master");
46+
47+
local showModifierOptions = {
48+
{ text = "Always", label = "Always", tooltip = "Always show.", value = self.modifierKeyOptions.always },
49+
{ text = "Shift", label = "While holding SHIFT", tooltip = "Only while holding Shift.", value = self.modifierKeyOptions.shift },
50+
{ text = "Ctrl", label = "While holding CTRL", tooltip = "Only while holding Ctrl.", value = self.modifierKeyOptions.ctrl },
51+
{ text = "Alt", label = "While holding ALT", tooltip = "Only while holding Alt.", value = self.modifierKeyOptions.alt },
52+
{ text = "Never", label = "Never", tooltip = "Never show.", value = self.modifierKeyOptions.never },
53+
};
54+
55+
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer(
56+
"Display Transmog Collection Status in Tooltip",
57+
"Show whether you have collected an Upgraded or Catalysed appearance in the tooltip."
58+
));
59+
self:MakeDropdown(
60+
category,
61+
"Show Collected TMog in Tooltip",
62+
self.settingKeys.showCollectedModifierKey,
63+
defaults.showCollectedModifierKey,
64+
"When to display the Upgrade and Catalyst information for collected appearances.",
65+
showModifierOptions,
66+
Settings.VarType.String
67+
);
68+
self:MakeDropdown(
69+
category,
70+
"Show Uncollected TMog in Tooltip",
71+
self.settingKeys.showUncollectedModifierKey,
72+
defaults.showUncollectedModifierKey,
73+
"When to display the Upgrade and Catalyst information for uncollected appearances.",
74+
showModifierOptions,
75+
Settings.VarType.String
76+
);
77+
if WARBAND_INFO_IMPLEMENTED then
78+
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer(
79+
"Warband Catalyst Info",
80+
"For warbound or BoE items, you can show the classes for which you can get an appearance by catalysing (and upgrading) the item."
81+
));
82+
self:MakeDropdown(
83+
category,
84+
"Show Warband Catalyst Info",
85+
self.settingKeys.showWarbandCatalystInfo,
86+
defaults.showWarbandCatalystInfo,
87+
"When to display the Warband Catalyst information in the tooltip.",
88+
showModifierOptions,
89+
Settings.VarType.String
90+
);
91+
do
92+
for classID = 1, GetNumClasses() do
93+
local className, classFile = GetClassInfo(classID);
94+
local classColor = RAID_CLASS_COLORS[classFile];
95+
local label = "Show " .. classColor:WrapTextInColorCode(className);
96+
self:MakeCheckbox(
97+
category,
98+
label,
99+
self.settingKeys.showClassCatalystInfoPrefix .. classID,
100+
defaults[self.settingKeys.showClassCatalystInfoPrefix .. classID],
101+
"If checked, the tooltip will show the Catalyst information for " .. classColor:WrapTextInColorCode(className) .. " for warbound or BoE items."
102+
);
103+
end
104+
end
105+
end
106+
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Other Settings"));
107+
self:MakeCheckbox(
108+
category,
109+
"Debug Tooltip Info",
110+
self.settingKeys.debug,
111+
defaults.debug,
112+
"If Checked, debug info will be shown in the tooltip."
113+
);
114+
115+
Settings.RegisterAddOnCategory(category)
116+
117+
SLASH_TRANSMOG_UPGRADE_MASTER1 = "/tum";
118+
SLASH_TRANSMOG_UPGRADE_MASTER2 = "/transmogupgrademaster";
119+
SlashCmdList["TRANSMOG_UPGRADE_MASTER"] = function()
120+
Settings.OpenToCategory(category:GetID());
121+
end
122+
123+
return self.db;
124+
end
125+
126+
local settingPrefix = name .. "_";
127+
128+
function Config:MakeCheckbox(category, label, settingKey, defaultValue, tooltip)
129+
local variable = settingPrefix .. settingKey;
130+
131+
local setting = Settings.RegisterAddOnSetting(category, variable, settingKey, self.db, Settings.VarType.Boolean, label, defaultValue);
132+
setting:SetValueChangedCallback(function(setting, value) self:OnSettingChange(setting:GetVariable(), value) end);
133+
134+
Settings.CreateCheckbox(category, setting, tooltip);
135+
end
136+
137+
--- @alias TUMDropDownOptions { text: string, label: string, tooltip: string, value: any }[]
138+
139+
--- @param options TUMDropDownOptions|fun(): TUMDropDownOptions
140+
--- @param varType "string"|"number"|"boolean" # one of Settings.VarType
141+
function Config:MakeDropdown(category, label, settingKey, defaultValue, tooltip, options, varType)
142+
local variable = settingPrefix .. settingKey;
143+
144+
local GetOptions = options;
145+
if type(options) == "table" then
146+
GetOptions = function() return options; end
147+
end
148+
149+
local setting = Settings.RegisterAddOnSetting(category, variable, settingKey, self.db, varType, label, defaultValue);
150+
setting:SetValueChangedCallback(function(setting, value) self:OnSettingChange(setting:GetVariable(), value) end);
151+
152+
Settings.CreateDropdown(category, setting, GetOptions, tooltip);
153+
end
154+
155+
function Config:OnSettingChange(setting, value)
156+
-- nothing so far
157+
end

0 commit comments

Comments
 (0)