From 01550ebb67dd10f1defbb61245a25a802bec99f7 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sat, 21 Dec 2024 10:53:21 +0100 Subject: [PATCH] Rework chickenator command --- Dechickenator.lua | 69 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/Dechickenator.lua b/Dechickenator.lua index b45d5a8..7323132 100644 --- a/Dechickenator.lua +++ b/Dechickenator.lua @@ -2,21 +2,26 @@ local addonname, shared = ... ---@cast addonname string ---@class DechickenatorData ----@field blacklistedBuffs table +---@field alerts table ---@alias auraType ---| 'BUFF' ---| 'DEBUFF' --- Lifebloom;B;R;e:spit;m:cuntfucker;c:YELL +--/dechicken a:Lifebloom;B;R;e:spit;m:cuntfucker;c:YELL +--/dechicken a:Lifebloom;B;R;e:spit;m:cuntfucker +--/dechicken a:Lifebloom;R;e:spit;m:cuntfucker +--/dechicken a:Lifebloom;B;R;m:cuntfucker +--/dechicken a:Lifebloom;B;R ---@class Alert ---@field message string? ---@field channel string? ---@field emote string? ---@field spellName string ---@field auraType string? ----@field remove boolean +---@field remove boolean? +--/run Dechickenator_Data = nil if not Dechickenator_Data then Dechickenator_Data = {} end if not Dechickenator_Data.alerts then Dechickenator_Data.alerts = {} end local function init() @@ -61,14 +66,56 @@ loadedFrame:SetScript("OnEvent", function(self, event, addonName) end end) -SlashCmdList["DECHICKENATOR_TOGGLE_BLACKLISTED_BUFF"] = function(input) - print("Toggling blacklisted buff: " .. tostring(input)) - if Dechickenator_Data.blacklistedBuffs[input] then - Dechickenator_Data.blacklistedBuffs[input] = nil - else - Dechickenator_Data.blacklistedBuffs[input] = true +---@param table table +---@param depth number? +function DumpTable(table, depth) + if depth == nil then + depth = 0 + end + if (depth > 200) then + print("Error: Depth > 200 in dumpTable()") + return + end + for k, v in pairs(table) do + if (type(v) == "table") then + print(string.rep(" ", depth) .. k .. ":") + DumpTable(v, depth + 1) + else + print(string.rep(" ", depth) .. k .. ": ", v) + end + end +end + +SlashCmdList["DECHICKENATOR_TOGGLE_BLACKLISTED_BUFF"] = function(input) + local fields = { strsplit(";", input) } + ---@type Alert + local aura = { spellName = "" } + + for _, field in ipairs(fields) do + local data = { strsplit(":", field) } + local key = strtrim(data[1]) + key = string.lower(key) + if key == "a" then + aura.spellName = strtrim(data[2]) + elseif key == "b" then + aura.auraType = "BUFF" + elseif key == "d" then + aura.auraType = "DEBUFF" + elseif key == "e" then + aura.emote = strtrim(data[2]) + elseif key == "m" then + aura.message = strtrim(data[2]) + elseif key == "c" then + aura.channel = strtrim(data[2]) + elseif key == "r" then + aura.remove = true + end + end + + DumpTable(aura) + if aura.spellName ~= "" then + Dechickenator_Data.alerts[aura.spellName] = aura end - print(Dechickenator_Data.blacklistedBuffs[input]) end SLASH_DECHICKENATOR_TOGGLE_BLACKLISTED_BUFF1 = "/dechicken" @@ -77,4 +124,4 @@ SlashCmdList["DECHICKENATOR_SET_MESSAGE"] = function(input) Dechickenator_Data.message = input print(Dechickenator_Data.message) end -SLASH_DECHICKENATOR_SET_MESSAGE1 = "/dechicken_message" \ No newline at end of file +SLASH_DECHICKENATOR_SET_MESSAGE1 = "/dechicken_message"