Update downloader to get speeches from tolgee
This commit is contained in:
parent
5f21775771
commit
e37886072f
6 changed files with 139 additions and 31 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue