Merge pull request 'settings' (#1) from settings into main

Reviewed-on: https://forgejo.merr.is/annika/KittenDismount/pulls/1
This commit is contained in:
Annika Merris 2024-09-30 23:49:56 -04:00
commit 89db3420fc
4 changed files with 202 additions and 0 deletions

10
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,10 @@
{
"Lua.diagnostics.globals": [
"CreateFrame",
"C_ChatInfo",
"DEFAULT_CHAT_FRAME",
"IsFlying",
"Dismount",
"Settings"
]
}

169
KittenDismount.lua Normal file
View file

@ -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

9
KittenDismount.toc Normal file
View file

@ -0,0 +1,9 @@
## Interface: 110002
## 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: KittenDismountData
KittenDismount.lua

14
dump.lua Normal file
View file

@ -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