Skip to content

Commit

Permalink
Added Config Categories
Browse files Browse the repository at this point in the history
Added code to remove deprecated config options from user config files
  • Loading branch information
DerpleMQ2 committed Jan 1, 2024
1 parent 1da4924 commit 4bdc50a
Show file tree
Hide file tree
Showing 7 changed files with 186 additions and 99 deletions.
40 changes: 20 additions & 20 deletions class_configs/shd_class_config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1103,26 +1103,26 @@ local _ClassConfig = {
},
},
['DefaultConfig'] = {
['Mode'] = { DisplayName = "Mode", Tooltip = "Select the Combat Mode for this Toon", Type = "Custom", RequiresLoadoutChange = true, Default = 1, Min = 1, Max = 3 },
['DoTorrent'] = { DisplayName = "Cast Torrents", Tooltip = "Enable casting Torrent spells.", RequiresLoadoutChange = true, Default = true },
['DoDireTap'] = { DisplayName = "Cast Dire Taps", Tooltip = "Enable casting Dire Tap spells.", RequiresLoadoutChange = true, Default = true },
['DoBandolier'] = { DisplayName = "Use Bandolier", Tooltip = "Enable Swapping of items using the bandolier.", Default = false },
['DoBurn'] = { DisplayName = "Enable Burning", Tooltip = "Put character in 'burn' mode", Default = false },
['DoSnare'] = { DisplayName = "Cast Snares", Tooltip = "Enable casting Snare spells.", Default = true },
['DoDot'] = { DisplayName = "Cast DOTs", Tooltip = "Enable casting Damage Over Time spells.", Default = true },
['DoAE'] = { DisplayName = "Use AE Taunts", Tooltip = "Enable casting AE Taunt spells.", Default = true },
['AeTauntCnt'] = { DisplayName = "AE Taunt Count", Tooltip = "Minimum number of haters before using AE Taunt.", Default = 2, Min = 1, Max = 10 },
['HPStopDOT'] = { DisplayName = "HP Stop DOTs", Tooltip = "Stop casting DOTs when the mob hits [x] HP %.", Default = 30, Min = 1, Max = 100 },
['ManaToNuke'] = { DisplayName = "Mana to Nuke", Tooltip = "Minimum % Mana in order to continue to cast nukes.", Default = 30, Min = 1, Max = 100 },
['FlashHP'] = { DisplayName = "Flash HP", Tooltip = "TODO: No Idea", Default = 35, Min = 1, Max = 100 },
['StartBigTap'] = { DisplayName = "Use Big Taps", Tooltip = "Your HP % before we use Big Taps.", Default = 80, Min = 1, Max = 100 },
['StartLifeTap'] = { DisplayName = "Use Life Taps", Tooltip = "Your HP % before we use Life Taps.", Default = 100, Min = 1, Max = 100 },
['BurnSize'] = { DisplayName = "Burn Size", Tooltip = "0=Off, 1=Small, 2=Medium, 3=Large", Default = 1, Min = 0, Max = 3 },
['BurnAuto'] = { DisplayName = "Auto Burn", Tooltip = "Automatically burn", Default = false },
['DoPet'] = { DisplayName = "Cast Pet", Tooltip = "Enable casting Pet spells.", Default = true },
['PetEngagePct'] = { DisplayName = "Pet Engage HPs", Tooltip = "Send in pet when target hits [x] HP %.", Default = 90, Min = 1, Max = 100 },
['BurnMobCount'] = { DisplayName = "Burn Mob Count", Tooltip = "Number of haters before we start burning.", Default = 3, Min = 1, Max = 10 },
['BurnNamed'] = { DisplayName = "Burn Named", Tooltip = "Automatically burn named mobs.", Default = false },
['Mode'] = { DisplayName = "Mode", Category = "Combat", Tooltip = "Select the Combat Mode for this Toon", Type = "Custom", RequiresLoadoutChange = true, Default = 1, Min = 1, Max = 3 },
['DoTorrent'] = { DisplayName = "Cast Torrents", Category = "Spells and Abilities", Tooltip = "Enable casting Torrent spells.", RequiresLoadoutChange = true, Default = true },
['DoDireTap'] = { DisplayName = "Cast Dire Taps", Category = "Spells and Abilities", Tooltip = "Enable casting Dire Tap spells.", RequiresLoadoutChange = true, Default = true },
['DoBandolier'] = { DisplayName = "Use Bandolier", Category = "Equipment", Tooltip = "Enable Swapping of items using the bandolier.", Default = false },
['DoBurn'] = { DisplayName = "Enable Burning", Category = "Spells and Abilities", Tooltip = "Put character in 'burn' mode", Default = false },
['DoSnare'] = { DisplayName = "Cast Snares", Category = "Spells and Abilities", Tooltip = "Enable casting Snare spells.", Default = true },
['DoDot'] = { DisplayName = "Cast DOTs", Category = "Spells and Abilities", Tooltip = "Enable casting Damage Over Time spells.", Default = true },
['DoAE'] = { DisplayName = "Use AE Taunts", Category = "Spells and Abilities", Tooltip = "Enable casting AE Taunt spells.", Default = true },
['AeTauntCnt'] = { DisplayName = "AE Taunt Count", Category = "Spells and Abilities", Tooltip = "Minimum number of haters before using AE Taunt.", Default = 2, Min = 1, Max = 10 },
['HPStopDOT'] = { DisplayName = "HP Stop DOTs", Category = "Spells and Abilities", Tooltip = "Stop casting DOTs when the mob hits [x] HP %.", Default = 30, Min = 1, Max = 100 },
['ManaToNuke'] = { DisplayName = "Mana to Nuke", Category = "Spells and Abilities", Tooltip = "Minimum % Mana in order to continue to cast nukes.", Default = 30, Min = 1, Max = 100 },
['FlashHP'] = { DisplayName = "Flash HP", Category = "Combat", Tooltip = "TODO: No Idea", Default = 35, Min = 1, Max = 100 },
['StartBigTap'] = { DisplayName = "Use Big Taps", Category = "Spells and Abilities", Tooltip = "Your HP % before we use Big Taps.", Default = 80, Min = 1, Max = 100 },
['StartLifeTap'] = { DisplayName = "Use Life Taps", Category = "Spells and Abilities", Tooltip = "Your HP % before we use Life Taps.", Default = 100, Min = 1, Max = 100 },
['BurnSize'] = { DisplayName = "Burn Size", Category = "Combat", Tooltip = "0=Off, 1=Small, 2=Medium, 3=Large", Default = 1, Min = 0, Max = 3 },
['BurnAuto'] = { DisplayName = "Auto Burn", Category = "Combat", Tooltip = "Automatically burn", Default = false },
['DoPet'] = { DisplayName = "Cast Pet", Category = "Pet", Tooltip = "Enable casting Pet spells.", Default = true },
['PetEngagePct'] = { DisplayName = "Pet Engage HPs", Category = "Combat", Tooltip = "Send in pet when target hits [x] HP %.", Default = 90, Min = 1, Max = 100 },
['BurnMobCount'] = { DisplayName = "Burn Mob Count", Category = "Combat", Tooltip = "Number of haters before we start burning.", Default = 3, Min = 1, Max = 10 },
['BurnNamed'] = { DisplayName = "Burn Named", Category = "Combat", Tooltip = "Automatically burn named mobs.", Default = false },
},
}

