From dd9f9886b4f96c4f939767b0adb0da28c02cb8d6 Mon Sep 17 00:00:00 2001
From: Bluewhale1337 <295648290+Bluewhale1337@users.noreply.github.com>
Date: Tue, 21 Jul 2026 09:02:33 +0200
Subject: [PATCH] feat: implement automatic skin swapping based on group size
and add horizontal grid layout options
---
HealBotBlue.toc | 1 +
HealBot_Data.lua | 10 +++
HealBot_Options.lua | 2 +
HealBot_Options.xml | 9 +++
HealBot_Options_Auto.lua | 79 ++++++++++++++++++++
HealBot_Options_Auto.xml | 152 ++++++++++++++++++++++++++++++++++++++
HealBot_Options_Skins.lua | 18 +++++
HealBot_Options_Skins.xml | 36 ++++++++-
HealBot_View_Layout.lua | 93 +++++++++++++++++++----
9 files changed, 385 insertions(+), 15 deletions(-)
create mode 100644 HealBot_Options_Auto.lua
create mode 100644 HealBot_Options_Auto.xml
diff --git a/HealBotBlue.toc b/HealBotBlue.toc
index 1713e79..cb73825 100644
--- a/HealBotBlue.toc
+++ b/HealBotBlue.toc
@@ -27,3 +27,4 @@ HealBot_Options_CDC.xml
HealBot_Options_Skins.xml
HealBot_Options_Buffs.xml
HealBot_Options_Chat.xml
+HealBot_Options_Auto.xml
diff --git a/HealBot_Data.lua b/HealBot_Data.lua
index a6fe2bf..e0a5377 100644
--- a/HealBot_Data.lua
+++ b/HealBot_Data.lua
@@ -181,7 +181,17 @@ HealBot_ConfigDefaults = {
Current_Skin = "Modern Flat",
Skin_ID = 1,
Skins = {"Modern Flat", HEALBOT_SKINS_STD, "HealBot Party", "HealBot Raid", "Alteric Valley"},
+ AutoSwap_Enabled = 0,
+ AutoSwap_Profiles = {
+ [1] = "Modern Flat", -- Solo
+ [2] = "HealBot Party", -- Party (2-5)
+ [3] = "HealBot Raid", -- Raid 15 (6-15)
+ [4] = "HealBot Raid", -- Raid 25 (16-25)
+ [5] = "HealBot Raid", -- Raid 40 (26-40)
+ },
numcols = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 4, ["Alteric Valley"] = 2, ["Modern Flat"] = 1},
+ bmaxrows = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
+ GridOrientation = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
btexture = {[HEALBOT_SKINS_STD] = 8,["HealBot Party"] = 6, ["HealBot Raid"] = 7, ["Alteric Valley"] = 9, ["Modern Flat"] = 10},
bcspace = {[HEALBOT_SKINS_STD] = 4, ["HealBot Party"] = 4, ["HealBot Raid"] = 2, ["Alteric Valley"] = 2, ["Modern Flat"] = 4},
brspace = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 2, ["HealBot Raid"] = 2, ["Alteric Valley"] = 1, ["Modern Flat"] = 2},
diff --git a/HealBot_Options.lua b/HealBot_Options.lua
index 0a30e9c..f3ebf3e 100644
--- a/HealBot_Options.lua
+++ b/HealBot_Options.lua
@@ -314,6 +314,8 @@ function HealBot_Options_SetSkins()
HealBot_Options_BarHeightS:SetValue(HealBot_Config.bheight[HealBot_Config.Current_Skin])
HealBot_Options_BarWidthS:SetValue(HealBot_Config.bwidth[HealBot_Config.Current_Skin])
HealBot_Options_BarNumColsS:SetValue(HealBot_Config.numcols[HealBot_Config.Current_Skin])
+ HealBot_Options_BarMaxRowsS:SetValue(HealBot_Config.bmaxrows[HealBot_Config.Current_Skin] or 0)
+ HealBot_Options_GridOrientation:SetChecked((HealBot_Config.GridOrientation[HealBot_Config.Current_Skin] == 2) and 1 or nil)
HealBot_Options_BarBRSpaceS:SetValue(HealBot_Config.brspace[HealBot_Config.Current_Skin])
HealBot_Options_BarBCSpaceS:SetValue(HealBot_Config.bcspace[HealBot_Config.Current_Skin])
HealBot_Options_FramePaddingS:SetValue((HealBot_Config.bpadding and HealBot_Config.bpadding[HealBot_Config.Current_Skin]) or 10)
diff --git a/HealBot_Options.xml b/HealBot_Options.xml
index 31db38a..c2c12a2 100644
--- a/HealBot_Options.xml
+++ b/HealBot_Options.xml
@@ -206,6 +206,15 @@
+