Enhance speech frame behavior and settings

This commit is contained in:
Roman Jaroš 2025-03-04 07:49:19 +01:00
parent e37886072f
commit 8b53a5247c
12 changed files with 65 additions and 43 deletions

View file

@ -125,6 +125,7 @@ local function ApplySpeechPlaceholders(text)
local formatted = text;
formatted = string.gsub(formatted, '<name>', playerName);
formatted = string.gsub(formatted, 'Champions', playerName);
formatted = string.gsub(formatted, 'champions', playerName);
return formatted
end

View file

@ -8,7 +8,7 @@ end
local function SplitSentences(paragraph)
local sentences = {}
for sentence in string.gmatch(paragraph, "([^%.%?!]+[%.%?!]?)[%s]*") do
for sentence in string.gmatch(paragraph, "([^,%.%?!]+[,%.%?!]?)[%s]*") do
local trimmed = sentence:gsub("^%s+", ""):gsub("%s+$", "")
if #trimmed > 0 then
table.insert(sentences, trimmed)

View file

@ -1,28 +1,35 @@
local messages = {}
local function ReflowMessages()
local offsetY = 5
for i = #messages, 1, -1 do
local msg = messages[i]
msg:ClearAllPoints()
msg:SetPoint(
local fs = messages[i]
fs:ClearAllPoints()
fs:SetPoint(
"BOTTOMLEFT",
CzechQuestsAddon.translationSpeechFrame.content,
"BOTTOMLEFT",
10,
5,
offsetY
)
offsetY = offsetY + msg:GetHeight()
fs:Show()
offsetY = offsetY + fs:GetHeight()
end
if #messages == 0 then
CzechQuestsAddon.translationSpeechFrame:Hide()
end
CzechQuestsAddon.translationSpeechFrame.content:SetHeight(offsetY + 5)
offsetY = offsetY + 5
if offsetY < 150 then
offsetY = 150
end
CzechQuestsAddon.translationSpeechFrame:UpdateScrollChildRect() -- Ujistí se, že velikost obsahu je aktuální
CzechQuestsAddon.translationSpeechFrame.content:SetHeight(offsetY)
CzechQuestsAddon.translationSpeechFrame:UpdateScrollChildRect()
local maxScroll = CzechQuestsAddon.translationSpeechFrame:GetVerticalScrollRange()
CzechQuestsAddon.translationSpeechFrame:SetVerticalScroll(maxScroll) -- Nastaví rolování na dolní okraj
CzechQuestsAddon.translationSpeechFrame:SetVerticalScroll(maxScroll)
end
@ -33,7 +40,7 @@ local function RemoveMessage(frame)
local fadeOut = fadeAnimationGroup:CreateAnimation("Alpha")
fadeOut:SetFromAlpha(1)
fadeOut:SetToAlpha(0)
fadeOut:SetDuration(0.2)
fadeOut:SetDuration(1)
fadeOut:SetStartDelay(0)
fadeAnimationGroup:SetScript("OnFinished", function()
@ -42,7 +49,6 @@ local function RemoveMessage(frame)
ReflowMessages()
end)
fs:Show()
fadeAnimationGroup:Play()
break
@ -54,8 +60,6 @@ local function AddMessage(sender, message)
local formattedText = string.format("|cffffd200%s|r\n%s", sender, message)
local frame = CzechQuestsAddon:CreateTranslationSpeechFrameMessage(formattedText)
CzechQuestsAddon.translationSpeechFrame:Show()
table.insert(messages, frame)
ReflowMessages()
@ -66,7 +70,12 @@ end
function CzechQuestsAddon:ShowSpeechTranslation(sender, message)
local text = CzechQuestsAddon:GetData("speech", message)
if text == nil and CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_ORIGINAL_WHEN_MISSING then
text = message
end
if text ~= nil then
CzechQuestsAddon.translationSpeechFrame:Show()
AddMessage(sender, text)
end
end