Replace ScrollFrame with Messages queue and refactor speeches options

This commit is contained in:
Roman Jaroš 2025-03-07 17:11:59 +01:00
parent b6d64d65b5
commit b17f37ee42
5 changed files with 87 additions and 152 deletions

View file

@ -1,32 +1,21 @@
local _, addon = ...
local messages = {}
local GAP = 2
local function ReflowMessages()
local offsetY = 5
local offsetY = 0
for i = #messages, 1, -1 do
local Frame = messages[i]
Frame:ClearAllPoints()
Frame:SetPoint("BOTTOMLEFT", addon.SpeechFrame.ContentFrame, "BOTTOMLEFT", 5, offsetY)
Frame:SetPoint("BOTTOMLEFT", addon.SpeechFrame, "BOTTOMLEFT", 0, offsetY)
Frame:Show()
offsetY = offsetY + Frame:GetHeight()
offsetY = offsetY + Frame:GetHeight() + GAP
end
if #messages == 0 then
addon.SpeechFrame:Hide()
end
-- calculate Content height
-- cannot be smaller then SpeechFrame
offsetY = offsetY + 5
if offsetY < 150 then
offsetY = 150
end
addon.SpeechFrame.ContentFrame:SetHeight(offsetY)
-- Scroll down
--addon.SpeechFrame:UpdateScrollChildRect()
--local maxScroll = addon.SpeechFrame:GetVerticalScrollRange()
--addon.SpeechFrame:SetVerticalScroll(maxScroll)
end
local function RemoveMessage(frame)
@ -51,7 +40,7 @@ end
local function AddMessage(sender, message)
local text = string.format("|cffffd200%s|r\n%s", sender, message)
local MessageFrame = addon.SpeechFrame.ContentFrame:CreateMessage(text)
local MessageFrame = addon.SpeechFrame:CreateMessage(text)
-- put into table and rerender while queue
table.insert(messages, MessageFrame)
@ -68,10 +57,8 @@ local function ShowSpeechTranslation(sender, message)
if text == nil and CzechQuestsAddon_Store.config.SPEECH_ORIGINAL_WHEN_MISSING then
text = message
end
if text ~= nil then
addon.SpeechFrame:Show()
addon.SpeechFrame.ContentFrame:Show()
AddMessage(sender, text)
end
end