Refactor addon structure and introduce new speech frame.

This commit is contained in:
Roman Jaroš 2025-02-26 02:05:52 +01:00
parent f00edc16fc
commit 4660216504
27 changed files with 698 additions and 441 deletions

View file

@ -0,0 +1,29 @@
-- define FontOptions
function GetFontOptions()
local container = Settings.CreateControlTextContainer()
container:Add("morpheus_cz.ttf", "Morpheus (cz)")
container:Add("frizquadratatt_cz.ttf", "Friz Quadrata TT (cz)")
container:Add("quicksand.ttf", "Quicksand")
container:Add("caveat.ttf", "Caveat")
return container:GetData()
end
function CzechQuestsAddon:InitializeSettings()
CzechQuestsAddon.optionsFrame = {};
CzechQuestsAddon.optionsFrame, layout = Settings.RegisterVerticalLayoutCategory("CzechQuests")
-- Add options for quests
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Questy"))
CzechQuestsAddon:AddQuestOptions(CzechQuestsAddon.optionsFrame)
-- Add options for speech
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Projevy"))
CzechQuestsAddon:AddSpeechOptions(CzechQuestsAddon.optionsFrame)
-- Add options for speech
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Ostatní"))
CzechQuestsAddon:AddOthersOptions(CzechQuestsAddon.optionsFrame)
-- Store it into Addon options
Settings.RegisterAddOnCategory(CzechQuestsAddon.optionsFrame)
end

View file

@ -0,0 +1,15 @@
function CzechQuestsAddon:AddOthersOptions(optionsFrame)
-- Add DEBUG checkbox
local debugCheckbox = Settings.RegisterAddOnSetting(
optionsFrame,
"CzechQuestsAddon__DEBUG_MODE",
"DEBUG_MODE",
CzechQuestsAddon_Store.config,
type(CzechQuestsAddon_Store.config.DEBUG_MODE),
"Zapnout DEBUG",
CzechQuestsAddon_Store.config.DEBUG_MODE
)
Settings.CreateCheckbox(optionsFrame, debugCheckbox)
end

View file

@ -0,0 +1,137 @@
function CzechQuestsAddon:AddQuestOptions(optionsFrame)
if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then
-- Add DARK mode checkbox
local darkModeCheckbox = Settings.RegisterAddOnSetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_QUEST_FRAME_DARK_MODE",
"TRANSLATION_QUEST_FRAME_DARK_MODE",
CzechQuestsAddon_Store.config,
type(CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_DARK_MODE),
"Použít tmavý režim",
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_DARK_MODE
)
Settings.CreateCheckbox(optionsFrame, darkModeCheckbox)
end
-- define FontOptions
local function GetFontOptions()
local container = Settings.CreateControlTextContainer()
container:Add("morpheus_cz.ttf", "Morpheus (cz)")
container:Add("frizquadratatt_cz.ttf", "Friz Quadrata TT (cz)")
container:Add("quicksand.ttf", "Quicksand")
container:Add("caveat.ttf", "Caveat")
return container:GetData()
end
-- Add header font dropdown menu
local headerFontFamilyDropdown = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY",
type(CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY),
"Písmo nadpisu",
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY = value
CzechQuestsAddon:UpdateTranslationQuestFrameFontSettings()
end
)
Settings.CreateDropdown(optionsFrame, headerFontFamilyDropdown, GetFontOptions)
-- Add text font dropdown menu
local textFontFamilyDropdown = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY",
type(CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY),
"Písmo textu",
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY = value
CzechQuestsAddon:UpdateTranslationQuestFrameFontSettings()
end
)
Settings.CreateDropdown(optionsFrame, textFontFamilyDropdown, GetFontOptions)
-- Add slider for change primary header font size
local primaryHeaderFontSizeSlider = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE",
type(CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE),
"Velikost názvu",
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE = value
CzechQuestsAddon:UpdateTranslationQuestFrameFontSettings()
end
)
local primaryHeaderFontSizeSliderOptions = Settings.CreateSliderOptions(10, 30, 1)
primaryHeaderFontSizeSliderOptions:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
Settings.CreateSlider(optionsFrame, primaryHeaderFontSizeSlider, primaryHeaderFontSizeSliderOptions)
-- Add slider for change secondary header font size
local secondaryHeaderFontSizeSlider = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE",
type(CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE),
"Velikost nadpisu",
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE = value
CzechQuestsAddon:UpdateTranslationQuestFrameFontSettings()
end
)
local secondaryHeaderFontSizeSliderOptions = Settings.CreateSliderOptions(10, 30, 1)
secondaryHeaderFontSizeSliderOptions:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
Settings.CreateSlider(optionsFrame, secondaryHeaderFontSizeSlider, secondaryHeaderFontSizeSliderOptions)
-- Add slider for change secondary header font size
local textFontSizeSlider = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE",
type(CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE),
"Velikost textu",
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE = value
CzechQuestsAddon:UpdateTranslationQuestFrameFontSettings()
end
)
local textFontSizeSliderOptions = Settings.CreateSliderOptions(10, 30, 1)
textFontSizeSliderOptions:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
Settings.CreateSlider(optionsFrame, textFontSizeSlider, textFontSizeSliderOptions)
-- Add slider for change secondary header font size
local textureAlphaSlider = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA",
type(CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA),
"Pruhlednost pozadí",
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA = value
end
)
local textureAlphaSliderOptions = Settings.CreateSliderOptions(10, 100, 10)
textureAlphaSliderOptions:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
Settings.CreateSlider(optionsFrame, textureAlphaSlider, textureAlphaSliderOptions)
end

