From 4dc3335a8672f6c54dd3e01f8749b0ce41771bf2 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Wed, 1 Jan 2025 16:01:47 +0100 Subject: [PATCH] Add throttle to inviter so it doesn't have a stroke --- Heimdall.lua | 2 ++ Heimdall.zip | 4 ++-- Modules/Inviter.lua | 34 ++++++++++++++++++---------------- Weakauras/Config/init.lua | 6 ++++++ 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Heimdall.lua b/Heimdall.lua index 9002777..3eb5304 100644 --- a/Heimdall.lua +++ b/Heimdall.lua @@ -84,6 +84,7 @@ local function init() ---@field keyword string ---@field allAssist boolean ---@field agentsAssist boolean + ---@field throttle number ---@class HeimdallDuelerConfig ---@field enabled boolean @@ -180,6 +181,7 @@ local function init() keyword = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "keyword" }, "+"), allAssist = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "allAssist" }, false), agentsAssist = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "agentsAssist" }, false), + throttle = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "throttle" }, 1), }, dueler = { enabled = shared.GetOrDefault(Heimdall_Data, { "config", "dueler", "enabled" }, false), diff --git a/Heimdall.zip b/Heimdall.zip index 880a751..1303abb 100644 --- a/Heimdall.zip +++ b/Heimdall.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:190266e10c3cd51fb9febcc7c6210adf2ab97bfeb12075b72222022e87e992e4 -size 15125 +oid sha256:453b0784242643aec304bfbcc7fe480addd54221a1fe4d944ebf9a20758f341d +size 15584 diff --git a/Modules/Inviter.lua b/Modules/Inviter.lua index cf32ca4..990e122 100644 --- a/Modules/Inviter.lua +++ b/Modules/Inviter.lua @@ -5,24 +5,29 @@ local addonname, shared = ... ---@diagnostic disable-next-line: missing-fields shared.Inviter = {} function shared.Inviter.Init() + ---@type Timer + local updateTimer = nil + + local function FixGroup() + if not IsInRaid() then ConvertToRaid() end + if Heimdall_Data.config.inviter.allAssist then SetEveryoneIsAssistant() end + shared.dumpTable(Heimdall_Data.config.inviter) + if Heimdall_Data.config.inviter.agentsAssist then + shared.dumpTable(Heimdall_Data.config.agents) + for name, _ in pairs(Heimdall_Data.config.agents) do + PromoteToAssistant(name, true) + end + end + end + local inviterGroupFrame = CreateFrame("Frame") inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE") inviterGroupFrame:SetScript("OnEvent", function(self, event, ...) if not Heimdall_Data.config.inviter.enabled then return end if not UnitIsGroupLeader("player") then return end - if not IsInRaid() then - ConvertToRaid() - end - - if Heimdall_Data.config.inviter.allAssist then - SetEveryoneIsAssistant() - end - if Heimdall_Data.config.inviter.agentsAssist then - for name, _ in pairs(Heimdall_Data.config.agents) do - PromoteToAssistant(name, true) - end - end + if updateTimer then updateTimer:Cancel() end + updateTimer = C_Timer.NewTimer(Heimdall_Data.config.inviter.throttle, FixGroup) end) local inviterChannelFrame = CreateFrame("Frame") @@ -44,10 +49,7 @@ function shared.Inviter.Init() end if channelname ~= Heimdall_Data.config.inviter.listeningChannel then return end - - if msg == Heimdall_Data.config.inviter.keyword then - InviteUnit(sender) - end + if msg == Heimdall_Data.config.inviter.keyword then InviteUnit(sender) end end) print("Heimdall - Inviter loaded") diff --git a/Weakauras/Config/init.lua b/Weakauras/Config/init.lua index 25f1139..72effef 100644 --- a/Weakauras/Config/init.lua +++ b/Weakauras/Config/init.lua @@ -67,6 +67,9 @@ local config = { enabled = aura_env.config.inviter.enabled, listeningChannel = aura_env.config.inviter.listeningChannel, keyword = aura_env.config.inviter.keyword, + allAssist = aura_env.config.inviter.allAssist, + agentsAssist = aura_env.config.inviter.agentsAssist, + throttle = aura_env.config.inviter.throttle, }, dueler = { enabled = aura_env.config.dueler.enabled, @@ -110,6 +113,9 @@ Heimdall_Data.config.deathReporter.duelThrottle = config.deathReporter.duelThrot Heimdall_Data.config.inviter.enabled = config.inviter.enabled Heimdall_Data.config.inviter.listeningChannel = config.inviter.listeningChannel Heimdall_Data.config.inviter.keyword = config.inviter.keyword +Heimdall_Data.config.inviter.allAssist = config.inviter.allAssist +Heimdall_Data.config.inviter.agentsAssist = config.inviter.agentsAssist +Heimdall_Data.config.inviter.throttle = config.inviter.throttle Heimdall_Data.config.dueler.enabled = config.dueler.enabled Heimdall_Data.config.dueler.declineOther = config.dueler.declineOther