Minor refactor + add new zones
This commit is contained in:
parent
05eb54cbbb
commit
ebf2e11502
13 changed files with 2485 additions and 716 deletions
208
CzechQuests.lua
208
CzechQuests.lua
|
@ -1,14 +1,18 @@
|
|||
local lastQuestFrameEvent = nil
|
||||
local addonName, addonDataTable = ...
|
||||
|
||||
local function GetQuestInfo(maleVersion, femaleVersion)
|
||||
local function ResolveFemaleVersion(maleVersion, femaleVersion)
|
||||
local gender = UnitSex("player")
|
||||
|
||||
if gender == 2 then
|
||||
return maleVersion
|
||||
end
|
||||
end
|
||||
if gender == 3 then
|
||||
return femaleVersion
|
||||
if (femaleVersion == "") then
|
||||
return maleVersion
|
||||
else
|
||||
return femaleVersion
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -18,11 +22,11 @@ local function GetDataByKey(dataType, dataId)
|
|||
if addonDataTable[dataType][dataId] then
|
||||
local quest = addonDataTable[dataType][dataId];
|
||||
local standardQuest = {
|
||||
title = GetQuestInfo(quest.titleMale, quest.titleFemale),
|
||||
objective = GetQuestInfo(quest.objectiveMale, quest.objectiveFemale),
|
||||
description = GetQuestInfo(quest.descriptionMale, quest.descriptionFemale),
|
||||
progress = GetQuestInfo(quest.progressMale, quest.progressFemale),
|
||||
completion = GetQuestInfo(quest.completionMale, quest.completionFemale),
|
||||
title = ResolveFemaleVersion(quest.titleMale, quest.titleFemale),
|
||||
objective = ResolveFemaleVersion(quest.objectiveMale, quest.objectiveFemale),
|
||||
description = ResolveFemaleVersion(quest.descriptionMale, quest.descriptionFemale),
|
||||
progress = ResolveFemaleVersion(quest.progressMale, quest.progressFemale),
|
||||
completion = ResolveFemaleVersion(quest.completionMale, quest.completionFemale),
|
||||
}
|
||||
return standardQuest
|
||||
end
|
||||
|
@ -36,7 +40,9 @@ local function GetDataByKey(dataType, dataId)
|
|||
end
|
||||
|
||||
local function replacePlaceholders(text)
|
||||
if text == nil then return text end
|
||||
if text == nil then
|
||||
return text
|
||||
end
|
||||
|
||||
local playerName = UnitName("player")
|
||||
local _, playerClass = UnitClass("player")
|
||||
|
@ -77,22 +83,22 @@ local function replacePlaceholders(text)
|
|||
return formatted
|
||||
end
|
||||
|
||||
local function SetQuestDetails(questId, headerText, objectiveText, descriptionHeader, descriptionText, parentFrame, yOffset)
|
||||
local function ShowTranslatedQuestFrame(questId, headerText, objectiveText, descriptionHeader, descriptionText, parentFrame, yOffset)
|
||||
objectiveText = replacePlaceholders(objectiveText);
|
||||
descriptionText = replacePlaceholders(descriptionText);
|
||||
|
||||
if CzechQuestsOptions["DEBUG_MODE"] then
|
||||
headerText = headerText .. " (" .. questId ..")"
|
||||
headerText = headerText .. " (" .. questId .. ")"
|
||||
end
|
||||
|
||||
QuestTranslationFramePrimaryHeader:SetText(headerText:upper())
|
||||
QuestTranslationFramePrimaryText:SetText(objectiveText)
|
||||
QuestTranslationFrameSecondaryHeader:SetText(descriptionHeader:upper())
|
||||
QuestTranslationFrameSecondaryText:SetText(descriptionText)
|
||||
TranslationInfoFramePrimaryHeader:SetText(headerText:upper())
|
||||
TranslationInfoFramePrimaryText:SetText(objectiveText)
|
||||
TranslationInfoFrameSecondaryHeader:SetText(descriptionHeader:upper())
|
||||
TranslationInfoFrameSecondaryText:SetText(descriptionText)
|
||||
|
||||
textTopMargin = -QuestTranslationFramePrimaryHeader:GetHeight() - 15
|
||||
descriptionHeaderTopMargin = textTopMargin - QuestTranslationFramePrimaryText:GetHeight() - 10
|
||||
descriptionTextTopMargin = descriptionHeaderTopMargin - QuestTranslationFrameSecondaryHeader:GetHeight() - 5
|
||||
textTopMargin = -TranslationInfoFramePrimaryHeader:GetHeight() - 15
|
||||
descriptionHeaderTopMargin = textTopMargin - TranslationInfoFramePrimaryText:GetHeight() - 20
|
||||
descriptionTextTopMargin = descriptionHeaderTopMargin - TranslationInfoFrameSecondaryHeader:GetHeight() - 5
|
||||
|
||||
local heightPadding = 10
|
||||
|
||||
|
@ -104,27 +110,41 @@ local function SetQuestDetails(questId, headerText, objectiveText, descriptionHe
|
|||
|
||||
addPadding(headerText, 10)
|
||||
addPadding(objectiveText, 5)
|
||||
addPadding(descriptionHeader, 20)
|
||||
addPadding(descriptionHeader, 25)
|
||||
addPadding(descriptionText, 5)
|
||||
|
||||
QuestTranslationFramePrimaryHeader:SetPoint("TOPLEFT", 10, -10)
|
||||
QuestTranslationFramePrimaryText:SetPoint("TOPLEFT", 10, textTopMargin)
|
||||
QuestTranslationFrameSecondaryHeader:SetPoint("TOPLEFT", 10, descriptionHeaderTopMargin)
|
||||
QuestTranslationFrameSecondaryText:SetPoint("TOPLEFT", 10, descriptionTextTopMargin)
|
||||
QuestTranslationFrame:SetPoint("TOPLEFT", parentFrame, "TOPRIGHT", -15, yOffset)
|
||||
TranslationInfoFramePrimaryHeader:SetPoint("TOPLEFT", 10, -10)
|
||||
TranslationInfoFramePrimaryText:SetPoint("TOPLEFT", 10, textTopMargin)
|
||||
TranslationInfoFrameSecondaryHeader:SetPoint("TOPLEFT", 10, descriptionHeaderTopMargin)
|
||||
TranslationInfoFrameSecondaryText:SetPoint("TOPLEFT", 10, descriptionTextTopMargin)
|
||||
TranslationInfoFrame:SetPoint("TOPLEFT", parentFrame, "TOPRIGHT", -15, yOffset)
|
||||
|
||||
QuestTranslationFrame:SetParent(parentFrame)
|
||||
QuestTranslationFrame:SetHeight(
|
||||
QuestTranslationFramePrimaryHeader:GetHeight() +
|
||||
QuestTranslationFramePrimaryText:GetHeight() +
|
||||
QuestTranslationFrameSecondaryHeader:GetHeight() +
|
||||
QuestTranslationFrameSecondaryText:GetHeight() +
|
||||
TranslationInfoFrame:SetParent(parentFrame)
|
||||
TranslationInfoFrame:SetHeight(
|
||||
TranslationInfoFramePrimaryHeader:GetHeight() +
|
||||
TranslationInfoFramePrimaryText:GetHeight() +
|
||||
TranslationInfoFrameSecondaryHeader:GetHeight() +
|
||||
TranslationInfoFrameSecondaryText:GetHeight() +
|
||||
heightPadding
|
||||
)
|
||||
end
|
||||
|
||||
local function UpdateQuestTranslationFrame()
|
||||
local selectedQuestIndex, questId, questData
|
||||
local function ShowTranslatedQuestItemFrame(itemText, parentFrame, yOffset)
|
||||
itemText = replacePlaceholders(itemText);
|
||||
TranslationInfoFramePrimaryText:SetText(itemText)
|
||||
|
||||
TranslationInfoFramePrimaryText:SetPoint("TOPLEFT", 10, 5)
|
||||
TranslationInfoFrame:SetPoint("TOPLEFT", parentFrame, "TOPRIGHT", -15, yOffset)
|
||||
|
||||
TranslationInfoFrame:SetParent(parentFrame)
|
||||
TranslationInfoFrame:SetHeight(TranslationInfoFramePrimaryText:GetHeight() + 30)
|
||||
|
||||
TranslationInfoFramePrimaryText:SetPoint("TOPLEFT", 10, -10)
|
||||
TranslationInfoFrame:SetPoint("TOPLEFT", parentFrame, "TOPRIGHT", -15, yOffset)
|
||||
end
|
||||
|
||||
local function UpdateTranslationInfoFrame(frameEvent)
|
||||
local selectedQuestIndex, questId, questData, itemName
|
||||
|
||||
if QuestLogFrame:IsShown() then
|
||||
selectedQuestIndex = GetQuestLogSelection()
|
||||
|
@ -134,18 +154,18 @@ local function UpdateQuestTranslationFrame()
|
|||
questData = GetDataByKey("questData", questId)
|
||||
|
||||
if questData then
|
||||
QuestTranslationFrame:Show()
|
||||
SetQuestDetails(
|
||||
questId,
|
||||
questData.title,
|
||||
questData.objective,
|
||||
addonDataTable.translations["description"],
|
||||
questData.description,
|
||||
QuestLogFrame,
|
||||
-80
|
||||
TranslationInfoFrame:Show()
|
||||
ShowTranslatedQuestFrame(
|
||||
questId,
|
||||
questData.title,
|
||||
questData.objective,
|
||||
addonDataTable.translations["description"],
|
||||
questData.description,
|
||||
QuestLogFrame,
|
||||
-80
|
||||
)
|
||||
else
|
||||
QuestTranslationFrame:Hide()
|
||||
TranslationInfoFrame:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -156,10 +176,10 @@ local function UpdateQuestTranslationFrame()
|
|||
if questId then
|
||||
questData = GetDataByKey("questData", questId)
|
||||
if questData then
|
||||
QuestTranslationFrame:Show()
|
||||
TranslationInfoFrame:Show()
|
||||
|
||||
if lastQuestFrameEvent == "QUEST_PROGRESS" then
|
||||
SetQuestDetails(
|
||||
if frameEvent == "QUEST_PROGRESS" then
|
||||
ShowTranslatedQuestFrame(
|
||||
questId,
|
||||
questData.title,
|
||||
questData.progress,
|
||||
|
@ -168,8 +188,12 @@ local function UpdateQuestTranslationFrame()
|
|||
QuestFrame,
|
||||
-80
|
||||
)
|
||||
elseif lastQuestFrameEvent == "QUEST_COMPLETE" then
|
||||
SetQuestDetails(
|
||||
elseif frameEvent == "QUEST_COMPLETE" then
|
||||
if CzechQuestsOptions["DEBUG_MODE"] then
|
||||
QuestDoneFrame:Show()
|
||||
QuestDoneFrame.text:SetText("Quest #" .. questId .. " is DONE!")
|
||||
end
|
||||
ShowTranslatedQuestFrame(
|
||||
questId,
|
||||
questData.title,
|
||||
questData.completion,
|
||||
|
@ -178,8 +202,8 @@ local function UpdateQuestTranslationFrame()
|
|||
QuestFrame,
|
||||
-80
|
||||
)
|
||||
elseif lastQuestFrameEvent == "QUEST_DETAIL" then
|
||||
SetQuestDetails(
|
||||
elseif frameEvent == "QUEST_DETAIL" then
|
||||
ShowTranslatedQuestFrame(
|
||||
questId,
|
||||
questData.title,
|
||||
questData.description,
|
||||
|
@ -188,52 +212,54 @@ local function UpdateQuestTranslationFrame()
|
|||
QuestFrame,
|
||||
-80
|
||||
)
|
||||
elseif lastQuestFrameEvent == "QUEST_FINISHED" then
|
||||
QuestTranslationFrame:Hide()
|
||||
elseif frameEvent == "QUEST_FINISHED" then
|
||||
TranslationInfoFrame:Hide()
|
||||
end
|
||||
else
|
||||
QuestTranslationFrame:Hide()
|
||||
TranslationInfoFrame:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if ItemTextFrame:IsShown() then
|
||||
itemName = ItemTextGetItem();
|
||||
local itemText = GetDataByKey("questItems", itemName)
|
||||
|
||||
TranslationInfoFrame:Show()
|
||||
ShowTranslatedQuestItemFrame(itemText, ItemTextFrame, -80)
|
||||
end
|
||||
end
|
||||
|
||||
TranslationInfoFrame:SetScript("OnEvent", function(self, event, ...)
|
||||
if event == "QUEST_PROGRESS" or event == "QUEST_COMPLETE" or event == "QUEST_FINISHED" or event == "QUEST_DETAIL" then
|
||||
UpdateTranslationInfoFrame(event)
|
||||
end
|
||||
|
||||
if (event == "ITEM_TEXT_READY") then
|
||||
UpdateTranslationInfoFrame(event)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Hover is enabled only for QuestLogFrame because i do know event for change quest from list
|
||||
local function SetHoverScripts(frame, children)
|
||||
local frameName = frame:GetName()
|
||||
|
||||
if not string.find(frameName, "QuestLogItem") and not string.find(frameName, "QuestProgressItem") then
|
||||
frame:SetScript("OnEnter", function()
|
||||
UpdateTranslationInfoFrame()
|
||||
end)
|
||||
|
||||
frame:SetScript("OnLeave", function()
|
||||
TranslationInfoFrame:Hide()
|
||||
end)
|
||||
|
||||
if children then
|
||||
for i = 1, frame:GetNumChildren() do
|
||||
local child = select(i, frame:GetChildren())
|
||||
SetHoverScripts(child, true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function SetQuestHoverScripts(frame, children)
|
||||
--local frameName = frame:GetName()
|
||||
|
||||
--if frameName ~= "QuestLogListScrollFrame" and not string.find(frameName, "QuestLogItem") and not string.find(frameName, "QuestProgressItem") then
|
||||
-- frame:SetScript("OnEnter", function()
|
||||
UpdateQuestTranslationFrame()
|
||||
--end)
|
||||
|
||||
--frame:SetScript("OnLeave", function()
|
||||
-- QuestTranslationFrame:Hide()
|
||||
--end)
|
||||
|
||||
--if children then
|
||||
-- for i = 1, frame:GetNumChildren() do
|
||||
-- local child = select(i, frame:GetChildren())
|
||||
-- SetQuestHoverScripts(child, true)
|
||||
-- end
|
||||
--end
|
||||
--end
|
||||
end
|
||||
|
||||
QuestTranslationFrame:SetScript("OnEvent", function(self, event, ...)
|
||||
if event == "QUEST_PROGRESS" or event == "QUEST_COMPLETE" or event == "QUEST_FINISHED" or event == "QUEST_DETAIL" then
|
||||
lastQuestFrameEvent = event
|
||||
UpdateQuestTranslationFrame()
|
||||
end
|
||||
end)
|
||||
|
||||
SetQuestHoverScripts(QuestLogFrame, true)
|
||||
SetQuestHoverScripts(QuestFrame, false)
|
||||
|
||||
SetQuestHoverScripts(QuestProgressScrollFrame, true)
|
||||
SetQuestHoverScripts(QuestDetailScrollFrame, true)
|
||||
SetQuestHoverScripts(QuestRewardScrollFrame, true)
|
||||
|
||||
SetQuestHoverScripts(QuestFrameCompleteButton, true)
|
||||
SetQuestHoverScripts(QuestFrameCompleteQuestButton, true)
|
||||
SetQuestHoverScripts(QuestFrameGoodbyeButton, true)
|
||||
SetQuestHoverScripts(QuestFrameCancelButton, true)
|
||||
SetHoverScripts(QuestLogFrame, false)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue