From 9ce495ec1a59f9dc8fbb37c79873ed8b779c8ae4 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sun, 8 Dec 2024 01:24:13 +0100 Subject: [PATCH] Generify everything a little --- Channeler.lua | 88 +++++++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/Channeler.lua b/Channeler.lua index 5cb942c..f06829d 100644 --- a/Channeler.lua +++ b/Channeler.lua @@ -1,6 +1,7 @@ ---@class Channel ---@field name string ---@field password string|nil +local debug = false ---@type Channel[] local channels = { @@ -8,7 +9,6 @@ local channels = { { name = "Horde", password = "garrosh" } } ---@type string -local chatFrameName = "Auto" ---@type string[] local subscribedMessageGroups = { "SAY", @@ -41,65 +41,67 @@ local function JoinChannels() 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 local name = GetChatWindowInfo(i) 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] if FCF_IsValidChatFrame(frame) then - print(string.format("Frame %s is valid", name)) - return frame + if debug then print(string.format("Frame %s is valid", chatFrameName)) end + chatFrame = frame else - print(string.format("Frame %s is invalid", name)) + if debug then print(string.format("Frame %s is invalid", chatFrameName)) 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 - print(string.format("Chat window %s not found", chatFrameName)) - return + if debug then print(string.format("Creating new chat window %s", chatFrameName)) end + 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 - --SetChatWindowName(chatFrame, chatFrameName) - print("Removing all message groups") + if debug then print(string.format("Removing all message groups to %s", chatFrameName)) end ChatFrame_RemoveAllMessageGroups(chatFrame) - print("Removing all channels") + if debug then print(string.format("Removing all channels to %s", chatFrameName)) end ChatFrame_RemoveAllChannels(chatFrame) - print("Adding message groups") - for _, messageGroup in ipairs(subscribedMessageGroups) do - print(string.format("Adding message group: %s", messageGroup)) + + if debug then print(string.format("Adding message groups to %s", chatFrameName)) end + 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_RemoveMessageGroup(general, strtrim(messageGroup)) + ChatFrame_RemoveMessageGroup(ChatFrame1, strtrim(messageGroup)) end - print("Adding channels") - for _, channel in ipairs(subscribedChannels) do - print(string.format("Adding channel: %s", channel)) + + if debug then print(string.format("Adding channels to %s", chatFrameName)) end + 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_RemoveChannel(general, strtrim(channel)) + ChatFrame_RemoveChannel(ChatFrame1, strtrim(channel)) end + + if debug then print(string.format("Chat window %s configured", chatFrameName)) end + return chatFrame end local frame = CreateFrame("Frame") @@ -107,5 +109,7 @@ local frame = CreateFrame("Frame") frame:RegisterEvent("PLAYER_ENTERING_WORLD") frame:SetScript("OnEvent", function(self, event, ...) JoinChannels() - ConfigureChatWindow() + --FindOrCreateChatFrame("Auto", subscribedMessageGroups, subscribedChannels) + FindOrCreateChatFrame("Agent", {}, { "Agent" }) + FindOrCreateChatFrame("Horde", {}, { "Horde" }) end)