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.
500 lines
15 KiB
500 lines
15 KiB
|
3 years ago
|
---------------------------------------------------------------------------------
|
||
|
|
--
|
||
|
|
-- Prat - A framework for World of Warcraft chat mods
|
||
|
|
--
|
||
|
|
-- Copyright (C) 2006-2018 Prat Development Team
|
||
|
|
--
|
||
|
|
-- This program is free software; you can redistribute it and/or
|
||
|
|
-- modify it under the terms of the GNU General Public License
|
||
|
|
-- as published by the Free Software Foundation; either version 2
|
||
|
|
-- of the License, or (at your option) any later version.
|
||
|
|
--
|
||
|
|
-- This program is distributed in the hope that it will be useful,
|
||
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
|
-- GNU General Public License for more details.
|
||
|
|
--
|
||
|
|
-- You should have received a copy of the GNU General Public License
|
||
|
|
-- along with this program; if not, write to:
|
||
|
|
--
|
||
|
|
-- Free Software Foundation, Inc.,
|
||
|
|
-- 51 Franklin Street, Fifth Floor,
|
||
|
|
-- Boston, MA 02110-1301, USA.
|
||
|
|
--
|
||
|
|
--
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
Prat:AddModuleToLoad(function()
|
||
|
|
|
||
|
|
local PRAT_MODULE = Prat:RequestModuleName("ServerNames")
|
||
|
|
|
||
|
|
if PRAT_MODULE == nil then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
local module = Prat:NewModule(PRAT_MODULE)
|
||
|
|
|
||
|
|
local PL = module.PL
|
||
|
|
|
||
|
|
--[==[@debug@
|
||
|
|
PL:AddLocale(PRAT_MODULE, "enUS", {
|
||
|
|
["ServerNames"] = true,
|
||
|
|
["Server name abbreviation options."] = true,
|
||
|
|
["randomclr_name"] = "Random Colors",
|
||
|
|
["randomclr_desc"] = "Use a random color for each server.",
|
||
|
|
["colon_name"] = "Show Colon",
|
||
|
|
["colon_desc"] = "Toggle adding colon after server replacement.",
|
||
|
|
["hide_name"] = "Hide Server",
|
||
|
|
["hide_desc"] = "Never display the server name",
|
||
|
|
["autoabbreviate_name"] = "Auto-abbreviate",
|
||
|
|
["autoabbreviate_desc"] = "Shorten the server name to 3 letters",
|
||
|
|
})
|
||
|
|
--@end-debug@]==]
|
||
|
|
|
||
|
|
-- These Localizations are auto-generated. To help with localization
|
||
|
|
-- please go to http://www.wowace.com/projects/prat-3-0/localization/
|
||
|
|
--@non-debug@
|
||
|
|
do
|
||
|
|
local L
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
["autoabbreviate_desc"] = "Shorten the server name to 3 letters",
|
||
|
|
["autoabbreviate_name"] = "Auto-abbreviate",
|
||
|
|
["colon_desc"] = "Toggle adding colon after server replacement.",
|
||
|
|
["colon_name"] = "Show Colon",
|
||
|
|
["hide_desc"] = "Never display the server name",
|
||
|
|
["hide_name"] = "Hide Server",
|
||
|
|
["randomclr_desc"] = "Use a random color for each server.",
|
||
|
|
["randomclr_name"] = "Random Colors",
|
||
|
|
["Server name abbreviation options."] = true,
|
||
|
|
["ServerNames"] = true,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "enUS",L)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
["autoabbreviate_desc"] = "Raccourcir le nom des serveurs à 3 lettres.",
|
||
|
|
["autoabbreviate_name"] = "Abréviation",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["colon_desc"] = "Toggle adding colon after server replacement.",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["colon_name"] = "Show Colon",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_desc"] = "Never display the server name",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_name"] = "Hide Server",
|
||
|
|
["randomclr_desc"] = "Utiliser une couleur aléatoire pour chaque serveur.",
|
||
|
|
["randomclr_name"] = "Couleurs aléatoires",
|
||
|
|
["Server name abbreviation options."] = "Options d'abréviation des noms de serveur.",
|
||
|
|
["ServerNames"] = "Noms de serveur",
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "frFR",L)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
["autoabbreviate_desc"] = "Kürze den Servernamen auf 3 Buchstaben",
|
||
|
|
["autoabbreviate_name"] = "Automatisch abkürzen",
|
||
|
|
["colon_desc"] = "Hinzufügen eines Doppelpunkts nach dem Ersetzen des Servers ein-/ausschalten.",
|
||
|
|
["colon_name"] = "Doppelpunkt anzeigen",
|
||
|
|
["hide_desc"] = "Zeigt niemals den Servernamen an",
|
||
|
|
["hide_name"] = "Server ausblenden",
|
||
|
|
["randomclr_desc"] = "Eine zufällige Farbe für jeden Server verwenden.",
|
||
|
|
["randomclr_name"] = "Zufällige Farben",
|
||
|
|
["Server name abbreviation options."] = "Abkürzungsoptionen für Servernamen.",
|
||
|
|
["ServerNames"] = "Servernamen",
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "deDE",L)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
["autoabbreviate_desc"] = "서버 이름을 3글자로 줄입니다",
|
||
|
|
["autoabbreviate_name"] = "자동-줄임",
|
||
|
|
["colon_desc"] = "서버 대체 이름 뒤에 콜론 추가 기능을 끄거나 켭니다.",
|
||
|
|
["colon_name"] = "콜론 표시",
|
||
|
|
["hide_desc"] = "서버명 표시하지 않음",
|
||
|
|
["hide_name"] = "서버 숨김",
|
||
|
|
["randomclr_desc"] = "서버 이름에 무작위 색상을 사용합니다.",
|
||
|
|
["randomclr_name"] = "무작위 색상",
|
||
|
|
["Server name abbreviation options."] = "서버 이름 줄이기 옵션입니다.",
|
||
|
|
["ServerNames"] = "서버 이름 [ServerNames]",
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "koKR",L)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["autoabbreviate_desc"] = "Shorten the server name to 3 letters",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["autoabbreviate_name"] = "Auto-abbreviate",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["colon_desc"] = "Toggle adding colon after server replacement.",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["colon_name"] = "Show Colon",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_desc"] = "Never display the server name",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_name"] = "Hide Server",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["randomclr_desc"] = "Use a random color for each server.",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["randomclr_name"] = "Random Colors",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["Server name abbreviation options."] = "Server name abbreviation options.",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["ServerNames"] = "ServerNames",
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "esMX",L)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
["autoabbreviate_desc"] = "Сокращает название сервера до трех букв",
|
||
|
|
["autoabbreviate_name"] = "Авто-сокращение",
|
||
|
|
["colon_desc"] = "Вкл/Выкл добавление двоеточия после замещения сервера.",
|
||
|
|
["colon_name"] = "Показывать двоеточие",
|
||
|
|
["hide_desc"] = "Никогда не отображать имя сервера",
|
||
|
|
["hide_name"] = "Скрыть сервер",
|
||
|
|
["randomclr_desc"] = "Использовать случайные цвета для всех серверов.",
|
||
|
|
["randomclr_name"] = "Случайные цвета",
|
||
|
|
["Server name abbreviation options."] = "Настройки сокращений имен серверов.",
|
||
|
|
["ServerNames"] = "Названия серверов",
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "ruRU",L)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
["autoabbreviate_desc"] = "把服务器名缩到3个字符",
|
||
|
|
["autoabbreviate_name"] = "自动缩写",
|
||
|
|
["colon_desc"] = "在服务器后添加冒号",
|
||
|
|
["colon_name"] = "显示冒号",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_desc"] = "Never display the server name",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_name"] = "Hide Server",
|
||
|
|
["randomclr_desc"] = "为每个服务器使用随机颜色",
|
||
|
|
["randomclr_name"] = "随机颜色",
|
||
|
|
["Server name abbreviation options."] = "服务器名称缩写选项",
|
||
|
|
["ServerNames"] = "服务器名称",
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "zhCN",L)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
["autoabbreviate_desc"] = "Acorta el nombre del servidor a 3 letras",
|
||
|
|
["autoabbreviate_name"] = "Auto-abreviar",
|
||
|
|
["colon_desc"] = "Alterna añadir dos puntos despues del servidor reemplazado.",
|
||
|
|
["colon_name"] = "Mostrar dos puntos",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_desc"] = "Never display the server name",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_name"] = "Hide Server",
|
||
|
|
["randomclr_desc"] = "Utiliza un color aleatorio para cada servidor.",
|
||
|
|
["randomclr_name"] = "Colores Aleatorios",
|
||
|
|
["Server name abbreviation options."] = "Opciones de la abreviatura del nombre del servidor.",
|
||
|
|
["ServerNames"] = "NombreServidor",
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "esES",L)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
L = {
|
||
|
|
["ServerNames"] = {
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["autoabbreviate_desc"] = "Shorten the server name to 3 letters",
|
||
|
|
["autoabbreviate_name"] = "自動縮短",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["colon_desc"] = "Toggle adding colon after server replacement.",
|
||
|
|
["colon_name"] = "顯示冒號",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_desc"] = "Never display the server name",
|
||
|
|
--[[Translation missing --]]
|
||
|
|
["hide_name"] = "Hide Server",
|
||
|
|
["randomclr_desc"] = "伺服器名稱使用隨機色彩",
|
||
|
|
["randomclr_name"] = "隨機色彩",
|
||
|
|
["Server name abbreviation options."] = "伺服器名稱縮寫選項",
|
||
|
|
["ServerNames"] = "伺服器名稱",
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
PL:AddLocale(PRAT_MODULE, "zhTW",L)
|
||
|
|
|
||
|
|
|
||
|
|
end
|
||
|
|
--@end-non-debug@
|
||
|
|
|
||
|
|
|
||
|
|
Prat:SetModuleDefaults(module.name, {
|
||
|
|
profile = {
|
||
|
|
on = true,
|
||
|
|
space = true,
|
||
|
|
colon = true,
|
||
|
|
autoabbreviate = true,
|
||
|
|
hide = false,
|
||
|
|
chanSave = {},
|
||
|
|
serveropts = {
|
||
|
|
["*"] = {
|
||
|
|
replace = false,
|
||
|
|
customcolor = false,
|
||
|
|
shortname = "",
|
||
|
|
color = {
|
||
|
|
r = 0.65,
|
||
|
|
g = 0.65,
|
||
|
|
b = 0.65,
|
||
|
|
a = 1,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
randomclr = true,
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
local serverPlugins = { servers = {} }
|
||
|
|
|
||
|
|
Prat:SetModuleOptions(module.name, {
|
||
|
|
name = PL["ServerNames"],
|
||
|
|
desc = PL["Server name abbreviation options."],
|
||
|
|
type = "group",
|
||
|
|
plugins = serverPlugins,
|
||
|
|
args = {
|
||
|
|
hide = {
|
||
|
|
type = "toggle",
|
||
|
|
name = PL["hide_name"],
|
||
|
|
desc = PL["hide_desc"],
|
||
|
|
},
|
||
|
|
autoabbreviate = {
|
||
|
|
type = "toggle",
|
||
|
|
name = PL["autoabbreviate_name"],
|
||
|
|
desc = PL["autoabbreviate_desc"],
|
||
|
|
order = 250,
|
||
|
|
disabled = function(info) return info.handler.db.profile.hide end,
|
||
|
|
},
|
||
|
|
randomclr = {
|
||
|
|
type = "toggle",
|
||
|
|
name = PL["randomclr_name"],
|
||
|
|
desc = PL["randomclr_desc"],
|
||
|
|
order = 250,
|
||
|
|
disabled = function(info) return info.handler.db.profile.hide end,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
-- build the options menu using prat templates
|
||
|
|
--module.toggleOptions = { optsep_sep = 240, randomclr = 250}
|
||
|
|
--module.toggleOptions = { optsep_sep = 229, space = 230, colon = 240 }
|
||
|
|
|
||
|
|
--local server_tags = {
|
||
|
|
-- ["Normal"] = "(E)",
|
||
|
|
-- ["PvP"] = "(P)",
|
||
|
|
-- ["RP"] = "(R)",
|
||
|
|
-- ["RP-PvP"] = "(PR)",
|
||
|
|
--}
|
||
|
|
--
|
||
|
|
--local server_desctags = {
|
||
|
|
-- ["Normal"] = "PvE",
|
||
|
|
-- ["PvP"] = "PvP",
|
||
|
|
-- ["RP"] = "RP",
|
||
|
|
-- ["RP-PvP"] = "RPPvP",
|
||
|
|
--}
|
||
|
|
|
||
|
|
local CLR = Prat.CLR
|
||
|
|
local function Server(server, text) return CLR:Colorize(module:GetServerCLR(server), text or server) end
|
||
|
|
|
||
|
|
local KeyToFullNameMap = {}
|
||
|
|
local FullNameToKeyMap = {}
|
||
|
|
|
||
|
|
-- Get the key for the server specified, safe to pass this nil and "", if no key then it returns nil
|
||
|
|
function module:GetServerKey(server)
|
||
|
|
local key = FullNameToKeyMap[server]
|
||
|
|
|
||
|
|
if key == nil then
|
||
|
|
self:AddServer(server)
|
||
|
|
|
||
|
|
key = FullNameToKeyMap[server]
|
||
|
|
end
|
||
|
|
|
||
|
|
return key
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
function module:AddServer(server)
|
||
|
|
if server and strlen(server) > 0 then
|
||
|
|
local key = server:gsub(" ", ""):lower()
|
||
|
|
FullNameToKeyMap[server] = key
|
||
|
|
KeyToFullNameMap[key] = KeyToFullNameMap[key] or server
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function module:GetServerSettings(serverKey)
|
||
|
|
local opts = self.db.profile.serveropts[serverKey]
|
||
|
|
if not opts then
|
||
|
|
self.db.profile.serveropts[serverKey] = {}
|
||
|
|
opts = self.db.profile.serveropts[serverKey]
|
||
|
|
end
|
||
|
|
|
||
|
|
return opts
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[------------------------------------------------
|
||
|
|
Module Event Functions
|
||
|
|
------------------------------------------------]] --
|
||
|
|
function module:OnModuleEnable()
|
||
|
|
self:BuildServerOptions()
|
||
|
|
Prat.RegisterChatEvent(self, "Prat_PreAddMessage")
|
||
|
|
end
|
||
|
|
|
||
|
|
function module:OnModuleDisable()
|
||
|
|
Prat.UnregisterAllChatEvents(self)
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[------------------------------------------------
|
||
|
|
Core Functions
|
||
|
|
------------------------------------------------]] --
|
||
|
|
function module:GetDescription()
|
||
|
|
return PL["Server name abbreviation options."]
|
||
|
|
end
|
||
|
|
|
||
|
|
-- replace text using prat event implementation
|
||
|
|
function module:Prat_PreAddMessage(e, m, frame, event)
|
||
|
|
local serverKey = self:GetServerKey(m.SERVER)
|
||
|
|
local opts = serverKey and self:GetServerSettings(serverKey)
|
||
|
|
|
||
|
|
if opts and opts.replace then
|
||
|
|
m.SERVER = opts.shortname
|
||
|
|
end
|
||
|
|
|
||
|
|
if self.db.profile.hide then
|
||
|
|
m.SERVER = ""
|
||
|
|
end
|
||
|
|
|
||
|
|
if m.SERVER and strlen(m.SERVER) > 0 then
|
||
|
|
m.SERVER = self:FormatServer(m.SERVER, serverKey)
|
||
|
|
end
|
||
|
|
|
||
|
|
if not (m.SERVER and strlen(m.SERVER) > 0) then
|
||
|
|
local s = Prat.SplitMessage
|
||
|
|
s.SERVER, s.sS, s.Ss = "", "", ""
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
function module:FormatServer(server, serverKey)
|
||
|
|
if server == nil then
|
||
|
|
server = KeyToFullNameMap[serverKey]
|
||
|
|
elseif serverKey == nil then
|
||
|
|
serverKey = self:GetServerKey(server)
|
||
|
|
end
|
||
|
|
|
||
|
|
if server == nil or serverKey == nil then return end
|
||
|
|
|
||
|
|
if self.db.profile.autoabbreviate then
|
||
|
|
server = server:match("^([%a\192-\255]?[\128-\191]*[%a\192-\255]?[\128-\191]*[%a\192-\255]?[\128-\191]*)")
|
||
|
|
end
|
||
|
|
|
||
|
|
return Server(serverKey, server)
|
||
|
|
end
|
||
|
|
|
||
|
|
local serverHashes = setmetatable({}, {
|
||
|
|
__mode = "kv",
|
||
|
|
__index = function(t, k) t[k] = CLR:GetHashColor(k) return
|
||
|
|
t[k]
|
||
|
|
end
|
||
|
|
})
|
||
|
|
local serverColors = setmetatable({}, {
|
||
|
|
__mode = "kv",
|
||
|
|
__index = function(t, k) t[k] = CLR:GetHexColor(k) return
|
||
|
|
t[k]
|
||
|
|
end
|
||
|
|
})
|
||
|
|
|
||
|
|
function module:GetServerCLR(server)
|
||
|
|
local serverKey = self:GetServerKey(server)
|
||
|
|
|
||
|
|
if serverKey then
|
||
|
|
local opts = self:GetServerSettings(serverKey)
|
||
|
|
|
||
|
|
if opts and opts.customcolor then
|
||
|
|
return serverColors[opts.color]
|
||
|
|
elseif self.db.profile.randomclr then
|
||
|
|
return serverHashes[serverKey]
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return CLR.COLOR_NONE
|
||
|
|
end
|
||
|
|
|
||
|
|
--[[------------------------------------------------
|
||
|
|
Menu Builder Functions
|
||
|
|
------------------------------------------------]] --
|
||
|
|
function module:BuildServerOptions()
|
||
|
|
end
|
||
|
|
|
||
|
|
--
|
||
|
|
--
|
||
|
|
-- "-Name(type)" is how we have it
|
||
|
|
--
|
||
|
|
-- so provide
|
||
|
|
--
|
||
|
|
-- %S = Full Server Name
|
||
|
|
-- %s = Abbreviated Server Name
|
||
|
|
-- %T = Full Realm Type eg PvP
|
||
|
|
-- %t = Abbreviated Realm Type e.g P
|
||
|
|
--
|
||
|
|
-- So the default format is:
|
||
|
|
--
|
||
|
|
-- -%S(%t)
|
||
|
|
--
|
||
|
|
-- We can support a coloring syntax
|
||
|
|
-- which can say use the color of
|
||
|
|
-- (some other field) Here, we can
|
||
|
|
-- Set the color of the server to use
|
||
|
|
-- the color value of the realm type
|
||
|
|
--
|
||
|
|
--
|
||
|
|
local t_sort = {}
|
||
|
|
function module:UpdateServerMenu()
|
||
|
|
end
|
||
|
|
|
||
|
|
function module:CreateServerOption(args, servername, serverkey, servertype)
|
||
|
|
end
|
||
|
|
|
||
|
|
return
|
||
|
|
end) -- Prat:AddModuleToLoad
|