Add RETAIL support (big refactor)

This commit is contained in:
Roman Jaroš 2024-08-19 13:08:40 +02:00
parent 578142977f
commit cde428a4f1
36 changed files with 1951 additions and 1878 deletions

View file

@ -1,56 +1,70 @@
local defaultOptions = {
DEBUG_MODE = false,
DARK_MODE = false,
}
local addonName = ...
local optionsFrame = CreateFrame("Frame")
local function CreateCheckBox(parent, optionsPanel, text, onClick)
local checkbox = CreateFrame("CheckButton", nil, optionsPanel, "InterfaceOptionsCheckButtonTemplate")
local function CreateCheckbox(parent, frame, text, optionKey)
local checkbox = CreateFrame("CheckButton", nil, frame, "InterfaceOptionsCheckButtonTemplate")
checkbox.Text:SetText(text)
checkbox:SetScript("OnClick", onClick)
return checkbox
end
local function createOptionCheckbox(parent, optionsPanel, text, optionKey)
local checkbox = CreateCheckBox(parent, optionsPanel, text, function(self)
local checked = self:GetChecked()
CzechQuestsOptions[optionKey] = checked
checkbox:SetScript("OnClick", function(self)
CzechQuestsAddon.options[optionKey] = self:GetChecked()
end)
checkbox:SetPoint("TOPLEFT", parent, "BOTTOMLEFT", 0, -8)
checkbox:SetChecked(CzechQuestsOptions[optionKey])
checkbox:SetChecked(CzechQuestsAddon.options[optionKey])
return checkbox
end
local function InitializeOptions()
local optionsPanel = CreateFrame("Frame", "CzechQuestsOptionsPanel", UIParent)
optionsPanel.name = "CzechQuests"
function CzechQuestsAddon:InitializeOptions()
CzechQuestsAddon.optionsFrame = {};
local title = optionsPanel:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge")
title:SetPoint("TOPLEFT", 16, -16)
title:SetText("CzechQuests")
if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then
local frame
-- Create Frame
CzechQuestsAddon.optionsFrame = CreateFrame("Frame", "CzechQuestsOptionsPanel", UIParent)
CzechQuestsAddon.optionsFrame.name = "CzechQuests"
local enableDebugModeCheckbox = createOptionCheckbox(title, optionsPanel,"Enable DEBUG mode", "DEBUG_MODE")
enableDebugModeCheckbox:SetPoint("TOPLEFT", title, "BOTTOMLEFT", 16, -8)
-- Create frame title
local title = CzechQuestsAddon.optionsFrame:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge")
title:SetPoint("TOPLEFT", 16, -16)
title:SetText("CzechQuests")
local enableDarkModeCheckbox = createOptionCheckbox(enableDebugModeCheckbox, optionsPanel,"Dark mode (require reload)", "DARK_MODE")
enableDarkModeCheckbox:SetPoint("TOPLEFT", enableDebugModeCheckbox, "BOTTOMLEFT", 0, -8)
-- Add DEBUG checkbox
local debugModeCheckbox = CreateCheckbox(title, CzechQuestsAddon.optionsFrame, "Enable DEBUG mode", "DEBUG_MODE")
debugModeCheckbox:SetPoint("TOPLEFT", title, "BOTTOMLEFT", 16, -16)
InterfaceOptions_AddCategory(optionsPanel)
end
-- Add Dark Mode checkbox
local darkModeCheckbox = CreateCheckbox(debugModeCheckbox, CzechQuestsAddon.optionsFrame, "Dark mode (require reload)", "DARK_MODE")
darkModeCheckbox:SetPoint("TOPLEFT", debugModeCheckbox, "BOTTOMLEFT", 0, -4)
local function addonLoaded(self, event, addonLoadedName)
if addonLoadedName == addonName then
CzechQuestsOptions = CzechQuestsOptions or defaultOptions
for key, value in pairs(defaultOptions) do
if CzechQuestsOptions[key] == nil then
CzechQuestsOptions[key] = value
end
end
InitializeOptions()
-- Store it into Addon options
InterfaceOptions_AddCategory(CzechQuestsAddon.optionsFrame)
else
CzechQuestsAddon.optionsFrame = Settings.RegisterVerticalLayoutCategory("CzechQuests")
-- Add DEBUG checkbox
local debugCheckbox = Settings.RegisterAddOnSetting(
CzechQuestsAddon.optionsFrame,
"CzechQuestsAddon__DEBUG_MODE",
"DEBUG_MODE",
CzechQuestsAddon.options,
type(CzechQuestsAddon.options.DEBUG_MODE),
"Enable DEBUG mode",
CzechQuestsAddon.options.DEBUG_MODE
)
Settings.CreateCheckbox(CzechQuestsAddon.optionsFrame, debugCheckbox)
-- Add DARK mode checkbox
local darkModeCheckbox = Settings.RegisterAddOnSetting(
CzechQuestsAddon.optionsFrame,
"CzechQuestsAddon__DARK_MODE",
"DARK_MODE",
CzechQuestsAddon.options,
type(CzechQuestsAddon.options.DARK_MODE),
"Use dark mode",
CzechQuestsAddon.options.DARK_MODE
)
Settings.CreateCheckbox(CzechQuestsAddon.optionsFrame, darkModeCheckbox)
-- Store it into Addon options
Settings.RegisterAddOnCategory(CzechQuestsAddon.optionsFrame)
end
end
optionsFrame:RegisterEvent("ADDON_LOADED")
optionsFrame:SetScript("OnEvent", addonLoaded)
-- initialize options frame
CzechQuestsAddon:InitializeOptions()

View file

@ -0,0 +1,70 @@
local headerFont = "Interface\\AddOns\\CzechQuests\\morpheus_cz.ttf"
local textFont = "Interface\\AddOns\\CzechQuests\\frizquadratatt_cz.ttf"
function CzechQuestsAddon:CreateTranslationFrame()
local frame = {};
-- Main Translation Frame
frame = CreateFrame("Frame", "CzechQuestTranslationFrame", nil, BackdropTemplateMixin and "BackdropTemplate")
frame:SetWidth(300)
frame:SetBackdrop({ edgeFile = "Interface/Tooltips/UI-Tooltip-Border", edgeSize = 8 })
frame:Hide()
-- Background Parchment texture
frame.texture = frame:CreateTexture(nil, "BACKGROUND", nil, -1);
frame.texture:SetAllPoints(true);
frame.texture:SetHorizTile(true)
-- Apply correct texture for wow version
if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then
frame.texture:SetTexture("Interface/QUESTFRAME/QuestBG");
frame.texture:SetTexCoord(0, .58, 0.005, 0.66)
else
frame.texture:SetTexture("Interface/QUESTFRAME/QuestBackgroundParchment");
CzechQuestsAddon:SetTextureFromSettings(frame)
end
frame.primaryHeader = CzechQuestsAddon:CreateTranslationFont(frame,"CzechQuestTranslationPrimaryHeader", headerFont, 18)
frame.secondaryHeader = CzechQuestsAddon:CreateTranslationFont(frame,"CzechQuestTranslationSecondaryHeader", headerFont, 16)
frame.primaryText = CzechQuestsAddon:CreateTranslationFont(frame,"CzechQuestTranslationPrimaryText", textFont, 13)
frame.secondaryText = CzechQuestsAddon:CreateTranslationFont(frame,"CzechQuestTranslationSecondaryText", textFont, 13)
return frame;
end
function CzechQuestsAddon:CreateTranslationFont(frame, name, font, size)
local label = frame:CreateFontString(name, "OVERLAY")
label:SetWidth(frame:GetWidth() - 20)
label:SetJustifyH("LEFT")
label:SetTextColor(0, 0, 0, 1)
label:SetFont(font, size, nil)
return label;
end
function CzechQuestsAddon:ResetTranslationText(frame)
frame.primaryHeader:SetText("")
frame.secondaryHeader:SetText("")
frame.primaryText:SetText("")
frame.secondaryText:SetText("")
end
function CzechQuestsAddon:SetTextureFromSettings(frame)
if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then
if CzechQuestsAddon.options.DARK_MODE then
frame:SetBackdropColor(0, 0, 0, 1)
frame.texture:SetColorTexture(0, 0, 0, 1)
frame.primaryHeader:SetTextColor(255, 255, 255, 1)
frame.secondaryHeader:SetTextColor(255, 255, 255, 1)
frame.primaryText:SetTextColor(255, 255, 255, 1)
frame.secondaryText:SetTextColor(255, 255, 255, 1)
end
else
-- TODO add DARK MODE support for retail
-- Read CVar from settings to setup same parchment as Quest frame
if C_CVar.GetCVar("questTextContrast") == "0" then
frame.texture:SetTexCoord(0, .01, 0, 0.4) -- Parchment (brown)
else
frame.texture:SetTexCoord(0, .01, .4, .8) -- Parchment (white)
end
end
end

View file

@ -1,47 +0,0 @@
local headerFontPath = "Interface\\AddOns\\CzechQuests\\morpheus_cz.ttf"
local textFontPath = "Interface\\AddOns\\CzechQuests\\frizquadratatt_cz.ttf"
local tooltipFrame = CreateFrame("Frame", "TranslationInfoFrame", nil, BackdropTemplateMixin and "BackdropTemplate")
tooltipFrame:SetWidth(300)
local translationInfoFrameTexture = tooltipFrame:CreateTexture(nil, "BACKGROUND", nil, -1);
translationInfoFrameTexture:SetAllPoints(true);
translationInfoFrameTexture:SetTexture("Interface/QUESTFRAME/QuestBG");
translationInfoFrameTexture:SetTexCoord(0, .58, 0.005, 0.66)
translationInfoFrameTexture:SetHorizTile(true)
tooltipFrame:SetBackdrop({
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
edgeSize = 8,
})
tooltipFrame:Hide()
local primaryHeader = tooltipFrame:CreateFontString("TranslationInfoFramePrimaryHeader", "OVERLAY", "QuestTitleFont")
primaryHeader:SetWidth(tooltipFrame:GetWidth() - 20)
primaryHeader:SetJustifyH("LEFT")
primaryHeader:SetTextColor(0, 0, 0, 1)
primaryHeader:SetFont(headerFontPath, 20, nil)
local secondaryHeader = tooltipFrame:CreateFontString("TranslationInfoFrameSecondaryHeader", "OVERLAY", "QuestTitleFont")
secondaryHeader:SetWidth(tooltipFrame:GetWidth() - 20)
secondaryHeader:SetJustifyH("LEFT")
secondaryHeader:SetTextColor(0, 0, 0, 1)
secondaryHeader:SetFont(headerFontPath, 17, nil)
local primaryText = tooltipFrame:CreateFontString("TranslationInfoFramePrimaryText", "OVERLAY", "QuestFont")
primaryText:SetWidth(tooltipFrame:GetWidth() - 20)
primaryText:SetJustifyH("LEFT")
primaryText:SetTextColor(0, 0, 0, 1)
primaryText:SetFont(textFontPath, 15, nil)
local secondaryText = tooltipFrame:CreateFontString("TranslationInfoFrameSecondaryText", "OVERLAY", "QuestFont")
secondaryText:SetWidth(tooltipFrame:GetWidth() - 20)
secondaryText:SetJustifyH("LEFT")
secondaryText:SetTextColor(0, 0, 0, 1)
secondaryText:SetFont(textFontPath, 15, nil)
TranslationInfoFrame:RegisterEvent("QUEST_PROGRESS")
TranslationInfoFrame:RegisterEvent("QUEST_COMPLETE")
TranslationInfoFrame:RegisterEvent("QUEST_FINISHED")
TranslationInfoFrame:RegisterEvent("QUEST_DETAIL")
TranslationInfoFrame:RegisterEvent("ITEM_TEXT_READY")