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.
97 lines
3.0 KiB
97 lines
3.0 KiB
-- Implement our own escape sequance
|
|
---- Device Button: [KEY:F1] [KEY:XBOX:PAD1]
|
|
---- Localized NPC Name: [NPC:12345:Fallback Name] (Unused)
|
|
|
|
local _, addon = ...
|
|
local L = addon.L;
|
|
|
|
local HOTKEY_PATH = "Interface/AddOns/DialogueUI/Art/Keys/";
|
|
|
|
local match = string.match;
|
|
local gsub = string.gsub;
|
|
|
|
local ProcessedString = {
|
|
|
|
};
|
|
|
|
local ReplaceStringWithKey;
|
|
do
|
|
local count = 0; --Limit the number of loops in case of localization error
|
|
|
|
local function ReplaceStringWithKey_Recursive(text, offsetY)
|
|
count = count + 1;
|
|
if count > 4 then
|
|
return text
|
|
end
|
|
|
|
local type, arg1, arg2 = match(text, "%[(%w+):(%w+):(%w+)%]");
|
|
|
|
if type and type == "KEY" and arg1 and arg2 then
|
|
local iconSize = 16;
|
|
local device, button;
|
|
local texture;
|
|
|
|
device = arg1;
|
|
button = arg2;
|
|
texture = ("|T%s%s-%s.png:%s:%s:0:%s|t"):format(HOTKEY_PATH, device, button, iconSize, iconSize, offsetY);
|
|
|
|
text = gsub(text, "%[[%w:]+%]", texture, 1);
|
|
return ReplaceStringWithKey_Recursive(text, offsetY);
|
|
else
|
|
return text
|
|
end
|
|
end
|
|
|
|
function ReplaceStringWithKey(text, offsetY)
|
|
count = 0;
|
|
offsetY = offsetY or 0;
|
|
return ReplaceStringWithKey_Recursive(text, offsetY)
|
|
end
|
|
end
|
|
|
|
local function GetFormattedLocale(lKey)
|
|
if not ProcessedString[lKey] then
|
|
ProcessedString[lKey] = ReplaceStringWithKey(L[lKey]);
|
|
end
|
|
return ProcessedString[lKey]
|
|
end
|
|
addon.GetFormattedLocale = GetFormattedLocale;
|
|
|
|
|
|
do
|
|
local function FormatLocales(lKey, iconOffsetY)
|
|
if L[lKey] then
|
|
local text = ReplaceStringWithKey(L[lKey], iconOffsetY);
|
|
if text then
|
|
L[lKey] = text;
|
|
end
|
|
else
|
|
addon.API.PrintMessage("Missing String:", lKey);
|
|
end
|
|
end
|
|
|
|
local SETTINGS_DESC_SPACING = -4;
|
|
local BANNER_TEXT_SPACING = -6;
|
|
|
|
local LOCALE_KEYS = {
|
|
--See enUS.lua
|
|
--[key] = iconOffsetY (compensated for fontString Spacing)
|
|
|
|
["Input Device Xbox Tooltip"] = SETTINGS_DESC_SPACING,
|
|
["Input Device PlayStation Tooltip"] = SETTINGS_DESC_SPACING,
|
|
["Input Device Switch Tooltip"] = SETTINGS_DESC_SPACING,
|
|
["Interact Key Not Set"] = SETTINGS_DESC_SPACING,
|
|
["Use Default Control Key Alert"] = SETTINGS_DESC_SPACING,
|
|
["TTS Use Hotkey Tooltip PC"] = SETTINGS_DESC_SPACING,
|
|
["TTS Use Hotkey Tooltip Xbox"] = SETTINGS_DESC_SPACING,
|
|
["TTS Use Hotkey Tooltip PlayStation"] = SETTINGS_DESC_SPACING,
|
|
["TTS Use Hotkey Tooltip Switch"] = SETTINGS_DESC_SPACING,
|
|
|
|
["Tutorial Settings Hotkey"] = BANNER_TEXT_SPACING,
|
|
["Tutorial Settings Hotkey Console"] = BANNER_TEXT_SPACING,
|
|
};
|
|
|
|
for lkey, iconOffsetY in pairs(LOCALE_KEYS) do
|
|
FormatLocales(lkey, iconOffsetY);
|
|
end
|
|
end
|