mirror of
https://github.com/Bluewhale1337/HealBotBlue.git
synced 2026-11-10 03:57:37 +00:00
feat: initialize HealBotBlue addon with core controller, options, locales, and view components
This commit is contained in:
@@ -417,6 +417,13 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
||||
|
||||
HealBot_InitData();
|
||||
|
||||
if HealBot_Config and HealBot_Config.CDCOverlay == 6 and not HealBot_Config.CDCOverlay_v2 then
|
||||
HealBot_Config.CDCOverlay = 7
|
||||
end
|
||||
if HealBot_Config then
|
||||
HealBot_Config.CDCOverlay_v2 = 1
|
||||
end
|
||||
|
||||
if not HealBot_PartyFrameHooked then
|
||||
local origShowPartyFrame = ShowPartyFrame;
|
||||
ShowPartyFrame = function()
|
||||
@@ -436,6 +443,7 @@ function HealBot_OnEvent_VariablesLoaded(this)
|
||||
HealBot_BonusScanner:ScanEquipment();
|
||||
|
||||
HealBot_Action_ShowFrame();
|
||||
HealBot_Action_ResetSkin();
|
||||
|
||||
this:RegisterEvent("ZONE_CHANGED_NEW_AREA");
|
||||
this:RegisterEvent("PLAYER_REGEN_DISABLED");
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
@@ -427,3 +427,4 @@ HEALBOT_OPTIONS_CDCOVERLAY_GLOW = "Glow Effect";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME = "Glow + Frame";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE = "Disabled";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED = "Animated";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMFRAME = "Animated + Frame";
|
||||
|
||||
@@ -457,3 +457,4 @@ HEALBOT_OPTIONS_CDCOVERLAY_GLOW = "Glow Effect";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME = "Glow + Frame";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE = "Disabled";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED = "Animated";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMFRAME = "Animated + Frame";
|
||||
|
||||
@@ -408,3 +408,4 @@ HEALBOT_OPTIONS_CDCOVERLAY_GLOW = "Glow Effect";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME = "Glow + Frame";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE = "Disabled";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED = "Animated";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMFRAME = "Animated + Frame";
|
||||
|
||||
@@ -402,3 +402,4 @@ HEALBOT_OPTIONS_CDCOVERLAY_GLOW = "Glow Effect";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME = "Glow + Frame";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE = "Disabled";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED = "Animated";
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMFRAME = "Animated + Frame";
|
||||
|
||||
@@ -283,6 +283,12 @@ HealBot_ConfigDefaults = {
|
||||
bcolorming = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||
bcolorminb = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||
bfont = {[HEALBOT_SKINS_STD] = "Fonts\\FRIZQT__.TTF", ["HealBot Party"] = "Fonts\\FRIZQT__.TTF", ["HealBot Raid"] = "Fonts\\FRIZQT__.TTF", ["Alteric Valley"] = "Fonts\\FRIZQT__.TTF", ["Modern Flat"] = "Fonts\\FRIZQT__.TTF"},
|
||||
bframe = {[HEALBOT_SKINS_STD] = 0, ["HealBot Party"] = 0, ["HealBot Raid"] = 0, ["Alteric Valley"] = 0, ["Modern Flat"] = 0},
|
||||
bframewidth = {[HEALBOT_SKINS_STD] = 10, ["HealBot Party"] = 10, ["HealBot Raid"] = 10, ["Alteric Valley"] = 10, ["Modern Flat"] = 10},
|
||||
bframecolr = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
bframecolg = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
bframecolb = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
bframecola = {[HEALBOT_SKINS_STD] = 1, ["HealBot Party"] = 1, ["HealBot Raid"] = 1, ["Alteric Valley"] = 1, ["Modern Flat"] = 1},
|
||||
ShowTooltip = 1,
|
||||
ShowManaBars = 0,
|
||||
ManaBarsHealersOnly = 0,
|
||||
|
||||
@@ -216,6 +216,16 @@ function HealBot_Returned_Colours()
|
||||
HealBot_Config.bcolorminr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.bcolorming[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.bcolorminb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
|
||||
elseif HealBot_ColourObjWaiting=="BarFrame" then
|
||||
if not HealBot_Config.bframecolr then HealBot_Config.bframecolr = {} end
|
||||
if not HealBot_Config.bframecolg then HealBot_Config.bframecolg = {} end
|
||||
if not HealBot_Config.bframecolb then HealBot_Config.bframecolb = {} end
|
||||
if not HealBot_Config.bframecola then HealBot_Config.bframecola = {} end
|
||||
HealBot_Config.bframecolr[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.bframecolg[HealBot_Config.Current_Skin],
|
||||
HealBot_Config.bframecolb[HealBot_Config.Current_Skin] = ColorPickerFrame:GetColorRGB();
|
||||
HealBot_Config.bframecola[HealBot_Config.Current_Skin] = A;
|
||||
HealBot_Action_ResetSkin()
|
||||
else
|
||||
HealBot_Config.CDCBarColour[HealBot_ColourObjWaiting].R,
|
||||
HealBot_Config.CDCBarColour[HealBot_ColourObjWaiting].G,
|
||||
@@ -408,6 +418,16 @@ function HealBot_Options_SetSkins()
|
||||
local is1pxBorder = (HealBot_Config.bborder[HealBot_Config.Current_Skin] == 1)
|
||||
HealBot_Options_1pxBorders:SetChecked(is1pxBorder and 1 or nil)
|
||||
|
||||
local isBarFrame = (HealBot_Config.bframe and HealBot_Config.bframe[HealBot_Config.Current_Skin] == 1)
|
||||
HealBot_Options_BarFrame:SetChecked(isBarFrame and 1 or nil)
|
||||
|
||||
local frameWidth = (HealBot_Config.bframewidth and HealBot_Config.bframewidth[HealBot_Config.Current_Skin]) or 10
|
||||
HealBot_Options_BarFrameWidthS:SetValue(frameWidth)
|
||||
|
||||
if HealBot_Options_Skins_ScrollFrame then
|
||||
HealBot_Options_Skins_ScrollFrame:UpdateScrollChildRect()
|
||||
end
|
||||
|
||||
HealBot_SetSkinColours()
|
||||
if HealBot_Config.Current_Skin==HEALBOT_SKINS_STD then
|
||||
HealBot_Options_DeleteSkin:Disable();
|
||||
|
||||
@@ -51,6 +51,7 @@ function HealBot_Options_CDCOverlay_DropDown()
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOW or "Glow Effect",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_GLOWFRAME or "Glow + Frame",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMATED or "Animated",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_ANIMFRAME or "Animated + Frame",
|
||||
HEALBOT_OPTIONS_CDCOVERLAY_NONE or "Disabled",
|
||||
};
|
||||
for i=1, getn(list), 1 do
|
||||
|
||||
@@ -129,6 +129,12 @@ function HealBot_SkinColorpick_OnClick(SkinType)
|
||||
local g = HealBot_Config.bcolorming and HealBot_Config.bcolorming[HealBot_Config.Current_Skin] or 0.0
|
||||
local b = HealBot_Config.bcolorminb and HealBot_Config.bcolorminb[HealBot_Config.Current_Skin] or 0.0
|
||||
HealBot_UseColourPick(r, g, b, 1.0)
|
||||
elseif SkinType=="BarFrame" then
|
||||
local r = (HealBot_Config.bframecolr and HealBot_Config.bframecolr[HealBot_Config.Current_Skin]) or 1.0
|
||||
local g = (HealBot_Config.bframecolg and HealBot_Config.bframecolg[HealBot_Config.Current_Skin]) or 1.0
|
||||
local b = (HealBot_Config.bframecolb and HealBot_Config.bframecolb[HealBot_Config.Current_Skin]) or 1.0
|
||||
local a = (HealBot_Config.bframecola and HealBot_Config.bframecola[HealBot_Config.Current_Skin]) or 1.0
|
||||
HealBot_UseColourPick(r, g, b, a)
|
||||
end
|
||||
end
|
||||
-- HealBot_SetSkinColours: Applies skin configuration to UI elements.
|
||||
@@ -184,6 +190,13 @@ function HealBot_SetSkinColours()
|
||||
HealBot_Config.babortcolr[skin], HealBot_Config.babortcolg[skin],
|
||||
HealBot_Config.babortcolb[skin], HealBot_Config.babortcola[skin]
|
||||
)
|
||||
if HealBot_BarFrameColorpick then
|
||||
local bfr = (HealBot_Config.bframecolr and HealBot_Config.bframecolr[skin]) or 1.0
|
||||
local bfg = (HealBot_Config.bframecolg and HealBot_Config.bframecolg[skin]) or 1.0
|
||||
local bfb = (HealBot_Config.bframecolb and HealBot_Config.bframecolb[skin]) or 1.0
|
||||
local bfa = (HealBot_Config.bframecola and HealBot_Config.bframecola[skin]) or 1.0
|
||||
HealBot_BarFrameColorpick:SetStatusBarColor(bfr, bfg, bfb, bfa)
|
||||
end
|
||||
|
||||
-- 4. Setup Main Panel Backdrop (Fixed scoping bugs)
|
||||
local borderStyle = HealBot_Config.bborder[skin] or 2
|
||||
|
||||
@@ -43,6 +43,19 @@ function HealBot_Options_BarMaxRowsS_OnValueChanged(this)
|
||||
HealBot_Action_PartyChanged()
|
||||
end
|
||||
|
||||
function HealBot_Options_BarFrame_OnClick(this)
|
||||
if not HealBot_Config.bframe then HealBot_Config.bframe = {} end
|
||||
HealBot_Config.bframe[HealBot_Config.Current_Skin] = (this:GetChecked() and 1 or 0)
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
|
||||
function HealBot_Options_BarFrameWidthS_OnValueChanged(this)
|
||||
if not HealBot_Config.bframewidth then HealBot_Config.bframewidth = {} end
|
||||
HealBot_Config.bframewidth[HealBot_Config.Current_Skin] = this:GetValue()
|
||||
getglobal(this:GetName().."Text"):SetText(this.text .. ": " .. this:GetValue())
|
||||
HealBot_Action_ResetSkin()
|
||||
end
|
||||
|
||||
function HealBot_Options_GridOrientationDD_OnLoad(this)
|
||||
UIDropDownMenu_Initialize(this, HealBot_Options_GridOrientationDD_Initialize);
|
||||
UIDropDownMenu_SetWidth(110, this);
|
||||
@@ -139,6 +152,12 @@ function HealBot_Options_NewSkinb_OnClick(this)
|
||||
if not HealBot_Config.bcolorming then HealBot_Config.bcolorming = {} end
|
||||
if not HealBot_Config.bcolorminb then HealBot_Config.bcolorminb = {} end
|
||||
if not HealBot_Config.bfont then HealBot_Config.bfont = {} end
|
||||
if not HealBot_Config.bframe then HealBot_Config.bframe = {} end
|
||||
if not HealBot_Config.bframewidth then HealBot_Config.bframewidth = {} end
|
||||
if not HealBot_Config.bframecolr then HealBot_Config.bframecolr = {} end
|
||||
if not HealBot_Config.bframecolg then HealBot_Config.bframecolg = {} end
|
||||
if not HealBot_Config.bframecolb then HealBot_Config.bframecolb = {} end
|
||||
if not HealBot_Config.bframecola then HealBot_Config.bframecola = {} end
|
||||
|
||||
local curSkin = HealBot_Config.Current_Skin
|
||||
local newSkin = HealBot_Options_NewSkin:GetText()
|
||||
@@ -149,6 +168,12 @@ function HealBot_Options_NewSkinb_OnClick(this)
|
||||
HealBot_Config.bcolorming[newSkin] = HealBot_Config.bcolorming[curSkin] or 0
|
||||
HealBot_Config.bcolorminb[newSkin] = HealBot_Config.bcolorminb[curSkin] or 0
|
||||
HealBot_Config.bfont[newSkin] = HealBot_Config.bfont[curSkin] or "Fonts\\FRIZQT__.TTF"
|
||||
HealBot_Config.bframe[newSkin] = HealBot_Config.bframe[curSkin] or 0
|
||||
HealBot_Config.bframewidth[newSkin] = HealBot_Config.bframewidth[curSkin] or 10
|
||||
HealBot_Config.bframecolr[newSkin] = HealBot_Config.bframecolr[curSkin] or 1
|
||||
HealBot_Config.bframecolg[newSkin] = HealBot_Config.bframecolg[curSkin] or 1
|
||||
HealBot_Config.bframecolb[newSkin] = HealBot_Config.bframecolb[curSkin] or 1
|
||||
HealBot_Config.bframecola[newSkin] = HealBot_Config.bframecola[curSkin] or 1
|
||||
|
||||
table.insert(HealBot_Skins,2,HealBot_Options_NewSkin:GetText())
|
||||
HealBot_Config.Skin_ID = 2;
|
||||
@@ -204,6 +229,12 @@ function HealBot_Options_DeleteSkin_OnClick(this)
|
||||
if HealBot_Config.bcolorming then HealBot_Config.bcolorming[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bcolorminb then HealBot_Config.bcolorminb[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bfont then HealBot_Config.bfont[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bframe then HealBot_Config.bframe[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bframewidth then HealBot_Config.bframewidth[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bframecolr then HealBot_Config.bframecolr[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bframecolg then HealBot_Config.bframecolg[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bframecolb then HealBot_Config.bframecolb[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
if HealBot_Config.bframecola then HealBot_Config.bframecola[HealBot_Options_SkinsText:GetText()] = nil end
|
||||
table.remove(HealBot_Skins,HealBot_Config.Skin_ID)
|
||||
HealBot_Config.Skin_ID = 1;
|
||||
HealBot_Config.Skins = HealBot_Skins;
|
||||
|
||||
@@ -93,23 +93,36 @@
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
<Frame name="HealBot_Options_Scale">
|
||||
<ScrollFrame name="HealBot_Options_Skins_ScrollFrame" inherits="UIPanelScrollFrameTemplate">
|
||||
<Size>
|
||||
<AbsDimension y="325"/>
|
||||
<AbsDimension x="475" y="330"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="20" y="-88"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-20" y="-180"/>
|
||||
<AbsDimension x="20" y="-85"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Frames>
|
||||
<Scripts>
|
||||
<OnMouseWheel>
|
||||
local scrollBar = getglobal(this:GetName().."ScrollBar");
|
||||
if not scrollBar then return end
|
||||
local current = scrollBar:GetValue();
|
||||
local minVal, maxVal = scrollBar:GetMinMaxValues();
|
||||
if arg1 > 0 then
|
||||
scrollBar:SetValue(math.max(minVal, current - 25));
|
||||
else
|
||||
scrollBar:SetValue(math.min(maxVal, current + 25));
|
||||
end
|
||||
</OnMouseWheel>
|
||||
</Scripts>
|
||||
<ScrollChild>
|
||||
<Frame name="HealBot_Options_Scale">
|
||||
<Size>
|
||||
<AbsDimension x="475" y="490"/>
|
||||
</Size>
|
||||
<Frames>
|
||||
<!-- COLUMN 1: Geometry -->
|
||||
<Slider name="HealBot_Options_BarHeightS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size><AbsDimension x="123" y="18" /></Size>
|
||||
@@ -286,9 +299,16 @@
|
||||
<OnClick>HealBot_Config.bborder[HealBot_Config.Current_Skin] = (this:GetChecked() and 1 or 2); HealBot_Action_ResetSkin()</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="HealBot_Options_BarFrame" inherits="SendMailRadioButtonTemplate">
|
||||
<Anchors><Anchor point="TOPLEFT" relativeTo="HealBot_Options_1pxBorders" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="-5" /></Offset></Anchor></Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>getglobal(this:GetName().."Text"):SetText("Bar Frames")</OnLoad>
|
||||
<OnClick>HealBot_Options_BarFrame_OnClick(this)</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<Slider name="HealBot_Options_BarTextureS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size><AbsDimension x="123" y="17" /></Size>
|
||||
<Anchors><Anchor point="TOPLEFT" relativeTo="HealBot_Options_1pxBorders" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="-15" /></Offset></Anchor></Anchors>
|
||||
<Anchors><Anchor point="TOPLEFT" relativeTo="HealBot_Options_BarFrame" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="-15" /></Offset></Anchor></Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,HEALBOT_OPTIONS_SKINTEXTURE,1,14)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarTextureS_OnValueChanged(this)</OnValueChanged>
|
||||
@@ -326,13 +346,21 @@
|
||||
<OnValueChanged>HealBot_Options_BorderThicknessS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Slider name="HealBot_Options_BarFrameWidthS" inherits="HealBot_Options_SliderTemplate">
|
||||
<Size><AbsDimension x="123" y="17" /></Size>
|
||||
<Anchors><Anchor point="TOPLEFT" relativeTo="HealBot_Options_BorderThicknessS" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="-20" /></Offset></Anchor></Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>HealBot_Options_val_OnLoad(this,"Frame Width",1,20)</OnLoad>
|
||||
<OnValueChanged>HealBot_Options_BarFrameWidthS_OnValueChanged(this)</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
|
||||
<!-- BOTTOM ROW 1: Max HP, Min HP, Font Enabled, Font Disabled -->
|
||||
<StatusBar name="HealBot_MaxHPColorpick" inherits="TextStatusBar">
|
||||
<Size><AbsDimension x="87" y="18"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_Options_IconSizeS" relativePoint="BOTTOMLEFT">
|
||||
<Offset><AbsDimension x="-25" y="-30"/></Offset>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset><AbsDimension x="20" y="-345"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
@@ -639,10 +667,50 @@
|
||||
<OnClick>HealBot_SkinColorpick_OnClick("Abort")</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
<!-- BOTTOM ROW 3: Bar Frame Color -->
|
||||
<StatusBar name="HealBot_BarFrameColorpick" inherits="TextStatusBar">
|
||||
<Size><AbsDimension x="87" y="18"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_DebTextColorpick" relativePoint="BOTTOMLEFT">
|
||||
<Offset><AbsDimension x="0" y="-22"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GameFontNormalSmall" text="Bar Frame">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="TOP">
|
||||
<Offset><AbsDimension x="0" y="2"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString inherits="GameFontHighlightSmall" text="Bar Frame">
|
||||
<Anchors><Anchor point="CENTER"/></Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts><OnLoad>this:SetMinMaxValues(0,100); this:SetValue(100);</OnLoad></Scripts>
|
||||
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
|
||||
<BarColor r="1" g="1" b="1"/>
|
||||
</StatusBar>
|
||||
<Button name="HealBot_BarFrameColorpickb">
|
||||
<Size><AbsDimension x="87" y="18"/></Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="HealBot_BarFrameColorpick" relativePoint="TOPLEFT">
|
||||
<Offset><AbsDimension x="0" y="0"/></Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>this:SetFrameLevel(this:GetParent():GetFrameLevel() + 2)</OnLoad>
|
||||
<OnClick>HealBot_SkinColorpick_OnClick("BarFrame")</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Frames>
|
||||
</Frame>
|
||||
</ScrollChild>
|
||||
</ScrollFrame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
|
||||
</Ui>
|
||||
|
||||
@@ -60,8 +60,10 @@ Default installation path: `C:\Program Files\World of Warcraft\Interface\AddOns\
|
||||
* **Feature - HoT Timer Display Modes & Positioning:** Added configurable HoT timer list position dropdown (`Below`, `Above`, `Left`, `Right`) relative to raid frames. Added `Icon Overlay` mode rendering countdown timers directly on health bar HoT icons, and a `Both` mode allowing simultaneous timer list and on-bar icon countdown numbers. Excluded pets from HoT timer lists and overlays. Optimized expiration lookups with O(1) texture-to-spell mappings.
|
||||
* **Refactor & Feature - Unified Aura & HoT Tracking:** Unified bar icons and HoT timers into a master dictionary (`HealBot_TrackedAuras`) in `HealBot_Data.lua`. Added Weakened Soul, Fear Ward, Abolish Disease, and Abolish Poison to active timer bars with localized client support and debuff-aware pruning.
|
||||
* **Bug Fix - HoT Tracking Premature Deletion & GUID Resolution:** Resolved issue where synchronous aura scans on spell cast prematurely purged active HoTs before server buff packets arrived. Fixed HoT timer list showing raw GUID strings instead of names by ensuring GUID caches populate immediately on `PLAYER_ENTERING_WORLD` (even when solo) and adding multi-tier name resolution fallbacks. Fixed unit bar icon countdown numbers not rendering by adding explicit overlay frame show triggers and normalized texture lookup fallbacks.
|
||||
* **Feature - Debuff Visual Overlays & Animated Sprite Sheets:** Added selectable visual styles for Cure / Dispel / Cleanse (CDC) debuff alerts in Options -> Cure (`Whole Bar`, `Frame / Border`, `Glow Overlay`, `Glow + Frame`, `Animated`, `Disabled`). Animated flipbook textures for Poison (dripping slime teardrops), Curse (rising shadow wisps), Disease (creeping roots), and Magic(arcane sigils turning). Integrated lightweight, throttled (15 FPS) UV sprite animation engine directly into `HealBot_OnUpdate` with zero garbage allocation.
|
||||
* **Feature - Debuff Visual Overlays & Animated Sprite Sheets:** Added selectable visual styles for Cure / Dispel / Cleanse (CDC) debuff alerts in Options -> Cure (`Whole Bar`, `Frame / Border`, `Glow Overlay`, `Glow + Frame`, `Animated`, `Disabled`). Modeled high-readability animated flipbook sprite sheets: Poison (dripping slime teardrops), Curse (tall 64px demonic flame pillars with embers and S-sway), Magic (large 48px rotating Arcane Sigil with outer celestial rings, astrolabe tick bands, and crackling mana lightning forks), and Disease (heavy necrotic border crust with 5 thick throbbing rot tendrils and bursting pustule boils). Integrated lightweight, throttled (15 FPS) UV sprite animation engine directly into `HealBot_OnUpdate` with zero garbage allocation.
|
||||
* **Feature - Debuff Animation Test Slash Commands:** Added `/hb test <poison|curse|disease|magic|clear>` (and `/hb debuff <type>`) commands to simulate active debuff animations on player and dummy test bars out-of-combat. Automatically activates Animated mode and dummy debuff icons, while guarding state against aura event overwrite until stopped.
|
||||
* **Feature - Bar Frames (Borders) & Scrollable Skins Menu:** Added separate option in Skins menu to display frames/borders around each unit health bar with configurable width (1-20) and a dedicated color picker. Bar frames adapt to the skin's sharp ("1px Borders", `WHITE8X8`) or fuzzy (default tooltip border, `UI-Tooltip-Border`) style. Wired directly into the CDC debuff overlay engine: when cleanable debuffs trigger with Frame/Border, Glow+Frame, or Animated+Frame mode, the bar frame dynamically adopts the CDC debuff color and returns to the bar frame's regular color when dispelled. Implemented a scrollable container (`UIPanelScrollFrameTemplate`) with mouse wheel support in the Skins options panel to comfortably fit all layout, geometry, and color settings without control overlap.
|
||||
* **Feature - CDC "Animated + Frame" Overlay Option:** Added "Animated + Frame" display option to the Cure / Dispel (CDC) options panel. Combines the active procedural animated debuff flipbook with a colored debuff border highlighting the bar frame.
|
||||
|
||||
|
||||
**v1.7.7**
|
||||
|
||||
+3
-1
@@ -62,7 +62,9 @@ function HealBot_SetTestDebuff(debuffType)
|
||||
if debuffType then
|
||||
HealBot_TestDebuff = debuffType;
|
||||
if HealBot_Config then
|
||||
HealBot_Config.CDCOverlay = 5; -- Automatically switch to Animated mode
|
||||
if HealBot_Config.CDCOverlay ~= 5 and HealBot_Config.CDCOverlay ~= 6 then
|
||||
HealBot_Config.CDCOverlay = 5; -- Automatically switch to Animated mode
|
||||
end
|
||||
end
|
||||
if not HealBot_UnitDebuff then HealBot_UnitDebuff = {} end
|
||||
HealBot_UnitDebuff["player"] = debuffType;
|
||||
|
||||
+89
-13
@@ -2,6 +2,10 @@
|
||||
-- Status bar rendering, color calculations, button styling, and debuff pulsing
|
||||
|
||||
local HealBot_AnimTimer = 0
|
||||
local HealBot_BarFrame_Backdrop = {
|
||||
tile = false,
|
||||
insets = { left = 0, right = 0, top = 0, bottom = 0 }
|
||||
}
|
||||
|
||||
-- HealBot_Action_SetTexture: Internal utility: HealBot_Action_SetTexture
|
||||
function HealBot_Action_SetTexture(bar, btexture)
|
||||
@@ -242,8 +246,23 @@ function HealBot_Action_EnableButton(button)
|
||||
local debuffType = HealBot_UnitDebuff[unit]
|
||||
local isDead = state.isDead or state.isGhost or (not string.find(unit, "^Test") and UnitIsDeadOrGhost(unit))
|
||||
local overlayMode = HealBot_Config.CDCOverlay or 1
|
||||
local skin = HealBot_Config.Current_Skin
|
||||
local hasBarFrame = (HealBot_Config.bframe and HealBot_Config.bframe[skin] == 1)
|
||||
local bfr = (HealBot_Config.bframecolr and HealBot_Config.bframecolr[skin]) or 1.0
|
||||
local bfg = (HealBot_Config.bframecolg and HealBot_Config.bframecolg[skin]) or 1.0
|
||||
local bfb = (HealBot_Config.bframecolb and HealBot_Config.bframecolb[skin]) or 1.0
|
||||
local bfa = (HealBot_Config.bframecola and HealBot_Config.bframecola[skin]) or 1.0
|
||||
|
||||
if debuffType and not isDead and overlayMode > 1 and overlayMode < 6 then
|
||||
local alphaBorder = 1.0
|
||||
local alphaOverlay = 1.0
|
||||
if not button:IsEnabled() then
|
||||
local disAlpha = HealBot_Config.bardisa[skin] or 0.4
|
||||
alphaBorder = disAlpha
|
||||
alphaOverlay = disAlpha
|
||||
bfa = bfa * disAlpha
|
||||
end
|
||||
|
||||
if debuffType and not isDead and overlayMode > 1 and overlayMode < 7 then
|
||||
local color = HealBot_Config.CDCBarColour[debuffType]
|
||||
local cr, cg, cb = 1, 0, 0
|
||||
if color then
|
||||
@@ -253,14 +272,6 @@ function HealBot_Action_EnableButton(button)
|
||||
button.debuffOverlay:SetFrameLevel(bar:GetFrameLevel() + 2)
|
||||
button.debuffOverlay:Show()
|
||||
|
||||
local alphaBorder = 1.0
|
||||
local alphaOverlay = 1.0
|
||||
if not button:IsEnabled() then
|
||||
local disAlpha = HealBot_Config.bardisa[HealBot_Config.Current_Skin] or 0.4
|
||||
alphaBorder = disAlpha
|
||||
alphaOverlay = disAlpha
|
||||
end
|
||||
|
||||
if overlayMode == 2 then
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffOverlay:SetBackdropBorderColor(cr, cg, cb, alphaBorder)
|
||||
@@ -270,7 +281,11 @@ function HealBot_Action_EnableButton(button)
|
||||
end
|
||||
elseif overlayMode == 3 then
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffOverlay:SetBackdropBorderColor(0, 0, 0, 0)
|
||||
if hasBarFrame then
|
||||
button.debuffOverlay:SetBackdropBorderColor(bfr, bfg, bfb, bfa)
|
||||
else
|
||||
button.debuffOverlay:SetBackdropBorderColor(0, 0, 0, 0)
|
||||
end
|
||||
if button.debuffGlow then
|
||||
local glowTex = HealBot_Config.CDCOverlayTexture or "Interface\\AddOns\\HealBotBlue\\Images\\glow1.tga"
|
||||
button.debuffGlow:SetTexture(glowTex)
|
||||
@@ -291,7 +306,37 @@ function HealBot_Action_EnableButton(button)
|
||||
button.debuffGlow:Show()
|
||||
end
|
||||
elseif overlayMode == 5 then -- Animated
|
||||
button.debuffOverlay:SetBackdropBorderColor(0, 0, 0, 0)
|
||||
if hasBarFrame then
|
||||
button.debuffOverlay:SetBackdropBorderColor(bfr, bfg, bfb, bfa)
|
||||
else
|
||||
button.debuffOverlay:SetBackdropBorderColor(0, 0, 0, 0)
|
||||
end
|
||||
if button.debuffGlow then
|
||||
local glowTex
|
||||
if debuffType == HEALBOT_POISON_en then
|
||||
glowTex = "Interface\\AddOns\\HealBotBlue\\Images\\debuff_poison.tga"
|
||||
button.isAnimatedDebuff = true
|
||||
elseif debuffType == HEALBOT_CURSE_en then
|
||||
glowTex = "Interface\\AddOns\\HealBotBlue\\Images\\debuff_curse.tga"
|
||||
button.isAnimatedDebuff = true
|
||||
elseif debuffType == HEALBOT_DISEASE_en then
|
||||
glowTex = "Interface\\AddOns\\HealBotBlue\\Images\\debuff_disease.tga"
|
||||
button.isAnimatedDebuff = true
|
||||
elseif debuffType == HEALBOT_MAGIC_en then
|
||||
glowTex = "Interface\\AddOns\\HealBotBlue\\Images\\debuff_magic.tga"
|
||||
button.isAnimatedDebuff = true
|
||||
else
|
||||
glowTex = HealBot_Config.CDCOverlayTexture or "Interface\\AddOns\\HealBotBlue\\Images\\glow1.tga"
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffGlow:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
button.debuffGlow:SetTexture(glowTex)
|
||||
button.debuffGlow:SetBlendMode("BLEND")
|
||||
button.debuffGlow:SetVertexColor(cr, cg, cb, alphaOverlay)
|
||||
button.debuffGlow:Show()
|
||||
end
|
||||
elseif overlayMode == 6 then -- Animated + Frame
|
||||
button.debuffOverlay:SetBackdropBorderColor(cr, cg, cb, alphaBorder)
|
||||
if button.debuffGlow then
|
||||
local glowTex
|
||||
if debuffType == HEALBOT_POISON_en then
|
||||
@@ -319,11 +364,17 @@ function HealBot_Action_EnableButton(button)
|
||||
end
|
||||
else
|
||||
button.isAnimatedDebuff = false
|
||||
button.debuffOverlay:Hide()
|
||||
if button.debuffGlow then
|
||||
button.debuffGlow:Hide()
|
||||
button.debuffGlow:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
if hasBarFrame and not isDead then
|
||||
button.debuffOverlay:SetFrameLevel(bar:GetFrameLevel() + 2)
|
||||
button.debuffOverlay:SetBackdropBorderColor(bfr, bfg, bfb, bfa)
|
||||
button.debuffOverlay:Show()
|
||||
else
|
||||
button.debuffOverlay:Hide()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -469,7 +520,7 @@ local HealBot_AnimFrame = 0
|
||||
|
||||
-- HealBot_Action_UpdateDebuffAnimation: Advances animated overlay frames on active debuffed buttons.
|
||||
function HealBot_Action_UpdateDebuffAnimation(elapsed)
|
||||
if not HealBot_Config or HealBot_Config.CDCOverlay ~= 5 then return end
|
||||
if not HealBot_Config or (HealBot_Config.CDCOverlay ~= 5 and HealBot_Config.CDCOverlay ~= 6) then return end
|
||||
|
||||
HealBot_AnimTimer = HealBot_AnimTimer + elapsed
|
||||
if HealBot_AnimTimer < 0.066 then return end -- ~15 FPS
|
||||
@@ -515,6 +566,27 @@ function HealBot_Action_ResetSkin()
|
||||
local fontOutline = (HealBot_Config.bfontoutline and HealBot_Config.bfontoutline[skin]) or 0
|
||||
local expectedFlags = fontOutline == 1 and "OUTLINE" or ""
|
||||
|
||||
local borderStyle = (HealBot_Config.bborder and HealBot_Config.bborder[skin]) or 2
|
||||
local width = (HealBot_Config.bframewidth and HealBot_Config.bframewidth[skin]) or 10
|
||||
local edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border"
|
||||
if borderStyle == 1 then
|
||||
edgeFile = "Interface\\Buttons\\WHITE8X8"
|
||||
end
|
||||
HealBot_BarFrame_Backdrop.edgeFile = edgeFile
|
||||
HealBot_BarFrame_Backdrop.edgeSize = width
|
||||
|
||||
for i = 1, 84 do
|
||||
local btn = getglobal("HealBot_Action_HealUnit" .. i)
|
||||
if btn then
|
||||
if not btn.debuffOverlay then
|
||||
btn.debuffOverlay = getglobal(btn:GetName() .. "DebuffOverlay")
|
||||
end
|
||||
if btn.debuffOverlay then
|
||||
btn.debuffOverlay:SetBackdrop(HealBot_BarFrame_Backdrop)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if HealBot_Action_OptionsButton and HealBot_Action_OptionsButton:GetFontString() then
|
||||
HealBot_Action_OptionsButton:GetFontString():SetFont(bfont, btextheight, expectedFlags)
|
||||
end
|
||||
@@ -537,8 +609,12 @@ function HealBot_Action_ResetSkin()
|
||||
HealBot_Action_SetTexture(HealBot_EnTextColorpickin, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_DisTextColorpick, HealBot_Config.btexture[skin])
|
||||
HealBot_Action_SetTexture(HealBot_DebTextColorpick, HealBot_Config.btexture[skin])
|
||||
if HealBot_BarFrameColorpick then
|
||||
HealBot_Action_SetTexture(HealBot_BarFrameColorpick, HealBot_Config.btexture[skin])
|
||||
end
|
||||
HealBot_SetSkinColours()
|
||||
end
|
||||
HealBot_Action_EnableButtons()
|
||||
end
|
||||
|
||||
-- HealBot_Action_RefreshButtons: Refreshes all active unit buttons.
|
||||
|
||||
Reference in New Issue
Block a user