diff --git a/Heimdall.lua b/Heimdall.lua index 3eb5304..f476b3b 100644 --- a/Heimdall.lua +++ b/Heimdall.lua @@ -33,6 +33,8 @@ local function init() ---@field Dueler InitTable ---@field Bully InitTable ---@field AgentTracker InitTable + ---@field Emoter InitTable + ---@field Echoer InitTable --- Config --- ---@class HeimdallConfig @@ -44,6 +46,8 @@ local function init() ---@field dueler HeimdallDuelerConfig ---@field bully HeimdallBullyConfig ---@field agentTracker HeimdallAgentTrackerConfig + ---@field emoter HeimdallEmoterConfig + ---@field echoer HeimdallEchoerConfig ---@field whisperNotify table ---@field stinkies table ---@field agents table @@ -97,6 +101,16 @@ local function init() ---@field enabled boolean ---@field masterChannel string + ---@class HeimdallEmoterConfig + ---@field enabled boolean + ---@field masterChannel string + ---@field prefix string + + ---@class HeimdallEchoerConfig + ---@field enabled boolean + ---@field masterChannel string + ---@field prefix string + --- Data --- ---@class HeimdallMessengerData ---@field queue table @@ -194,6 +208,16 @@ local function init() enabled = shared.GetOrDefault(Heimdall_Data, { "config", "agentTracker", "enabled" }, false), masterChannel = shared.GetOrDefault(Heimdall_Data, { "config", "agentTracker", "masterChannel" }, "Agent"), }, + emoter = { + enabled = shared.GetOrDefault(Heimdall_Data, { "config", "emoter", "enabled" }, false), + masterChannel = shared.GetOrDefault(Heimdall_Data, { "config", "emoter", "masterChannel" }, "Agent"), + prefix = shared.GetOrDefault(Heimdall_Data, { "config", "emoter", "prefix" }, ""), + }, + echoer = { + enabled = shared.GetOrDefault(Heimdall_Data, { "config", "echoer", "enabled" }, false), + masterChannel = shared.GetOrDefault(Heimdall_Data, { "config", "echoer", "masterChannel" }, "Agent"), + prefix = shared.GetOrDefault(Heimdall_Data, { "config", "echoer", "prefix" }, ""), + }, agents = shared.GetOrDefault(Heimdall_Data, { "config", "agents" }, {}), } diff --git a/Heimdall.toc b/Heimdall.toc index 44986bb..0adc90b 100644 --- a/Heimdall.toc +++ b/Heimdall.toc @@ -15,4 +15,6 @@ Modules/Inviter.lua Modules/Dueler.lua Modules/Bully.lua Modules/AgentTracker.lua +Modules/Emoter.lua +Modules/Echoer.lua Heimdall.lua \ No newline at end of file diff --git a/Heimdall.zip b/Heimdall.zip index 55d697e..7f0ffaa 100644 --- a/Heimdall.zip +++ b/Heimdall.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ca967b39bec6bd607dbee1b8a4507ca5cb7b5cf13b5bfe72dacefdfcce87102 -size 15635 +oid sha256:21d0644570f48d31f8d27ede05a4157357e198c8623bcb589d9e8b57b2ad5f32 +size 17225 diff --git a/Modules/Echoer.lua b/Modules/Echoer.lua new file mode 100644 index 0000000..778e2e6 --- /dev/null +++ b/Modules/Echoer.lua @@ -0,0 +1,36 @@ +local addonname, shared = ... +---@cast shared HeimdallShared +---@cast addonname string + +---@diagnostic disable-next-line: missing-fields +shared.Echoer = {} +function shared.Echoer.Init() + local frame = CreateFrame("Frame") + frame:RegisterEvent("CHAT_MSG_CHANNEL") + frame:SetScript("OnEvent", function(self, event, msg, sender, ...) + if not Heimdall_Data.config.echoer.enabled then return end + + local channelId = select(6, ...) + local channelname = "" + ---@type any[] + local channels = { GetChannelList() } + for i = 1, #channels, 2 do + ---@type number + local id = channels[i] + ---@type string + local name = channels[i + 1] + if id == channelId then + channelname = name + end + end + + if channelname ~= Heimdall_Data.config.echoer.masterChannel then return end + + if string.find(msg, "^" .. Heimdall_Data.config.echoer.prefix) then + local msg = string.sub(msg, string.len(Heimdall_Data.config.echoer.prefix) + 1) + SendChatMessage(msg, "SAY") + end + end) + + print("Heimdall - Echoer loaded") +end diff --git a/Modules/Emoter.lua b/Modules/Emoter.lua new file mode 100644 index 0000000..9bd757b --- /dev/null +++ b/Modules/Emoter.lua @@ -0,0 +1,35 @@ +local addonname, shared = ... +---@cast shared HeimdallShared +---@cast addonname string + +---@diagnostic disable-next-line: missing-fields +shared.Emoter = {} +function shared.Emoter.Init() + local frame = CreateFrame("Frame") + frame:RegisterEvent("CHAT_MSG_CHANNEL") + frame:SetScript("OnEvent", function(self, event, msg, sender, ...) + if not Heimdall_Data.config.emoter.enabled then return end + + local channelId = select(6, ...) + local channelname = "" + ---@type any[] + local channels = { GetChannelList() } + for i = 1, #channels, 2 do + ---@type number + local id = channels[i] + ---@type string + local name = channels[i + 1] + if id == channelId then + channelname = name + end + end + + if channelname ~= Heimdall_Data.config.emoter.masterChannel then return end + + if string.find(msg, "^" .. Heimdall_Data.config.emoter.prefix) then + local emote = string.sub(msg, string.len(Heimdall_Data.config.emoter.prefix) + 1) + DoEmote(emote) + end + end) + print("Heimdall - Emoter loaded") +end diff --git a/Weakauras/Config/init.lua b/Weakauras/Config/init.lua index 72effef..7281ed9 100644 --- a/Weakauras/Config/init.lua +++ b/Weakauras/Config/init.lua @@ -82,6 +82,16 @@ local config = { enabled = aura_env.config.agentTracker.enabled, masterChannel = aura_env.config.agentTracker.masterChannel, }, + emoter = { + enabled = aura_env.config.emoter.enabled, + masterChannel = aura_env.config.emoter.masterChannel, + prefix = aura_env.config.emoter.prefix, + }, + echoer = { + enabled = aura_env.config.echoer.enabled, + masterChannel = aura_env.config.echoer.masterChannel, + prefix = aura_env.config.echoer.prefix, + }, } Heimdall_Data.config.spotter.enabled = config.spotter.enabled @@ -125,5 +135,13 @@ Heimdall_Data.config.bully.enabled = config.bully.enabled Heimdall_Data.config.agentTracker.enabled = config.agentTracker.enabled Heimdall_Data.config.agentTracker.masterChannel = config.agentTracker.masterChannel +Heimdall_Data.config.emoter.enabled = config.emoter.enabled +Heimdall_Data.config.emoter.masterChannel = config.emoter.masterChannel +Heimdall_Data.config.emoter.prefix = config.emoter.prefix + +Heimdall_Data.config.echoer.enabled = config.echoer.enabled +Heimdall_Data.config.echoer.masterChannel = config.echoer.masterChannel +Heimdall_Data.config.echoer.prefix = config.echoer.prefix + Heimdall_Data.config.whisperNotify = config.whisperNotify Heimdall_Data.config.stinkies = config.stinkies