Generify everything a little
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
---@class Channel
|
---@class Channel
|
||||||
---@field name string
|
---@field name string
|
||||||
---@field password string|nil
|
---@field password string|nil
|
||||||
|
local debug = false
|
||||||
|
|
||||||
---@type Channel[]
|
---@type Channel[]
|
||||||
local channels = {
|
local channels = {
|
||||||
@@ -8,7 +9,6 @@ local channels = {
|
|||||||
{ name = "Horde", password = "garrosh" }
|
{ name = "Horde", password = "garrosh" }
|
||||||
}
|
}
|
||||||
---@type string
|
---@type string
|
||||||
local chatFrameName = "Auto"
|
|
||||||
---@type string[]
|
---@type string[]
|
||||||
local subscribedMessageGroups = {
|
local subscribedMessageGroups = {
|
||||||
"SAY",
|
"SAY",
|
||||||
@@ -41,65 +41,67 @@ local function JoinChannels()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function FindOrCreateChatWindow()
|
|
||||||
|
---@param chatFrameName string
|
||||||
|
---@param groups string[]
|
||||||
|
---@param channels string[]
|
||||||
|
local function FindOrCreateChatFrame(chatFrameName, groups, channels)
|
||||||
|
local chatFrame = nil
|
||||||
|
|
||||||
|
if debug then print(string.format("Searching for chat window %s", chatFrameName)) end
|
||||||
for i = 1, NUM_CHAT_WINDOWS do
|
for i = 1, NUM_CHAT_WINDOWS do
|
||||||
local name = GetChatWindowInfo(i)
|
local name = GetChatWindowInfo(i)
|
||||||
if name == chatFrameName then
|
if name == chatFrameName then
|
||||||
print(string.format("Found chat window %s", name))
|
if debug then print(string.format("Found chat window %s", chatFrameName)) end
|
||||||
local frame = _G["ChatFrame" .. i]
|
local frame = _G["ChatFrame" .. i]
|
||||||
if FCF_IsValidChatFrame(frame) then
|
if FCF_IsValidChatFrame(frame) then
|
||||||
print(string.format("Frame %s is valid", name))
|
if debug then print(string.format("Frame %s is valid", chatFrameName)) end
|
||||||
return frame
|
chatFrame = frame
|
||||||
else
|
else
|
||||||
print(string.format("Frame %s is invalid", name))
|
if debug then print(string.format("Frame %s is invalid", chatFrameName)) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
print("Opening new chat window")
|
|
||||||
FCF_OpenNewWindow(chatFrameName)
|
|
||||||
for i = 1, NUM_CHAT_WINDOWS do
|
|
||||||
local name = GetChatWindowInfo(i)
|
|
||||||
if name == chatFrameName then
|
|
||||||
print(string.format("Found chat window %s", name))
|
|
||||||
local frame = _G["ChatFrame" .. i]
|
|
||||||
if FCF_IsValidChatFrame(frame) then
|
|
||||||
print(string.format("Frame %s is valid", name))
|
|
||||||
return frame
|
|
||||||
else
|
|
||||||
print(string.format("Frame %s is invalid", name))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return nil
|
|
||||||
end
|
|
||||||
|
|
||||||
local function ConfigureChatWindow()
|
|
||||||
local general = _G["ChatFrame1"]
|
|
||||||
local chatFrame = FindOrCreateChatWindow()
|
|
||||||
if not chatFrame then
|
if not chatFrame then
|
||||||
print(string.format("Chat window %s not found", chatFrameName))
|
if debug then print(string.format("Creating new chat window %s", chatFrameName)) end
|
||||||
return
|
FCF_OpenNewWindow(chatFrameName)
|
||||||
|
for i = 1, NUM_CHAT_WINDOWS do
|
||||||
|
local name = GetChatWindowInfo(i)
|
||||||
|
if name == chatFrameName then
|
||||||
|
if debug then print(string.format("Found chat window %s", chatFrameName)) end
|
||||||
|
local frame = _G["ChatFrame" .. i]
|
||||||
|
if FCF_IsValidChatFrame(frame) then
|
||||||
|
if debug then print(string.format("Frame %s is valid", chatFrameName)) end
|
||||||
|
return frame
|
||||||
|
else
|
||||||
|
if debug then print(string.format("Frame %s is invalid", chatFrameName)) end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--SetChatWindowName(chatFrame, chatFrameName)
|
if debug then print(string.format("Removing all message groups to %s", chatFrameName)) end
|
||||||
print("Removing all message groups")
|
|
||||||
ChatFrame_RemoveAllMessageGroups(chatFrame)
|
ChatFrame_RemoveAllMessageGroups(chatFrame)
|
||||||
print("Removing all channels")
|
if debug then print(string.format("Removing all channels to %s", chatFrameName)) end
|
||||||
ChatFrame_RemoveAllChannels(chatFrame)
|
ChatFrame_RemoveAllChannels(chatFrame)
|
||||||
print("Adding message groups")
|
|
||||||
for _, messageGroup in ipairs(subscribedMessageGroups) do
|
if debug then print(string.format("Adding message groups to %s", chatFrameName)) end
|
||||||
print(string.format("Adding message group: %s", messageGroup))
|
for _, messageGroup in ipairs(groups) do
|
||||||
|
if debug then print(string.format("Adding message group: %s to %s", messageGroup, chatFrameName)) end
|
||||||
ChatFrame_AddMessageGroup(chatFrame, strtrim(messageGroup))
|
ChatFrame_AddMessageGroup(chatFrame, strtrim(messageGroup))
|
||||||
ChatFrame_RemoveMessageGroup(general, strtrim(messageGroup))
|
ChatFrame_RemoveMessageGroup(ChatFrame1, strtrim(messageGroup))
|
||||||
end
|
end
|
||||||
print("Adding channels")
|
|
||||||
for _, channel in ipairs(subscribedChannels) do
|
if debug then print(string.format("Adding channels to %s", chatFrameName)) end
|
||||||
print(string.format("Adding channel: %s", channel))
|
for _, channel in ipairs(channels) do
|
||||||
|
if debug then print(string.format("Adding channel: %s to %s", channel, chatFrameName)) end
|
||||||
ChatFrame_AddChannel(chatFrame, strtrim(channel))
|
ChatFrame_AddChannel(chatFrame, strtrim(channel))
|
||||||
ChatFrame_RemoveChannel(general, strtrim(channel))
|
ChatFrame_RemoveChannel(ChatFrame1, strtrim(channel))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if debug then print(string.format("Chat window %s configured", chatFrameName)) end
|
||||||
|
return chatFrame
|
||||||
end
|
end
|
||||||
|
|
||||||
local frame = CreateFrame("Frame")
|
local frame = CreateFrame("Frame")
|
||||||
@@ -107,5 +109,7 @@ local frame = CreateFrame("Frame")
|
|||||||
frame:RegisterEvent("PLAYER_ENTERING_WORLD")
|
frame:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||||
frame:SetScript("OnEvent", function(self, event, ...)
|
frame:SetScript("OnEvent", function(self, event, ...)
|
||||||
JoinChannels()
|
JoinChannels()
|
||||||
ConfigureChatWindow()
|
--FindOrCreateChatFrame("Auto", subscribedMessageGroups, subscribedChannels)
|
||||||
|
FindOrCreateChatFrame("Agent", {}, { "Agent" })
|
||||||
|
FindOrCreateChatFrame("Horde", {}, { "Horde" })
|
||||||
end)
|
end)
|
||||||
|
Reference in New Issue
Block a user