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.
164 lines
4.1 KiB
164 lines
4.1 KiB
local _, addon = ...
|
|
local GetItemQualityColor = addon.API.GetItemQualityColor;
|
|
|
|
local ThemeUtil = {};
|
|
addon.ThemeUtil = ThemeUtil;
|
|
|
|
local gsub = string.gsub;
|
|
local unpack = unpack;
|
|
|
|
local TEXTURE_PATH;
|
|
local THEME_ID;
|
|
|
|
|
|
local function AdjustRedText(text)
|
|
local count;
|
|
text, count = gsub(text, "|[cC][fF][fF][fF][fF]0000", "|cff9B2020");
|
|
|
|
if count == 0 then
|
|
text, count = gsub(text, "|cnRED_FONT_COLOR:", "|cff9B2020");
|
|
end
|
|
|
|
return text, (count and count > 0) --2nd payload used for replacing the gossip icon
|
|
end
|
|
|
|
local function AdjustBlueText(text)
|
|
local count;
|
|
text, count = gsub(text, "|[cC][fF][fF]0000[fF][fF]", "|cff0078FF");
|
|
return text, false
|
|
end
|
|
|
|
local AdjustTextColor = AdjustRedText;
|
|
|
|
local COLORS = {
|
|
--ColorKey = {r, g, b}
|
|
|
|
DarkBrown = {0.19, 0.17, 0.13},
|
|
LightBrown = {0.50, 0.36, 0.24},
|
|
Ivory = {0.87, 0.86, 0.75},
|
|
|
|
DarkModeGrey90 = {0.9, 0.9, 0.9},
|
|
DarkModeGrey70 = {0.7, 0.7, 0.7},
|
|
DarkModeGrey50 = {0.5, 0.5, 0.5},
|
|
DarkModeGold = {1, 0.98, 0.8},
|
|
DarkModeGoldDim = {0.796, 0.784, 0.584},
|
|
};
|
|
|
|
local FONT_OBJECT_COLOR = {
|
|
--FontObjectName = {Theme Brown, Dark}
|
|
|
|
DUIFont_Quest_Title_18 = {"DarkBrown", "DarkModeGrey90"},
|
|
DUIFont_Quest_Title_16 = {"DarkBrown", "DarkModeGrey90"},
|
|
DUIFont_Quest_SubHeader = {"DarkBrown", "DarkModeGrey90"},
|
|
DUIFont_Quest_Paragraph = {"DarkBrown", "DarkModeGrey70"},
|
|
DUIFont_Quest_Gossip = {"DarkBrown", "DarkModeGoldDim"},
|
|
DUIFont_Quest_Quest = {"Ivory", "DarkModeGold"},
|
|
DUIFont_Quest_Disabled = {"LightBrown", "DarkModeGrey50"},
|
|
|
|
DUIFont_Settings_Disabled = {"LightBrown", "DarkModeGrey50"},
|
|
|
|
DUIFont_Item = {"DarkBrown", "DarkModeGrey90"},
|
|
DUIFont_ItemSelect = {"Ivory", "DarkModeGold"},
|
|
|
|
DUIFont_QuestType_Left = {"DarkBrown", "DarkModeGrey90"},
|
|
DUIFont_QuestType_Right = {"DarkModeGrey70", "DarkModeGrey70"},
|
|
};
|
|
|
|
|
|
local function SetFontColor(fontObject, key)
|
|
local color = COLORS[key];
|
|
fontObject:SetTextColor(color[1], color[2], color[3]);
|
|
end
|
|
|
|
function ThemeUtil:SetFontColor(fontObject, key)
|
|
SetFontColor(fontObject, key);
|
|
end
|
|
|
|
function ThemeUtil:SetThemeByID(themeID)
|
|
local colorIndex;
|
|
|
|
if themeID == 2 then --Dark
|
|
colorIndex = 2;
|
|
TEXTURE_PATH = "Interface/AddOns/DialogueUI/Art/Theme_Dark/";
|
|
AdjustTextColor = AdjustBlueText;
|
|
else
|
|
themeID = 1;
|
|
colorIndex = 1;
|
|
TEXTURE_PATH = "Interface/AddOns/DialogueUI/Art/Theme_Brown/";
|
|
AdjustTextColor = AdjustRedText;
|
|
end
|
|
|
|
THEME_ID = themeID;
|
|
|
|
local _G = _G;
|
|
|
|
for fontName, colorKey in pairs(FONT_OBJECT_COLOR) do
|
|
SetFontColor(_G[fontName], colorKey[colorIndex]);
|
|
end
|
|
|
|
if addon.DialogueUI then
|
|
addon.DialogueUI:LoadTheme();
|
|
end
|
|
|
|
if addon.SettingsUI then
|
|
addon.SettingsUI:LoadTheme();
|
|
end
|
|
|
|
if addon.QuestItemDisplay then
|
|
addon.QuestItemDisplay:LoadTheme();
|
|
end
|
|
end
|
|
|
|
function ThemeUtil:GetTexturePath()
|
|
return TEXTURE_PATH
|
|
end
|
|
|
|
function ThemeUtil:GetTextureFile(fileName)
|
|
if fileName then
|
|
return TEXTURE_PATH..fileName;
|
|
end
|
|
end
|
|
|
|
function ThemeUtil:GetThemeID()
|
|
return THEME_ID
|
|
end
|
|
|
|
function ThemeUtil:IsDarkMode()
|
|
return THEME_ID == 2
|
|
end
|
|
|
|
function ThemeUtil:GetQualityColor(quality)
|
|
if self:IsDarkMode() then
|
|
return GetItemQualityColor(quality):GetRGB()
|
|
else
|
|
return 0.19, 0.17, 0.13, 1
|
|
end
|
|
end
|
|
|
|
function ThemeUtil:GetItemSelectColor()
|
|
if self:IsDarkMode() then
|
|
return unpack(COLORS.DarkModeGold)
|
|
else
|
|
return unpack(COLORS.Ivory)
|
|
end
|
|
end
|
|
|
|
function ThemeUtil:AdjustTextColor(text)
|
|
return AdjustTextColor(text);
|
|
end
|
|
|
|
|
|
do
|
|
ThemeUtil:SetThemeByID(1);
|
|
|
|
local function Settings_Theme(dbValue)
|
|
local themeID;
|
|
if dbValue == 2 then
|
|
themeID = 2;
|
|
else
|
|
themeID = 1;
|
|
end
|
|
ThemeUtil:SetThemeByID(themeID);
|
|
end
|
|
addon.CallbackRegistry:Register("SettingChanged.Theme", Settings_Theme);
|
|
end
|