Refactor whole addon to follow best practices
This commit is contained in:
parent
43fc252902
commit
414aef6924
31 changed files with 7843 additions and 29579 deletions
|
@ -1,149 +1,23 @@
|
|||
local QuestTextMethod = {
|
||||
Description = GetQuestText,
|
||||
Objective = GetObjectiveText,
|
||||
};
|
||||
|
||||
local function GetQuestText(method)
|
||||
local text = QuestTextMethod[method]();
|
||||
if text then
|
||||
return text
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end
|
||||
|
||||
local function GetQuestLogQuestIndex(questID)
|
||||
local numEntries = C_QuestLog.GetNumQuestLogEntries()
|
||||
for questLogIndex = 1, numEntries do
|
||||
local info = C_QuestLog.GetInfo(questLogIndex)
|
||||
if info and info.questID == questID then
|
||||
return questLogIndex
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
local function ApplyQuestPlaceholders(text)
|
||||
if text == nil then
|
||||
return text
|
||||
end
|
||||
|
||||
local playerName = UnitName("player")
|
||||
local _, playerClass = UnitClass("player")
|
||||
local _, playerRace = UnitRace("player")
|
||||
|
||||
local class = CzechQuestsAddon:GetData("class", playerClass);
|
||||
local race = CzechQuestsAddon:GetData("race", playerRace);
|
||||
|
||||
local formatted = text;
|
||||
formatted = string.gsub(formatted, '<name>', playerName);
|
||||
|
||||
formatted = string.gsub(formatted, '<cF0>', class.f0);
|
||||
formatted = string.gsub(formatted, '<cF1>', class.f1);
|
||||
formatted = string.gsub(formatted, '<cF2>', class.f2);
|
||||
formatted = string.gsub(formatted, '<cF3>', class.f3);
|
||||
formatted = string.gsub(formatted, '<cF4>', class.f4);
|
||||
formatted = string.gsub(formatted, '<cF5>', class.f5);
|
||||
|
||||
formatted = string.gsub(formatted, '<cM0>', class.m0);
|
||||
formatted = string.gsub(formatted, '<cM1>', class.m1);
|
||||
formatted = string.gsub(formatted, '<cM2>', class.m2);
|
||||
formatted = string.gsub(formatted, '<cM3>', class.m3);
|
||||
formatted = string.gsub(formatted, '<cM4>', class.m4);
|
||||
|
||||
formatted = string.gsub(formatted, '<cP0>', class.p0);
|
||||
formatted = string.gsub(formatted, '<cP1>', class.p1);
|
||||
formatted = string.gsub(formatted, '<cP3>', class.m3);
|
||||
|
||||
formatted = string.gsub(formatted, '<rF0>', race.f0);
|
||||
formatted = string.gsub(formatted, '<rF1>', race.f1);
|
||||
formatted = string.gsub(formatted, '<rF2>', race.f2);
|
||||
formatted = string.gsub(formatted, '<rF3>', race.f3);
|
||||
formatted = string.gsub(formatted, '<rF4>', race.f4);
|
||||
formatted = string.gsub(formatted, '<rF5>', race.f5);
|
||||
|
||||
formatted = string.gsub(formatted, '<rM0>', race.m0);
|
||||
formatted = string.gsub(formatted, '<rM1>', race.m1);
|
||||
formatted = string.gsub(formatted, '<rM2>', race.m2);
|
||||
formatted = string.gsub(formatted, '<rM3>', race.m3);
|
||||
formatted = string.gsub(formatted, '<rM4>', race.m4);
|
||||
|
||||
formatted = string.gsub(formatted, '<rP0>', race.p0);
|
||||
formatted = string.gsub(formatted, '<rP1>', race.p1);
|
||||
formatted = string.gsub(formatted, '<rP3>', race.p3);
|
||||
|
||||
return formatted
|
||||
end
|
||||
|
||||
local function TransformQuestText(text)
|
||||
return ApplyQuestPlaceholders(text)
|
||||
end
|
||||
local _, addon = ...
|
||||
|
||||
local function ResolveGender(maleVersion, femaleVersion)
|
||||
local gender = UnitSex("player")
|
||||
if gender == 2 then
|
||||
return TransformQuestText(maleVersion)
|
||||
return maleVersion
|
||||
else
|
||||
return femaleVersion == nil and TransformQuestText(maleVersion) or TransformQuestText(femaleVersion)
|
||||
return femaleVersion == nil and maleVersion or femaleVersion
|
||||
end
|
||||
end
|
||||
|
||||
local function GetQuest(id)
|
||||
local quest = CzechQuestsAddon.data.quest[id];
|
||||
if quest then
|
||||
local description = ""
|
||||
local objective = ""
|
||||
if QuestMapDetailsScrollFrame and QuestMapDetailsScrollFrame:IsVisible() then
|
||||
local index = GetQuestLogQuestIndex(id)
|
||||
description, objective = GetQuestLogQuestText(index)
|
||||
else
|
||||
description = GetQuestText("Description")
|
||||
objective = GetQuestText("Objective")
|
||||
end
|
||||
return {
|
||||
title = ResolveGender(quest.titleMale, quest.titleFemale),
|
||||
objective = CzechQuestsAddon:TransformIntoParagraphs(
|
||||
objective, ResolveGender(quest.objectiveMale, quest.objectiveFemale)
|
||||
),
|
||||
description = CzechQuestsAddon:TransformIntoParagraphs(
|
||||
description, ResolveGender(quest.descriptionMale, quest.descriptionFemale)
|
||||
),
|
||||
progress = ResolveGender(quest.progressMale, quest.progressFemale),
|
||||
completion = ResolveGender(quest.completionMale, quest.completionFemale),
|
||||
}
|
||||
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);
|
||||
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
|
||||
addon.API.ResolveGender = ResolveGender
|
||||
|
||||
function CzechQuestsAddon:GetData(key, id)
|
||||
if CzechQuestsAddon.data[key] then
|
||||
if addon.data[key] then
|
||||
if key == "quest" then
|
||||
return GetQuest(id)
|
||||
return addon.API.GetQuest(id)
|
||||
elseif key == "speech" then
|
||||
return GetSpeech(id)
|
||||
elseif CzechQuestsAddon.data[key][id] then
|
||||
return CzechQuestsAddon.data[key][id]
|
||||
return addon.API.GetSpeech(id)
|
||||
elseif addon.data[key][id] then
|
||||
return addon.data[key][id]
|
||||
end
|
||||
end
|
||||
return nil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue