Update downloader to get speeches from tolgee

This commit is contained in:
Roman Jaroš 2025-03-02 13:25:40 +01:00
parent 5f21775771
commit e37886072f
6 changed files with 139 additions and 31 deletions

View file

@ -23,7 +23,7 @@ local function GetQuestLogQuestIndex(questID)
return nil
end
local function ReplacePlaceholders(text)
local function ApplyQuestPlaceholders(text)
if text == nil then
return text
end
@ -75,16 +75,16 @@ local function ReplacePlaceholders(text)
return formatted
end
local function TransformText(text)
return ReplacePlaceholders(text)
local function TransformQuestText(text)
return ApplyQuestPlaceholders(text)
end
local function ResolveGender(maleVersion, femaleVersion)
local gender = UnitSex("player")
if gender == 2 then
return TransformText(maleVersion)
return TransformQuestText(maleVersion)
else
return femaleVersion == nil and TransformText(maleVersion) or TransformText(femaleVersion)
return femaleVersion == nil and TransformQuestText(maleVersion) or TransformQuestText(femaleVersion)
end
end
@ -114,10 +114,33 @@ local function GetQuest(id)
end
end
local function ApplySpeechPlaceholders(text)
if text == nil then
return text
end
local playerName = UnitName("player")
local formatted = text;
formatted = string.gsub(formatted, '<name>', playerName);
formatted = string.gsub(formatted, 'Champions', playerName);
return formatted
end
local function GetSpeech(message)
local speech = CzechQuestsAddon.data.speech[message];
local text = speech and speech.text or nil
return ApplySpeechPlaceholders(text)
end
function CzechQuestsAddon:GetData(key, id)
if CzechQuestsAddon.data[key] then
if key == "quest" then
return GetQuest(id)
elseif key == "speech" then
return GetSpeech(id)
elseif CzechQuestsAddon.data[key][id] then
return CzechQuestsAddon.data[key][id]
end

View file

@ -14,13 +14,20 @@ local function ReflowMessages()
offsetY = offsetY + msg:GetHeight()
end
if #messages == 0 then
CzechQuestsAddon.translationSpeechFrame:Hide()
end
CzechQuestsAddon.translationSpeechFrame.content:SetHeight(offsetY + 5)
CzechQuestsAddon.translationSpeechFrame:UpdateScrollChildRect() -- Ujistí se, že velikost obsahu je aktuální
local maxScroll = CzechQuestsAddon.translationSpeechFrame:GetVerticalScrollRange()
CzechQuestsAddon.translationSpeechFrame:SetVerticalScroll(maxScroll) -- Nastaví rolování na dolní okraj
end
local function RemoveMessage(frame)
local emptyMessages = true
for i, fs in ipairs(messages) do
emptyMessages = false
if fs == frame then
local fadeAnimationGroup = fs:CreateAnimationGroup()
local fadeOut = fadeAnimationGroup:CreateAnimation("Alpha")
@ -41,10 +48,6 @@ local function RemoveMessage(frame)
break
end
end
if emptyMessages then
CzechQuestsAddon.translationSpeechFrame:Hide()
end
end
local function AddMessage(sender, message)
@ -56,12 +59,14 @@ local function AddMessage(sender, message)
table.insert(messages, frame)
ReflowMessages()
C_Timer.After(30, function()
C_Timer.After(20, function()
RemoveMessage(frame)
end)
end
function CzechQuestsAddon:ShowSpeechTranslation(sender, message)
local text = CzechQuestsAddon:GetData("speech", message) or message
AddMessage(sender, text)
local text = CzechQuestsAddon:GetData("speech", message)
if text ~= nil then
AddMessage(sender, text)
end
end