Expand Down
4 changes: 3 additions & 1 deletion init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ local function RGMercsGUI()
ImGui.Text("Stuck To: " .. (mq.TLO.Stick.Active() and (mq.TLO.Stick.StickTargetName() or "None") or "None"))
if ImGui.CollapsingHeader("Config Options") then
local newSettings = RGMercConfig:GetSettings()
newSettings, pressed, _ = RGMercUtils.RenderSettings(newSettings, RGMercConfig.DefaultConfig)
newSettings, pressed, _ = RGMercUtils.RenderSettings(newSettings, RGMercConfig.DefaultConfig, RGMercConfig.DefaultCategories)
if pressed then
RGMercConfig:SetSettings(newSettings)
RGMercConfig:SaveSettings(true)
Expand All @@ -138,6 +138,8 @@ local function RGMercsGUI()
local dropped, newItem = renderDragDropForItem("Drop Mount Item")
if dropped then
RGMercsLogger.log_debug("New item dropped: %s", newItem)
RGMercConfig:GetSettings().MountItem = newItem
RGMercConfig:SaveSettings(true)
end

dropped, newItem = renderDragDropForItem("Drop Shrink Item")
Expand Down
42 changes: 32 additions & 10 deletions modules/movement.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ local mq = require('mq')
local RGMercsLogger = require("rgmercs.utils.rgmercs_logger")
local RGMercUtils = require("rgmercs.utils.rgmercs_utils")
local ICONS = require('mq.Icons')
local Set = require("mq.Set")

