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.

472 lines
13 KiB

--
-- Prat - A framework for World of Warcraft chat mods
--
-- Copyright (C) 2023 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.
--
--
-------------------------------------------------------------------------------
if Prat.IsClassic then
return
end
Prat:AddModuleToLoad(function()
local PRAT_MODULE = Prat:RequestModuleName("NewcomersChat")
if PRAT_MODULE == nil then
return
end
local module = Prat:NewModule(PRAT_MODULE)
-- define localized strings
local PL = module.PL
--[==[@debug@
PL:AddLocale(PRAT_MODULE, "enUS", {
["NewcomersChat"] = "Newcomers Chat",
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
["As Newcomer"] = "As Newcomer",
["As Guide"] = "As Guide",
["Newcomer Icon"] = "Newcomer Icon",
["Guide Icon"] = "Guide Icon",
["Guide Label"] = "Guide Label",
["In newcomers chat"] = "In newcomers chat",
["In normal chat"] = "In normal chat",
["Guide"] = "Guide",
})
--@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 = {
["NewcomersChat"] = {
["As Guide"] = true,
["As Newcomer"] = true,
["Guide"] = true,
["Guide Icon"] = true,
["Guide Label"] = true,
["In newcomers chat"] = true,
["In normal chat"] = true,
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
["Newcomer Icon"] = true,
["NewcomersChat"] = "Newcomers Chat",
}
}
PL:AddLocale(PRAT_MODULE, "enUS",L)
L = {
["NewcomersChat"] = {
--[[Translation missing --]]
["As Guide"] = "As Guide",
--[[Translation missing --]]
["As Newcomer"] = "As Newcomer",
--[[Translation missing --]]
["Guide"] = "Guide",
--[[Translation missing --]]
["Guide Icon"] = "Guide Icon",
--[[Translation missing --]]
["Guide Label"] = "Guide Label",
--[[Translation missing --]]
["In newcomers chat"] = "In newcomers chat",
--[[Translation missing --]]
["In normal chat"] = "In normal chat",
--[[Translation missing --]]
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
--[[Translation missing --]]
["Newcomer Icon"] = "Newcomer Icon",
--[[Translation missing --]]
["NewcomersChat"] = "Newcomers Chat",
}
}
PL:AddLocale(PRAT_MODULE, "frFR",L)
L = {
["NewcomersChat"] = {
["As Guide"] = "As Mentor",
["As Newcomer"] = "Als Neuling",
["Guide"] = "Mentor",
["Guide Icon"] = "Mentor Icon",
["Guide Label"] = "Mentor Label",
["In newcomers chat"] = "Im Neulings-Chat",
["In normal chat"] = "Im normalen Chat",
["module_desc"] = "Konfiguriert Symbole und Texte, die auf Mentor und Neulinge, von und im Neulingskanal hinweisen",
["Newcomer Icon"] = "Neulingssymbol",
["NewcomersChat"] = "Neulings-Chat",
}
}
PL:AddLocale(PRAT_MODULE, "deDE",L)
L = {
["NewcomersChat"] = {
--[[Translation missing --]]
["As Guide"] = "As Guide",
--[[Translation missing --]]
["As Newcomer"] = "As Newcomer",
--[[Translation missing --]]
["Guide"] = "Guide",
--[[Translation missing --]]
["Guide Icon"] = "Guide Icon",
--[[Translation missing --]]
["Guide Label"] = "Guide Label",
--[[Translation missing --]]
["In newcomers chat"] = "In newcomers chat",
--[[Translation missing --]]
["In normal chat"] = "In normal chat",
--[[Translation missing --]]
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
--[[Translation missing --]]
["Newcomer Icon"] = "Newcomer Icon",
--[[Translation missing --]]
["NewcomersChat"] = "Newcomers Chat",
}
}
PL:AddLocale(PRAT_MODULE, "koKR",L)
L = {
["NewcomersChat"] = {
--[[Translation missing --]]
["As Guide"] = "As Guide",
--[[Translation missing --]]
["As Newcomer"] = "As Newcomer",
--[[Translation missing --]]
["Guide"] = "Guide",
--[[Translation missing --]]
["Guide Icon"] = "Guide Icon",
--[[Translation missing --]]
["Guide Label"] = "Guide Label",
--[[Translation missing --]]
["In newcomers chat"] = "In newcomers chat",
--[[Translation missing --]]
["In normal chat"] = "In normal chat",
--[[Translation missing --]]
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
--[[Translation missing --]]
["Newcomer Icon"] = "Newcomer Icon",
--[[Translation missing --]]
["NewcomersChat"] = "Newcomers Chat",
}
}
PL:AddLocale(PRAT_MODULE, "esMX",L)
L = {
["NewcomersChat"] = {
--[[Translation missing --]]
["As Guide"] = "As Guide",
--[[Translation missing --]]
["As Newcomer"] = "As Newcomer",
--[[Translation missing --]]
["Guide"] = "Guide",
--[[Translation missing --]]
["Guide Icon"] = "Guide Icon",
--[[Translation missing --]]
["Guide Label"] = "Guide Label",
--[[Translation missing --]]
["In newcomers chat"] = "In newcomers chat",
--[[Translation missing --]]
["In normal chat"] = "In normal chat",
--[[Translation missing --]]
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
--[[Translation missing --]]
["Newcomer Icon"] = "Newcomer Icon",
--[[Translation missing --]]
["NewcomersChat"] = "Newcomers Chat",
}
}
PL:AddLocale(PRAT_MODULE, "ruRU",L)
L = {
["NewcomersChat"] = {
--[[Translation missing --]]
["As Guide"] = "As Guide",
--[[Translation missing --]]
["As Newcomer"] = "As Newcomer",
--[[Translation missing --]]
["Guide"] = "Guide",
--[[Translation missing --]]
["Guide Icon"] = "Guide Icon",
--[[Translation missing --]]
["Guide Label"] = "Guide Label",
--[[Translation missing --]]
["In newcomers chat"] = "In newcomers chat",
--[[Translation missing --]]
["In normal chat"] = "In normal chat",
--[[Translation missing --]]
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
--[[Translation missing --]]
["Newcomer Icon"] = "Newcomer Icon",
--[[Translation missing --]]
["NewcomersChat"] = "Newcomers Chat",
}
}
PL:AddLocale(PRAT_MODULE, "zhCN",L)
L = {
["NewcomersChat"] = {
--[[Translation missing --]]
["As Guide"] = "As Guide",
--[[Translation missing --]]
["As Newcomer"] = "As Newcomer",
--[[Translation missing --]]
["Guide"] = "Guide",
--[[Translation missing --]]
["Guide Icon"] = "Guide Icon",
--[[Translation missing --]]
["Guide Label"] = "Guide Label",
--[[Translation missing --]]
["In newcomers chat"] = "In newcomers chat",
--[[Translation missing --]]
["In normal chat"] = "In normal chat",
--[[Translation missing --]]
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
--[[Translation missing --]]
["Newcomer Icon"] = "Newcomer Icon",
--[[Translation missing --]]
["NewcomersChat"] = "Newcomers Chat",
}
}
PL:AddLocale(PRAT_MODULE, "esES",L)
L = {
["NewcomersChat"] = {
--[[Translation missing --]]
["As Guide"] = "As Guide",
--[[Translation missing --]]
["As Newcomer"] = "As Newcomer",
--[[Translation missing --]]
["Guide"] = "Guide",
--[[Translation missing --]]
["Guide Icon"] = "Guide Icon",
--[[Translation missing --]]
["Guide Label"] = "Guide Label",
--[[Translation missing --]]
["In newcomers chat"] = "In newcomers chat",
--[[Translation missing --]]
["In normal chat"] = "In normal chat",
--[[Translation missing --]]
["module_desc"] = "Configure icons and text indicating guides and newcomers from and in the Newcomers channel",
--[[Translation missing --]]
["Newcomer Icon"] = "Newcomer Icon",
--[[Translation missing --]]
["NewcomersChat"] = "Newcomers Chat",
}
}
PL:AddLocale(PRAT_MODULE, "zhTW",L)
end
--@end-non-debug@
Prat:SetModuleDefaults(module.name, {
profile = {
on = true,
asNewcomer = {
newcomerIcon = {
inNewcomersChat = false,
inNormalChat = false
},
guideIcon = {
inNewcomersChat = true,
inNormalChat = false
},
guideLabel = {
inNewcomersChat = true,
inNormalChat = false
},
},
asGuide = {
newcomerIcon = {
inNewcomersChat = true,
inNormalChat = true
},
guideIcon = {
inNewcomersChat = true,
inNormalChat = false
},
guideLabel = {
inNewcomersChat = true,
inNormalChat = false
},
},
},
})
local function GetBundle(name, description, order)
return {
name = name or "",
desc = description or "",
type = "group",
inline = true,
order = order,
args = {
inNewcomersChat = {
name = PL["In newcomers chat"],
type = "toggle",
order = 10,
},
inNormalChat = {
name = PL["In normal chat"],
type = "toggle",
order = 20,
},
}
}
end
local function GetTab(name, description)
return {
name = name or "",
desc = description or "",
type = "group",
args = {
newcomerIcon = GetBundle(PL["Newcomer Icon"], nil, 10),
guideIcon = GetBundle(PL["Guide Icon"], nil, 20),
guideLabel = GetBundle(PL["Guide Label"], nil, 30),
},
}
end
module.pluginopts = {}
Prat:SetModuleOptions(module, {
name = PL["NewcomersChat"],
desc = PL["module_desc"],
type = "group",
plugins = module.pluginopts,
childGroups = "tab",
get = function(info)
return module.db.profile[info[#info-2]][info[#info-1]][info[#info]]
end,
set = function(info, value)
module.db.profile[info[#info-2]][info[#info-1]][info[#info]] = value
end,
args = {
asNewcomer = GetTab(PL["As Newcomer"]),
asGuide = GetTab(PL["As Guide"]),
}
})
function module:OnModuleEnable()
Prat.RegisterChatEvent(self, "Prat_FrameMessage")
end
function module:OnModuleDisable()
Prat.UnregisterAllChatEvents(self)
end
local GUIDE_ICON = "|A:newplayerchat-chaticon-guide:0:0:0:0|a"
local GUIDE_TEXT = "|cff81b558" .. PL["Guide"] .. "|r"
local NEWCOMER_ICON = "|A:newplayerchat-chaticon-newcomer:0:0:0:0|a"
function module:ApplySettings(settings, senderStatus, message)
message.FLAG = ""
local ruleSet = C_ChatInfo.GetChannelRulesetForChannelID(message.ARGS[7])
if ruleSet == Enum.ChatChannelRuleset.Mentor then
if senderStatus == "GUIDE" then
if settings.guideIcon.inNewcomersChat then
message.FLAG = GUIDE_ICON
end
if settings.guideLabel.inNewcomersChat then
message.FLAG = message.FLAG .. GUIDE_TEXT
end
if settings.guideIcon.inNewcomersChat or settings.guideLabel.inNewcomersChat then
message.FLAG = message.FLAG .. " "
end
elseif senderStatus == "NEWCOMER" then
if settings.newcomerIcon.inNewcomersChat then
message.FLAG = NEWCOMER_ICON
end
end
else
if senderStatus == "GUIDE" then
if settings.guideIcon.inNormalChat then
message.FLAG = GUIDE_ICON
end
if settings.guideLabel.inNormalChat then
message.FLAG = message.FLAG .. GUIDE_TEXT
end
if settings.guideIcon.inNormalChat or settings.guideLabel.inNormalChat then
message.FLAG = message.FLAG .. " "
end
elseif senderStatus == "NEWCOMER" then
if settings.newcomerIcon.inNormalChat then
message.FLAG = NEWCOMER_ICON
end
end
end
end
function module:Prat_FrameMessage(info, message, frame, event)
local arg6 = message.ARGS[6] or ""
if arg6 ~= "GUIDE" and arg6 ~= "NEWCOMER" then
return
end
if IsActivePlayerGuide() then
self:ApplySettings(self.db.profile.asGuide, arg6, message)
elseif C_PlayerMentorship.IsActivePlayerConsideredNewcomer() then
self:ApplySettings(self.db.profile.asNewcomer, arg6, message)
end
end
return
end) -- Prat:AddModuleToLoad