From f4069d38f05e87856f84f294ad11aa3703544423 Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Thu, 26 Sep 2024 12:41:38 -0400 Subject: [PATCH 1/4] Working on Settings --- KittenDismount.toc | 10 ++++++ main.lua | 25 ++++++++++++++ settings.lua | 83 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 KittenDismount.toc create mode 100644 main.lua create mode 100644 settings.lua diff --git a/KittenDismount.toc b/KittenDismount.toc new file mode 100644 index 0000000..4620992 --- /dev/null +++ b/KittenDismount.toc @@ -0,0 +1,10 @@ +## Interface: 110002 +## Version: 0.0.1 +## Title: Easy Dismount +## Notes: Quick addon to dismount if you are on a flying mount, but on the ground. +## Author: Annika + +## SavedVariables: KittenDismount_SavedVars + +main.lua +settings.lua diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..546dd7c --- /dev/null +++ b/main.lua @@ -0,0 +1,25 @@ +local surgeForward = 372608; +local skywardAscent = 372610; +local whirlingSurge = 361584; +local aerielHalt = 403092; +local secondWind = 425782; + +local frame = CreateFrame("Frame", "DismountAddonFrame"); +frame:RegisterEvent("UNIT_SPELLCAST_SENT"); + +local function OnEvent(self, event, ...) + if event == "UNIT_SPELLCAST_SENT" then + print(KittenDismount_SavedVars) + print(KittenDismount_SavedVars.surgeForward) + local unit, target, castGUID, spellID = ...; + if not IsFlying() then + if spellID == surgeForward or spellID == whirlingSurge or spellID == aerielHalt then + Dismount() + end + end + end +end + +frame:SetScript("OnEvent", OnEvent) + +-- Hi Kitten! diff --git a/settings.lua b/settings.lua new file mode 100644 index 0000000..dfa5d43 --- /dev/null +++ b/settings.lua @@ -0,0 +1,83 @@ +KittenDismount_SavedVars = {} + +local category = Settings.RegisterVerticalLayoutCategory("Kitten Dismount") + +local function OnSettingChanged(setting, value) + print(KittenDismount_dump(KittenDismount_SavedVars)) + print("hey") + print("Setting changed: ", setting:GetVariable(), value) + print(KittenDismount_SavedVars["surgeForward"]) +end + +local function RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) + local setting = Settings.RegisterAddOnSetting(category, variable, variableKey, KittenDismount_SavedVars, Settings.VarType.Boolean, name, defaultValue) + setting:SetValueChangedCallback(OnSettingChanged) + Settings.CreateCheckbox(category, setting, tooltip) +end + +function KittenDismount_dump(o) + if type(o) == 'table' then + local s = '{ ' + for k,v in pairs(o) do + if type(k) ~= 'number' then k = '"'..k..'"' end + s = s .. '['..k..'] = ' .. KittenDismount_dump(v) .. ',' + end + return s .. '} ' + else + return tostring(o) + end +end + + +do + local name = "Surge Forward" + local variable = "surgeForwardToggle" + local variableKey = "surgeForward" + local variableTbl = KittenDismount_SavedVars + local defaultValue = true + local tooltip = "Automatically dismount when Surge Forward is cast while on the ground." + + RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) +end +do + local name = "Skyward Ascent" + local variable = "skywardAscentToggle" + local variableKey = "skywardAscent" + local variableTbl = KittenDismount_SavedVars + local defaultValue = false + local tooltip = "Automatically dismount when Skyward Ascent is cast while on the ground." + + RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) +end +do + local name = "Whirling Surge" + local variable = "whirlingSurgeToggle" + local variableKey = "whirlingSurge" + local variableTbl = KittenDismount_SavedVars + local defaultValue = true + local tooltip = "Automatically dismount when Whirling Surge is cast while on the ground." + + RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) +end +do + local name = "Aeriel Halt" + local variable = "aerielHaltToggle" + local variableKey = "aerielHalt" + local variableTbl = KittenDismount_SavedVars + local defaultValue = true + local tooltip = "Automatically dismount when Aeriel Halt is cast while on the ground." + + RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) +end +do + local name = "Second Wind" + local variable = "secondWindToggle" + local variableKey = "secondWind" + local variableTbl = KittenDismount_SavedVars + local defaultValue = false + local tooltip = "Automatically dismount when Second Wind is cast while on the ground." + + RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) +end + +Settings.RegisterAddOnCategory(category) From d2691b97d1d6e46be381121a5a9a405ca7880165 Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Thu, 26 Sep 2024 15:32:14 -0400 Subject: [PATCH 2/4] Settings Mostly Work Now? --- KittenDismount.toc | 7 ++++--- dump.lua | 14 +++++++++++++ main.lua | 16 +++++++-------- settings.lua | 51 +++++++++++++++++++++------------------------- 4 files changed, 48 insertions(+), 40 deletions(-) create mode 100644 dump.lua diff --git a/KittenDismount.toc b/KittenDismount.toc index 4620992..a04cf07 100644 --- a/KittenDismount.toc +++ b/KittenDismount.toc @@ -1,10 +1,11 @@ ## Interface: 110002 -## Version: 0.0.1 -## Title: Easy Dismount +## Version: 0.0.2 +## Title: Kitten Easy Dismount ## Notes: Quick addon to dismount if you are on a flying mount, but on the ground. ## Author: Annika ## SavedVariables: KittenDismount_SavedVars -main.lua +dump.lua settings.lua +main.lua diff --git a/dump.lua b/dump.lua new file mode 100644 index 0000000..10f8ab1 --- /dev/null +++ b/dump.lua @@ -0,0 +1,14 @@ +function KittenDismount_dump(o) + if type(o) == 'table' then + local s = '{ ' + for k,v in pairs(o) do + if type(k) ~= 'number' then + k = '"'..k..'"' + end + s = s .. '['..k..'] = ' .. KittenDismount_dump(v) .. ',' + end + return s .. '} ' + else + return tostring(o) + end +end diff --git a/main.lua b/main.lua index 546dd7c..b6d932f 100644 --- a/main.lua +++ b/main.lua @@ -1,19 +1,11 @@ -local surgeForward = 372608; -local skywardAscent = 372610; -local whirlingSurge = 361584; -local aerielHalt = 403092; -local secondWind = 425782; - local frame = CreateFrame("Frame", "DismountAddonFrame"); frame:RegisterEvent("UNIT_SPELLCAST_SENT"); local function OnEvent(self, event, ...) if event == "UNIT_SPELLCAST_SENT" then - print(KittenDismount_SavedVars) - print(KittenDismount_SavedVars.surgeForward) local unit, target, castGUID, spellID = ...; if not IsFlying() then - if spellID == surgeForward or spellID == whirlingSurge or spellID == aerielHalt then + if KittenDismount_disabledSpells[spellID] then Dismount() end end @@ -22,4 +14,10 @@ end frame:SetScript("OnEvent", OnEvent) +local function OnAddonLoaded() + KittenDismount_SetDismountArray() +end + +EventUtil.ContinueOnAddOnLoaded("KittenDismount", OnAddonLoaded); + -- Hi Kitten! diff --git a/settings.lua b/settings.lua index dfa5d43..756847c 100644 --- a/settings.lua +++ b/settings.lua @@ -1,12 +1,26 @@ KittenDismount_SavedVars = {} +KittenDismount_disabledSpells = {} + +function KittenDismount_SetDismountArray() + local spells = { + surgeForward = 372608, + skywardAscent = 372610, + whirlingSurge = 361584, + aerielHalt = 403092, + secondWind = 425782, + } + local disabled = {} + + for key, value in pairs(spells) do + disabled[value] = KittenDismount_SavedVars[key] + end + KittenDismount_disabledSpells = disabled +end local category = Settings.RegisterVerticalLayoutCategory("Kitten Dismount") local function OnSettingChanged(setting, value) - print(KittenDismount_dump(KittenDismount_SavedVars)) - print("hey") - print("Setting changed: ", setting:GetVariable(), value) - print(KittenDismount_SavedVars["surgeForward"]) + KittenDismount_SetDismountArray() end local function RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) @@ -15,26 +29,11 @@ local function RegisterCheckbox(category, variable, variableKey, name, defaultVa Settings.CreateCheckbox(category, setting, tooltip) end -function KittenDismount_dump(o) - if type(o) == 'table' then - local s = '{ ' - for k,v in pairs(o) do - if type(k) ~= 'number' then k = '"'..k..'"' end - s = s .. '['..k..'] = ' .. KittenDismount_dump(v) .. ',' - end - return s .. '} ' - else - return tostring(o) - end -end - - do local name = "Surge Forward" local variable = "surgeForwardToggle" local variableKey = "surgeForward" - local variableTbl = KittenDismount_SavedVars - local defaultValue = true + local defaultValue = Settings.Default.True local tooltip = "Automatically dismount when Surge Forward is cast while on the ground." RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) @@ -43,8 +42,7 @@ do local name = "Skyward Ascent" local variable = "skywardAscentToggle" local variableKey = "skywardAscent" - local variableTbl = KittenDismount_SavedVars - local defaultValue = false + local defaultValue = Settings.Default.False local tooltip = "Automatically dismount when Skyward Ascent is cast while on the ground." RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) @@ -53,8 +51,7 @@ do local name = "Whirling Surge" local variable = "whirlingSurgeToggle" local variableKey = "whirlingSurge" - local variableTbl = KittenDismount_SavedVars - local defaultValue = true + local defaultValue = Settings.Default.True local tooltip = "Automatically dismount when Whirling Surge is cast while on the ground." RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) @@ -63,8 +60,7 @@ do local name = "Aeriel Halt" local variable = "aerielHaltToggle" local variableKey = "aerielHalt" - local variableTbl = KittenDismount_SavedVars - local defaultValue = true + local defaultValue = Settings.Default.True local tooltip = "Automatically dismount when Aeriel Halt is cast while on the ground." RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) @@ -73,8 +69,7 @@ do local name = "Second Wind" local variable = "secondWindToggle" local variableKey = "secondWind" - local variableTbl = KittenDismount_SavedVars - local defaultValue = false + local defaultValue = Settings.Default.False local tooltip = "Automatically dismount when Second Wind is cast while on the ground." RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) From e136d2511b50b25afae33eee91cbe6a8bfc37634 Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Thu, 26 Sep 2024 15:33:58 -0400 Subject: [PATCH 3/4] Grr --- settings.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.lua b/settings.lua index 756847c..c3ec345 100644 --- a/settings.lua +++ b/settings.lua @@ -17,7 +17,7 @@ function KittenDismount_SetDismountArray() KittenDismount_disabledSpells = disabled end -local category = Settings.RegisterVerticalLayoutCategory("Kitten Dismount") +local category = Settings.RegisterVerticalLayoutCategory("Kitten Easy Dismount") local function OnSettingChanged(setting, value) KittenDismount_SetDismountArray() From 0eb3836bd73f9e80a711859047ad31252ac2c9d4 Mon Sep 17 00:00:00 2001 From: Annika Merris Date: Mon, 30 Sep 2024 23:49:07 -0400 Subject: [PATCH 4/4] SETTINGS WORK! --- .vscode/settings.json | 10 +++ KittenDismount.lua | 169 ++++++++++++++++++++++++++++++++++++++++++ KittenDismount.toc | 8 +- main.lua | 23 ------ settings.lua | 78 ------------------- 5 files changed, 182 insertions(+), 106 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 KittenDismount.lua delete mode 100644 main.lua delete mode 100644 settings.lua diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ecb1d56 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "Lua.diagnostics.globals": [ + "CreateFrame", + "C_ChatInfo", + "DEFAULT_CHAT_FRAME", + "IsFlying", + "Dismount", + "Settings" + ] +} \ No newline at end of file diff --git a/KittenDismount.lua b/KittenDismount.lua new file mode 100644 index 0000000..aa2f915 --- /dev/null +++ b/KittenDismount.lua @@ -0,0 +1,169 @@ +------------------------------------------------------------------------------- +-- KittenDismount.lua +------------------------------------------------------------------------------- +--[[ +KittenDismount +Author: Anisa of Scarlet Crusade + +Usage: go to Options->AddOns->Kitten Easy Dismount +]] -- +KittenDismount = { + DefaultSettings = { + surgeForward = true, + skywardAscent = false, + whirlingSurge = true, + arielHalt = true, + secondWind = false, + Active = true, + }, + Version = "0.0.3", + VersionNumber = 3, + DataCode = "2", + Settings = {}, + Active = true, + Spells = { + surgeForward = 372608, + skywardAscent = 372610, + whirlingSurge = 361584, + aerielHalt = 403092, + secondWind = 425782, + }, +} +KittenDismountData = {} +KittenDismount.__index = KittenDismount +KittenDismount.disabledSpells = {} + + +-- Initialize the addon frame +local kittenDismountFrame = CreateFrame("Frame", "KittenDismount") +-- These are the event(s) that we listen for +kittenDismountFrame:RegisterEvent("VARIABLES_LOADED") +-- Function to "automatically" call the correct even function without having to have a gigantic block of if statements. +kittenDismountFrame:SetScript("OnEvent", function(this, event, ...) + KittenDismount[event](KittenDismount, ...) +end) + +-- Set up some other bits +local category = Settings.RegisterVerticalLayoutCategory("Kitten Easy Dismount") + +-- Event Handlers +function KittenDismount:UNIT_SPELLCAST_SENT(...) + local unit, target, castGUID, spellID = ...; + if ((not IsFlying()) and KittenDismount.disabledSpells[spellID]) then + Dismount() + end +end + +-- Setup stuff +function KittenDismount:VARIABLES_LOADED() + if (KittenDismountData.DataCode ~= self.DataCode) then + self:SetDefaults() + self:Print("New settings format detected, settings have been reset to default") + end + self.Settings = { + surgeForward = KittenDismountData.surgeForward, + skywardAscent = KittenDismountData.skywardAscent, + whirlingSurge = KittenDismountData.whirlingSurge, + arielHalt = KittenDismountData.arielHalt, + secondWind = KittenDismountData.secondWind, + } + self:SetDismountArray() + do + local name = "Surge Forward" + local variable = "surgeForwardToggle" + local variableKey = "surgeForward" + local defaultValue = Settings.Default.True + local tooltip = "Automatically dismount when Surge Forward is cast while on the ground." + + self:RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) + end + do + local name = "Skyward Ascent" + local variable = "skywardAscentToggle" + local variableKey = "skywardAscent" + local defaultValue = Settings.Default.False + local tooltip = "Automatically dismount when Skyward Ascent is cast while on the ground." + + self:RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) + end + do + local name = "Whirling Surge" + local variable = "whirlingSurgeToggle" + local variableKey = "whirlingSurge" + local defaultValue = Settings.Default.True + local tooltip = "Automatically dismount when Whirling Surge is cast while on the ground." + + self:RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) + end + do + local name = "Aeriel Halt" + local variable = "aerielHaltToggle" + local variableKey = "aerielHalt" + local defaultValue = Settings.Default.True + local tooltip = "Automatically dismount when Aeriel Halt is cast while on the ground." + + self:RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) + end + do + local name = "Second Wind" + local variable = "secondWindToggle" + local variableKey = "secondWind" + local defaultValue = Settings.Default.False + local tooltip = "Automatically dismount when Second Wind is cast while on the ground." + + self:RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) + end + Settings.RegisterAddOnCategory(category) + self:ActivateMod() +end + +function KittenDismount:SaveSettings() + KittenDismountData.DataCode = KittenDismount.DataCode + KittenDismountData.Active = KittenDismount.Active + KittenDismountData.surgeForward = KittenDismount.Settings.surgeForward + KittenDismountData.skywardAscent = KittenDismount.Settings.skywardAscent + KittenDismountData.whirlingSurge = KittenDismount.Settings.whirlingSurge + KittenDismountData.arielHalt = KittenDismount.Settings.arielHalt + KittenDismountData.secondWind = KittenDismount.Settings.secondWind +end +function KittenDismount:SetDefaults() + KittenDismount.Active = KittenDismountData.Active + KittenDismount.Settings.surgeForward = KittenDismount.DefaultSettings.surgeForward + KittenDismount.Settings.skywardAscent = KittenDismount.DefaultSettings.skywardAscent + KittenDismount.Settings.whirlingSurge = KittenDismount.DefaultSettings.whirlingSurge + KittenDismount.Settings.arielHalt = KittenDismount.DefaultSettings.arielHalt + KittenDismount.Settings.secondWind = KittenDismount.DefaultSettings.secondWind + self:SaveSettings() +end +function KittenDismount:ActivateMod() + if (KittenDismount.Active) then + kittenDismountFrame:RegisterEvent("UNIT_SPELLCAST_SENT") + else + kittenDismountFrame:UnregisterEvent("UNIT_SPELLCAST_SENT") + end +end + +-- Other misc functions +local function settingChanged(setting, value) + KittenDismount:SetDismountArray() +end +function KittenDismount:SetDismountArray() + local disabled = {} + + for key, value in pairs(KittenDismount.Spells) do + disabled[value] = KittenDismountData[key] + end + + self.disabledSpells = disabled +end +function KittenDismount:RegisterCheckbox(cat, variable, variableKey, name, defaultValue, tooltip) + local setting = Settings.RegisterAddOnSetting(cat, variable, variableKey, KittenDismountData, Settings.VarType.Boolean, name, defaultValue) + setting:SetValueChangedCallback(settingChanged) + Settings.CreateCheckbox(cat, setting, tooltip) +end +function KittenDismount:Print(message) + DEFAULT_CHAT_FRAME:AddMessage("[|c44ff44ffKittenDismount|r] " .. tostring(message)) +end +function KittenDismount:Error(message) + DEFAULT_CHAT_FRAME:AddMessage("[|c44ff44ffKittenDismount|r] |cff0000ff" .. tostring(message) .. "|r") +end diff --git a/KittenDismount.toc b/KittenDismount.toc index a04cf07..5f09846 100644 --- a/KittenDismount.toc +++ b/KittenDismount.toc @@ -1,11 +1,9 @@ ## Interface: 110002 -## Version: 0.0.2 +## Version: 0.0.4 ## Title: Kitten Easy Dismount ## Notes: Quick addon to dismount if you are on a flying mount, but on the ground. ## Author: Annika -## SavedVariables: KittenDismount_SavedVars +## SavedVariables: KittenDismountData -dump.lua -settings.lua -main.lua +KittenDismount.lua diff --git a/main.lua b/main.lua deleted file mode 100644 index b6d932f..0000000 --- a/main.lua +++ /dev/null @@ -1,23 +0,0 @@ -local frame = CreateFrame("Frame", "DismountAddonFrame"); -frame:RegisterEvent("UNIT_SPELLCAST_SENT"); - -local function OnEvent(self, event, ...) - if event == "UNIT_SPELLCAST_SENT" then - local unit, target, castGUID, spellID = ...; - if not IsFlying() then - if KittenDismount_disabledSpells[spellID] then - Dismount() - end - end - end -end - -frame:SetScript("OnEvent", OnEvent) - -local function OnAddonLoaded() - KittenDismount_SetDismountArray() -end - -EventUtil.ContinueOnAddOnLoaded("KittenDismount", OnAddonLoaded); - --- Hi Kitten! diff --git a/settings.lua b/settings.lua deleted file mode 100644 index c3ec345..0000000 --- a/settings.lua +++ /dev/null @@ -1,78 +0,0 @@ -KittenDismount_SavedVars = {} -KittenDismount_disabledSpells = {} - -function KittenDismount_SetDismountArray() - local spells = { - surgeForward = 372608, - skywardAscent = 372610, - whirlingSurge = 361584, - aerielHalt = 403092, - secondWind = 425782, - } - local disabled = {} - - for key, value in pairs(spells) do - disabled[value] = KittenDismount_SavedVars[key] - end - KittenDismount_disabledSpells = disabled -end - -local category = Settings.RegisterVerticalLayoutCategory("Kitten Easy Dismount") - -local function OnSettingChanged(setting, value) - KittenDismount_SetDismountArray() -end - -local function RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) - local setting = Settings.RegisterAddOnSetting(category, variable, variableKey, KittenDismount_SavedVars, Settings.VarType.Boolean, name, defaultValue) - setting:SetValueChangedCallback(OnSettingChanged) - Settings.CreateCheckbox(category, setting, tooltip) -end - -do - local name = "Surge Forward" - local variable = "surgeForwardToggle" - local variableKey = "surgeForward" - local defaultValue = Settings.Default.True - local tooltip = "Automatically dismount when Surge Forward is cast while on the ground." - - RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) -end -do - local name = "Skyward Ascent" - local variable = "skywardAscentToggle" - local variableKey = "skywardAscent" - local defaultValue = Settings.Default.False - local tooltip = "Automatically dismount when Skyward Ascent is cast while on the ground." - - RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) -end -do - local name = "Whirling Surge" - local variable = "whirlingSurgeToggle" - local variableKey = "whirlingSurge" - local defaultValue = Settings.Default.True - local tooltip = "Automatically dismount when Whirling Surge is cast while on the ground." - - RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) -end -do - local name = "Aeriel Halt" - local variable = "aerielHaltToggle" - local variableKey = "aerielHalt" - local defaultValue = Settings.Default.True - local tooltip = "Automatically dismount when Aeriel Halt is cast while on the ground." - - RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) -end -do - local name = "Second Wind" - local variable = "secondWindToggle" - local variableKey = "secondWind" - local defaultValue = Settings.Default.False - local tooltip = "Automatically dismount when Second Wind is cast while on the ground." - - RegisterCheckbox(category, variable, variableKey, name, defaultValue, tooltip) -end - -Settings.RegisterAddOnCategory(category)