You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.0 KiB
122 lines
3.0 KiB
---@class DBMCoreNamespace
|
|
local private = select(2, ...)
|
|
|
|
local L = DBM_CORE_L
|
|
|
|
---@class DBM
|
|
local DBM = private:GetPrototype("DBM")
|
|
|
|
local returnKey = {
|
|
__index = function(_, k)
|
|
return k
|
|
end
|
|
}
|
|
|
|
local defaultCatLocalization = {
|
|
__index = setmetatable({
|
|
timer = L.OPTION_CATEGORY_TIMERS,
|
|
announce = L.OPTION_CATEGORY_WARNINGS,
|
|
announceother = L.OPTION_CATEGORY_WARNINGS_OTHER,
|
|
announcepersonal = L.OPTION_CATEGORY_WARNINGS_YOU,
|
|
announcerole = L.OPTION_CATEGORY_WARNINGS_ROLE,
|
|
specialannounce = L.OPTION_CATEGORY_SPECWARNINGS,
|
|
sound = L.OPTION_CATEGORY_SOUNDS,
|
|
yell = L.OPTION_CATEGORY_YELLS,
|
|
icon = L.OPTION_CATEGORY_ICONS,
|
|
paura = L.OPTION_CATEGORY_PAURAS,
|
|
nameplate = L.OPTION_CATEGORY_NAMEPLATES,
|
|
misc = MISCELLANEOUS
|
|
}, returnKey)
|
|
}
|
|
|
|
local defaultTimerLocalization = {
|
|
__index = setmetatable({
|
|
timer_berserk = L.GENERIC_TIMER_BERSERK,
|
|
timer_combat = L.AUTO_TIMER_TEXTS.combat
|
|
}, returnKey)
|
|
}
|
|
|
|
local defaultAnnounceLocalization = {
|
|
__index = setmetatable({
|
|
}, returnKey)
|
|
}
|
|
|
|
local defaultOptionLocalization = {
|
|
__index = setmetatable({
|
|
timer_berserk = L.OPTION_TIMER_BERSERK,
|
|
timer_combat = L.AUTO_TIMER_OPTIONS.combat,
|
|
}, returnKey)
|
|
}
|
|
|
|
local defaultMiscLocalization = {
|
|
__index = {}
|
|
}
|
|
|
|
---@class ModLocalization
|
|
---@field general table<string, string>
|
|
---@field warnings table<string, string>
|
|
---@field timers table<string, string>
|
|
---@field options table<string, string>
|
|
---@field cats table<string, string>
|
|
---@field miscStrings table<string, string>
|
|
local modLocalizationPrototype = private:GetPrototype("ModLocalization")
|
|
|
|
local mt = {__index = modLocalizationPrototype}
|
|
|
|
function modLocalizationPrototype:SetGeneralLocalization(t)
|
|
for i, v in pairs(t) do
|
|
self.general[i] = v
|
|
end
|
|
end
|
|
|
|
function modLocalizationPrototype:SetWarningLocalization(t)
|
|
for i, v in pairs(t) do
|
|
self.warnings[i] = v
|
|
end
|
|
end
|
|
|
|
function modLocalizationPrototype:SetTimerLocalization(t)
|
|
for i, v in pairs(t) do
|
|
self.timers[i] = v
|
|
end
|
|
end
|
|
|
|
function modLocalizationPrototype:SetOptionLocalization(t)
|
|
for i, v in pairs(t) do
|
|
self.options[i] = v
|
|
end
|
|
end
|
|
|
|
function modLocalizationPrototype:SetOptionCatLocalization(t)
|
|
for i, v in pairs(t) do
|
|
self.cats[i] = v
|
|
end
|
|
end
|
|
|
|
function modLocalizationPrototype:SetMiscLocalization(t)
|
|
for i, v in pairs(t) do
|
|
self.miscStrings[i] = v
|
|
end
|
|
end
|
|
|
|
local modLocalizations = {}
|
|
|
|
function DBM:CreateModLocalization(name)
|
|
name = tostring(name)
|
|
local obj = {
|
|
general = setmetatable({}, returnKey),
|
|
warnings = setmetatable({}, defaultAnnounceLocalization),
|
|
options = setmetatable({}, defaultOptionLocalization),
|
|
timers = setmetatable({}, defaultTimerLocalization),
|
|
miscStrings = setmetatable({}, defaultMiscLocalization),
|
|
cats = setmetatable({}, defaultCatLocalization),
|
|
}
|
|
setmetatable(obj, mt)
|
|
modLocalizations[name] = obj
|
|
return obj
|
|
end
|
|
|
|
function DBM:GetModLocalization(name)
|
|
name = tostring(name)
|
|
return modLocalizations[name] or self:CreateModLocalization(name)
|
|
end
|
|
|