local Module = { _version = '0.1a', name = "Movement", author = 'Derple' }
Module.__index = Module
Expand All @@ -11,15 +12,22 @@ Module.TempSettings = {}
Module.TempSettings.CampZoneId = 0

Module.DefaultConfig = {
['AutoCampRadius'] = { DisplayName = "Auto Camp Radius", Tooltip = "Return to camp after you get this far away", Default = 60, Min = 10, Max = 150 },
['ChaseOn'] = { DisplayName = "Chase On", Tooltip = "Chase your Chase Target.", Default = false },
['ChaseDistance'] = { DisplayName = "Chase Distance", Tooltip = "How Far your Chase Target can get before you Chase.", Default = 25, Min = 5, Max = 100 },
['ChaseTarget'] = { DisplayName = "Chase Target", Tooltip = "Character you are Chasing", Type = "Custom", Default = "" },
['ReturnToCamp'] = { DisplayName = "Return To Camp", Tooltip = "Return to Camp After Combat (requires you to /rgl campon)", Default = (not RGMercConfig.Constants.RGTank:contains(mq.TLO.Me.Class.ShortName())) },
['MaintainCampfire'] = { DisplayName = "Maintain Campfire", Tooltip = "0: Off; 1: Regular Fellowship; 2: Empowered Fellowship; 36: Scaled Wolf", Default = 1, Min = 0, Max = 36 },
['RequireLoS'] = { DisplayName = "Require LOS", Tooltip = "Require LOS when using /nav", Default = RGMercConfig.Constants.RGCasters:contains(mq.TLO.Me.Class.ShortName()) },
['AutoCampRadius'] = { DisplayName = "Auto Camp Radius", Category = "Camp", Tooltip = "Return to camp after you get this far away", Default = 60, Min = 10, Max = 150 },
['ChaseOn'] = { DisplayName = "Chase On", Category = "Chase", Tooltip = "Chase your Chase Target.", Default = false },
['ChaseDistance'] = { DisplayName = "Chase Distance", Category = "Chase", Tooltip = "How Far your Chase Target can get before you Chase.", Default = 25, Min = 5, Max = 100 },
['ChaseTarget'] = { DisplayName = "Chase Target", Category = "Chase", Tooltip = "Character you are Chasing", Type = "Custom", Default = "" },
['ReturnToCamp'] = { DisplayName = "Return To Camp", Category = "Camp", Tooltip = "Return to Camp After Combat (requires you to /rgl campon)", Default = (not RGMercConfig.Constants.RGTank:contains(mq.TLO.Me.Class.ShortName())) },
['MaintainCampfire'] = { DisplayName = "Maintain Campfire", Category = "Camp", Tooltip = "0: Off; 1: Regular Fellowship; 2: Empowered Fellowship; 36: Scaled Wolf", Default = 1, Min = 0, Max = 36 },
['RequireLoS'] = { DisplayName = "Require LOS", Category = "Chase", Tooltip = "Require LOS when using /nav", Default = RGMercConfig.Constants.RGCasters:contains(mq.TLO.Me.Class.ShortName()) },
}

Module.DefaultCategories = Set.new({})
for _, v in pairs(Module.DefaultConfig) do
if v.Type ~= "Custom" then
Module.DefaultCategories:add(v.Category)
end
end

local function getConfigFileName()
local server = mq.TLO.EverQuest.Server()
server = server:gsub(" ", "")
Expand Down Expand Up @@ -52,6 +60,14 @@ function Module:LoadSettings()
for k, v in pairs(self.DefaultConfig) do
self.settings[k] = self.settings[k] or v.Default
end

