Generify everything a little

This commit is contained in:
2024-12-08 01:24:13 +01:00
parent 78e7beff90
commit 9ce495ec1a

View File

@@ -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)