View file

@ -0,0 +1,94 @@
function CzechQuestsAddon:AddSpeechOptions(optionsFrame)
-- Add header font dropdown menu
local npcFontFamilyDropdown = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_SPEECH_FRAME_NPC_FONT_FAMILY",
type(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_FAMILY),
"Písmo jména",
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_FAMILY,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_FAMILY
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_FAMILY = value
CzechQuestsAddon:UpdateTranslationSpeechFrameSettings()
end
)
Settings.CreateDropdown(optionsFrame, npcFontFamilyDropdown, GetFontOptions)
-- Add text font dropdown menu
local textFontFamilyDropdown = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY",
type(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY),
"Písmo textu",
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY = value
CzechQuestsAddon:UpdateTranslationSpeechFrameSettings()
end
)
Settings.CreateDropdown(optionsFrame, textFontFamilyDropdown, GetFontOptions)
-- Add slider for change primary header font size
local npcFontSizeSlider = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_SPEECH_FRAME_NPC_FONT_SIZE",
type(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_SIZE),
"Velikost jméma",
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_SIZE,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_SIZE
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_SIZE = value
CzechQuestsAddon:UpdateTranslationSpeechFrameSettings()
end
)
local npcFontSizeOption = Settings.CreateSliderOptions(8, 30, 1)
npcFontSizeOption:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
Settings.CreateSlider(optionsFrame, npcFontSizeSlider, npcFontSizeOption)
-- Add slider for change secondary header font size
local textFontSizeSlider = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE",
type(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE),
"Velikost textu",
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE = value
CzechQuestsAddon:UpdateTranslationSpeechFrameSettings()
end
)
local textFontSizeSliderOptions = Settings.CreateSliderOptions(8, 30, 1)
textFontSizeSliderOptions:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
Settings.CreateSlider(optionsFrame, textFontSizeSlider, textFontSizeSliderOptions)
-- Add slider for change secondary header font size
local windowWidthSizeSlider = Settings.RegisterProxySetting(
optionsFrame,
"CzechQuestsAddon__TRANSLATION_SPEECH_FRAME_WIDTH",
type(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH),
"Šírka zpráva",
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH,
function()
return CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH
end,
function(value)
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH = value
CzechQuestsAddon:UpdateTranslationSpeechFrameSettings()
end
)
local windowWidthSizeSliderOption = Settings.CreateSliderOptions(200, 800, 10)
windowWidthSizeSliderOption:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
Settings.CreateSlider(optionsFrame, windowWidthSizeSlider, windowWidthSizeSliderOption)
end

View file