-- Remove Deprecated options
for k, _ in pairs(self.settings) do
if not self.DefaultConfig[k] then
self.settings[k] = nil
RGMercsLogger.log_info("\aySettings [\am%s\ay] has been deprecated -- removing from your config.", k)
end
end
end

function Module.New()
Expand Down Expand Up @@ -196,7 +212,7 @@ function Module:Render()
local chaseSpawn = mq.TLO.Spawn("pc =" .. (self.settings.ChaseTarget or "NoOne"))

if ImGui.CollapsingHeader("Config Options") then
self.settings, pressed, _ = RGMercUtils.RenderSettings(self.settings, self.DefaultConfig)
self.settings, pressed, _ = RGMercUtils.RenderSettings(self.settings, self.DefaultConfig, self.DefaultCategories)
if pressed then
self:SaveSettings(true)
end
Expand Down Expand Up @@ -275,8 +291,14 @@ function Module:GiveTime(combat_state)
return
end

if combat_state == "Downtime" and RGMercConfig:GetSettings().DoShrink and mq.TLO.Me.Height() > 2 then
RGMercUtils.UseItem(RGMercConfig:GetSettings().ShrinkItem, mq.TLO.Me.ID())
if combat_state == "Downtime" then
if RGMercUtils.ShouldShrink() then
RGMercUtils.UseItem(RGMercConfig:GetSettings().ShrinkItem, mq.TLO.Me.ID())
end

if RGMercUtils.ShouldMount() then
RGMercUtils.UseItem(RGMercConfig:GetSettings().MountItem, mq.TLO.Me.ID())
end
end

if RGMercUtils.DoCamp() then
Expand Down
29 changes: 22 additions & 7 deletions modules/shd.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
local mq = require('mq')
local RGMercsLogger = require("rgmercs.utils.rgmercs_logger")
local RGMercUtils = require("rgmercs.utils.rgmercs_utils")
local Set = require("mq.Set")

local custom_config_file = mq.configDir .. "/rgmercs/class_configs/shd_class_config.lua"

Expand All @@ -22,12 +23,19 @@ if not shdClassConfig then
end


local Module = { _version = '0.1a', name = "ShadowKnight", author = 'Derple' }
Module.__index = Module
Module.LastPetCmd = 0
Module.SpellLoadOut = {}
Module.ResolvedActionMap = {}
Module.TempSettings = {}
local Module = { _version = '0.1a', name = "ShadowKnight", author = 'Derple' }
Module.__index = Module
Module.LastPetCmd = 0
Module.SpellLoadOut = {}
Module.ResolvedActionMap = {}
Module.TempSettings = {}

Module.DefaultCategories = Set.new({})
for _, v in pairs(shdClassConfig.DefaultConfig) do
if v.Type ~= "Custom" then
Module.DefaultCategories:add(v.Category)
end
end

-- Track the state of rotations between frames
Module.TempSettings.RotationStates = {
Expand Down Expand Up @@ -71,6 +79,13 @@ function Module:LoadSettings()
self.settings[k] = self.settings[k] or v.Default
end

-- Remove Deprecated options
for k, _ in pairs(self.settings) do
if not shdClassConfig.DefaultConfig[k] then
self.settings[k] = nil
RGMercsLogger.log_info("\aySettings [\am%s\ay] has been deprecated -- removing from your config.", k)
end
end
newCombatMode = true
end

Expand Down Expand Up @@ -133,7 +148,7 @@ function Module:Render()
end

if ImGui.CollapsingHeader("Config Options") then
self.settings, pressed, loadoutChange = RGMercUtils.RenderSettings(self.settings, shdClassConfig.DefaultConfig)
self.settings, pressed, loadoutChange = RGMercUtils.RenderSettings(self.settings, shdClassConfig.DefaultConfig, self.DefaultCategories)
if pressed then
self:SaveSettings(true)
newCombatMode = newCombatMode or loadoutChange
Expand Down

0 comments on commit 4bdc50a

Please sign in to comment.