From 8e90a71dfc03b6372c7e0a57cdda822f859050e2 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Wed, 1 Jan 2025 14:10:33 +0100 Subject: [PATCH] Rework inviter config --- Heimdall.lua | 11 ++++--- Inviter.lua | 83 +++++++++++++--------------------------------------- 2 files changed, 27 insertions(+), 67 deletions(-) diff --git a/Heimdall.lua b/Heimdall.lua index 6d19eb0..326ca46 100644 --- a/Heimdall.lua +++ b/Heimdall.lua @@ -10,7 +10,6 @@ local addonname, shared = ... local function init() ---@class Heimdall_Data ---@field config HeimdallConfig - ---@field whitelist table ---@field stinkies table if not Heimdall_Data then Heimdall_Data = {} end @@ -38,6 +37,7 @@ local function init() ---@field inviter HeimdallInviterConfig ---@field whisperNotify table ---@field stinkies table + ---@field agents table ---@class HeimdallSpotterConfig ---@field enabled boolean @@ -72,7 +72,8 @@ local function init() ---@field enabled boolean ---@field listeningChannel string ---@field keyword string - ---@field whitelist table + ---@field allAssist boolean + ---@field agentsAssist boolean --- Data --- ---@class HeimdallMessengerData @@ -155,8 +156,10 @@ local function init() enabled = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "enabled" }, false), listeningChannel = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "listeningChannel" }, "Agent"), keyword = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "keyword" }, "+"), - whitelist = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "whitelist" }, {}), - } + allAssist = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "allAssist" }, false), + agentsAssist = shared.GetOrDefault(Heimdall_Data, { "config", "inviter", "agentsAssist" }, false), + }, + agents = shared.GetOrDefault(Heimdall_Data, { "config", "agents" }, {}), } shared.raceMap = { diff --git a/Inviter.lua b/Inviter.lua index 326d75a..0017132 100644 --- a/Inviter.lua +++ b/Inviter.lua @@ -1,94 +1,53 @@ -local addonname, data = ... ----@cast data HeimdallData +local addonname, shared = ... +---@cast shared HeimdallShared ---@cast addonname string -data.Inviter = {} -function data.Inviter.Init() - if not data.config.inviter.enabled then - print("Heimdall - Inviter disabled") - return - end +shared.Inviter = {} +function shared.Inviter.Init() + -- if not Heimdall_Data.config.inviter.enabled then + -- print("Heimdall - Inviter disabled") + -- return + -- end ---@type table - local channelMembers = {} local channelRosterFrame = CreateFrame("Frame") channelRosterFrame:RegisterEvent("CHANNEL_ROSTER_UPDATE") channelRosterFrame:SetScript("OnEvent", function(self, event, index) + if not Heimdall_Data.config.inviter.enabled then return end local count = select(5, GetChannelDisplayInfo(index)) - channelMembers = {} for i = 1, count do local name = GetChannelRosterInfo(index, i) if name then - channelMembers[name] = true - data.config.inviter.whitelist[name] = date("%Y-%m-%dT%H:%M:%S") + Heimdall_Data.config.agents[name] = date("%Y-%m-%dT%H:%M:%S") end end end) - ---@param channelName string - ---@return table - local function UpdateChannelMembers(channelName) - local friendsFrame = _G["FriendsFrame"] - local channelFrame = _G["ChannelFrame"] - OpenFriendsFrame() - _G["FriendsFrameTab3"]:Click() - _G["ChannelButton2"]:Click() - for i = 1, 40 do - local button = _G["ChannelButton" .. i] - if not button then break end - local text = button:GetText() - if string.find(text, channelName) then - button:Click() - break - end - end - - channelFrame:Hide() - friendsFrame:Hide() - return channelMembers - end - - C_Timer.NewTicker(30, function() - UpdateChannelMembers(data.config.inviter.listeningChannel) - end) - - -- print("pls joomp") - -- hooksecurefunc("JumpOrAscendStart", function() - -- print("JOOMP") - -- UpdateChannelMembers(data.config.inviter.listeningChannel) - -- local foo = channelMembers - -- for name, _ in pairs(foo) do - -- print(name) - -- end - -- end) - local inviterGroupFrame = CreateFrame("Frame") local nextUpdate = 0 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 nextUpdate >= GetTime() then return end - nextUpdate = GetTime() + data.config.inviter.updateInterval - for name, _ in pairs(channelMembers) do - PromoteToAssistant(name, true) + if Heimdall_Data.config.inviter.allAssist then + SetEveryoneIsAssistant() end - for name, _ in pairs(data.config.inviter.whitelist) do - PromoteToAssistant(name, true) + if Heimdall_Data.config.inviter.agentsAssist then + for name, _ in pairs(Heimdall_Data.config.agents) do + PromoteToAssistant(name, true) + end end - - -- if not IsEveryoneAssistant() then - -- SetEveryoneIsAssistant(true) - -- end end) local inviterChannelFrame = CreateFrame("Frame") inviterChannelFrame:RegisterEvent("CHAT_MSG_CHANNEL") inviterChannelFrame:SetScript("OnEvent", function(self, event, msg, sender, ...) + if not Heimdall_Data.config.inviter.enabled then return end local channelId = select(6, ...) local channelname = "" ---@type any[] @@ -103,11 +62,9 @@ function data.Inviter.Init() end end - if channelname ~= data.config.inviter.listeningChannel then - return - end + if channelname ~= Heimdall_Data.config.inviter.listeningChannel then return end - if msg == data.config.inviter.keyword then + if msg == Heimdall_Data.config.inviter.keyword then InviteUnit(sender) end end)