@ -0,0 +1,194 @@
function CzechQuestsAddon:CreateTranslationQuestFrame()
local frame = {};
-- Quest Translation Frame
frame = CreateFrame("Frame", "CzechQuestTranslationQuestFrame", 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)
frame.primaryHeader = CzechQuestsAddon:CreateTranslationQuestFont(
frame,
"CzechQuestTranslationQuestPrimaryHeader",
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE
)
frame.secondaryHeader = CzechQuestsAddon:CreateTranslationQuestFont(
frame,
"CzechQuestTranslationQuestSecondaryHeader",
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE
)
frame.primaryText = CzechQuestsAddon:CreateTranslationQuestFont(
frame,
"CzechQuestTranslationQuestPrimaryText",
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE
)
frame.secondaryText = CzechQuestsAddon:CreateTranslationQuestFont(
frame,
"CzechQuestTranslationQuestSecondaryText",
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE
)
-- Apply correct texture for wow version
CzechQuestsAddon:SetTranslationQuestFrameTextureFromSettings(frame)
return frame;
end
function CzechQuestsAddon:CreateTranslationQuestFont(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:ResetTranslationQuestText(frame)
frame.primaryHeader:SetText("")
frame.secondaryHeader:SetText("")
frame.primaryText:SetText("")
frame.secondaryText:SetText("")
end
function CzechQuestsAddon:SetTranslationQuestFrameTextureFromSettings(frame)
if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then
-- setup default
frame.texture:SetTexture("Interface/QUESTFRAME/QuestBG");
frame.texture:SetTexCoord(0, .58, 0.005, 0.66)
frame.primaryHeader:SetTextColor(0, 0, 0, 1)
frame.secondaryHeader:SetTextColor(0, 0, 0, 1)
frame.primaryText:SetTextColor(0, 0, 0, 1)
frame.secondaryText:SetTextColor(0, 0, 0, 1)
if CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_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
-- setup default
frame.texture:SetTexture("Interface/QUESTFRAME/QuestBackgroundParchment");
frame.texture:SetTexCoord(0, .01, 0, 0.4)
frame.primaryHeader:SetTextColor(0, 0, 0, 1)
frame.secondaryHeader:SetTextColor(0, 0, 0, 1)
frame.primaryText:SetTextColor(0, 0, 0, 1)
frame.secondaryText:SetTextColor(0, 0, 0, 1)
-- Read CVar from settings to setup same parchment as Quest frame
if C_CVar.GetCVar("questTextContrast") == "1" then -- Brown
frame.texture:SetTexCoord(0, .01, .4, .8)
elseif C_CVar.GetCVar("questTextContrast") == "2"
or C_CVar.GetCVar("questTextContrast") == "3" then -- Gray
frame.texture:SetColorTexture(255, 255, 255, 1)
elseif C_CVar.GetCVar("questTextContrast") == "4" then -- Black
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
end
end
function CzechQuestsAddon:UpdateTranslationQuestFrameFontSettings()
CzechQuestsAddon.translationQuestFrame.primaryHeader:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_PRIMARY_HEADER_FONT_SIZE,
nil
)
CzechQuestsAddon.translationQuestFrame.secondaryHeader:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_HEADER_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_SECONDARY_HEADER_FONT_SIZE,
nil
)
CzechQuestsAddon.translationQuestFrame.primaryText:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE,
nil
)
CzechQuestsAddon.translationQuestFrame.secondaryText:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXT_FONT_SIZE,
nil
)
CzechQuestsAddon.translationQuestFrame.texture:SetAlpha(
CzechQuestsAddon_Store.config.TRANSLATION_QUEST_FRAME_TEXTURE_ALPHA / 100
)
end
function CzechQuestsAddon:ShowTranslationQuestFrame(primaryHeader, primaryText, secondaryHeader, secondaryText, parentFrame, yOffset, xOffset)
-- replace placeholders with current values
primaryText = CzechQuestsAddon:replacePlaceholders(primaryText);
secondaryText = CzechQuestsAddon:replacePlaceholders(secondaryText);
-- when user change own setting, does not require reload, just apply it
CzechQuestsAddon:SetTranslationQuestFrameTextureFromSettings(CzechQuestsAddon.translationQuestFrame)
-- reset all texts
CzechQuestsAddon:ResetTranslationQuestText(CzechQuestsAddon.translationQuestFrame)
-- set text to labels
CzechQuestsAddon.translationQuestFrame.primaryHeader:SetText(primaryHeader)
CzechQuestsAddon.translationQuestFrame.primaryText:SetText(primaryText)
CzechQuestsAddon.translationQuestFrame.secondaryHeader:SetText(secondaryHeader)
CzechQuestsAddon.translationQuestFrame.secondaryText:SetText(secondaryText)
local primaryTextTopMargin = -CzechQuestsAddon.translationQuestFrame.primaryHeader:GetHeight() - 15
local secondaryHeaderTopMargin = primaryTextTopMargin - CzechQuestsAddon.translationQuestFrame.primaryText:GetHeight() - 20
local secondaryTextTopMargin = secondaryHeaderTopMargin - CzechQuestsAddon.translationQuestFrame.secondaryHeader:GetHeight() - 5
-- apply gap between headers and texts
local gap = 10
local function addPadding(text, value)
if text ~= "" then
gap = gap + value
end
end
addPadding(primaryHeader, 10)
addPadding(primaryText, 5)
addPadding(secondaryHeader, 25)
addPadding(secondaryText, 5)
-- apply positions
CzechQuestsAddon.translationQuestFrame.primaryHeader:SetPoint("TOPLEFT", 10, -10)
CzechQuestsAddon.translationQuestFrame.primaryText:SetPoint("TOPLEFT", 10, primaryTextTopMargin)
CzechQuestsAddon.translationQuestFrame.secondaryHeader:SetPoint("TOPLEFT", 10, secondaryHeaderTopMargin)
CzechQuestsAddon.translationQuestFrame.secondaryText:SetPoint("TOPLEFT", 10, secondaryTextTopMargin)
-- apply changes per wow
if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then
CzechQuestsAddon.translationQuestFrame:SetPoint("TOPLEFT", parentFrame, "TOPRIGHT", -8 + xOffset, yOffset)
else
CzechQuestsAddon.translationQuestFrame:SetPoint("TOPLEFT", parentFrame, "TOPRIGHT", 8 + xOffset, yOffset)
end
-- calculate height
local height = 0;
local heights = {
CzechQuestsAddon.translationQuestFrame.primaryHeader:GetHeight(),
CzechQuestsAddon.translationQuestFrame.primaryText:GetHeight(),
CzechQuestsAddon.translationQuestFrame.secondaryHeader:GetHeight(),
CzechQuestsAddon.translationQuestFrame.secondaryText:GetHeight(),
gap,
10
}
for _, value in ipairs(heights) do
height = height + value
end
CzechQuestsAddon.translationQuestFrame:SetParent(parentFrame)
CzechQuestsAddon.translationQuestFrame:SetHeight(height < 200 and 200 or height)
end

View file

@ -0,0 +1,59 @@
function CzechQuestsAddon:CreateTranslationSpeechFrame()
local frame = {};
-- Speech Translation Frame
frame = CreateFrame("Frame", "CzechQuestsTranslationSpeechFrame", UIParant, "BackdropTemplate")
frame:SetSize(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH, 50)
frame:SetPoint("CENTER", UIParent, "CENTER")
-- Make draggable
frame:EnableMouse(true)
frame:SetMovable(true)
frame:RegisterForDrag("LeftButton")
frame:SetScript("OnDragStart", function(self) self:StartMoving() end)
frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
frame:Hide()
frame.npcName = frame:CreateFontString("CzechQuestsTranslationSpeechNpcName", "OVERLAY")
frame.npcName:SetTextColor(1, 1, 0)
frame.npcName:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_SIZE,
"OUTLINE"
)
frame.npcName:SetPoint("LEFT", frame, "LEFT", 0, 5)
frame.text = frame:CreateFontString("CzechQuestsTranslationSpeechText", "OVERLAY")
frame.text:SetTextColor(1, 1, 1)
frame.text:SetWordWrap(true)
frame.text:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE,
"OUTLINE"
)
frame.text:SetTextColor(1, 1, 1)
frame.text:SetWidth(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH)
frame.text:SetJustifyH("LEFT")
frame.text:SetJustifyV("TOP")
return frame;
end
function CzechQuestsAddon:UpdateTranslationSpeechFrameSettings()
-- Font
CzechQuestsAddon.translationSpeechFrame.npcName:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_NPC_FONT_SIZE,
"OUTLINE"
)
CzechQuestsAddon.translationSpeechFrame.text:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE,
"OUTLINE"
)
-- Width
CzechQuestsAddon.translationSpeechFrame.text:SetWidth(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH)
CzechQuestsAddon.translationSpeechFrame:SetWidth(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH)
end