Enhance speech frame behavior and settings
This commit is contained in:
parent
e37886072f
commit
8b53a5247c
12 changed files with 65 additions and 43 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue