From 0106530c9883ce992598246d4448170c2f2f325b Mon Sep 17 00:00:00 2001 From: iceroth Date: Fri, 21 Jul 2006 09:11:03 +0000 Subject: [PATCH] Version 0.2 - Added basic pet support - Added configuration (via both console and Dewdrop) - Fixed indexing problem with non-English clients --- IceBarElement.lua | 209 ++++++++++++++++++++++++++++++------- IceCore.lua | 145 ++++++++++++++++++++----- IceElement.lua | 69 ++++++++++-- IceHUD.lua | 153 ++++++++++++++++++++++++++- IceHUD.toc | 14 ++- IceUnitBar.lua | 36 +++---- modules/CastBar.lua | 24 +++-- modules/DruidMana.lua | 9 ++ modules/MirrorBar.lua | 95 +++++++++++++++-- modules/PetHealth.lua | 106 +++++++++++++++++++ modules/PetMana.lua | 141 +++++++++++++++++++++++++ modules/PlayerHealth.lua | 10 +- modules/PlayerMana.lua | 11 +- modules/TargetHealth.lua | 11 +- modules/TargetInfo.lua | 34 +++--- modules/TargetMana.lua | 11 +- modules/TargetOfTarget.lua | 6 ++ 17 files changed, 948 insertions(+), 136 deletions(-) create mode 100644 modules/PetHealth.lua create mode 100644 modules/PetMana.lua diff --git a/IceBarElement.lua b/IceBarElement.lua index 228c74e..f63b7fe 100644 --- a/IceBarElement.lua +++ b/IceBarElement.lua @@ -10,12 +10,13 @@ IceBarElement.BackgroundTexture = IceHUD.Location .. "\\textures\\HiBarBG" IceBarElement.BarProportion = 0.25 -- 0.18 IceBarElement.prototype.barFrame = nil -IceBarElement.prototype.side = nil -IceBarElement.prototype.offset = nil --offsets less than 0 should be reserved for pets etc IceBarElement.prototype.width = nil IceBarElement.prototype.height = nil IceBarElement.prototype.backgroundAlpha = nil +IceBarElement.prototype.combat = nil + + -- Constructor -- function IceBarElement.prototype:init(name) @@ -23,6 +24,7 @@ function IceBarElement.prototype:init(name) self.width = 77 self.height = 154 + self.backgroundAlpha = IceBarElement.BackgroundAlpha end @@ -31,18 +33,94 @@ end -- 'Public' methods ----------------------------------------------------------- +-- OVERRIDE +function IceBarElement.prototype:Enable() + IceBarElement.super.prototype.Enable(self) + self:RegisterEvent("PLAYER_REGEN_DISABLED", "InCombat") + self:RegisterEvent("PLAYER_REGEN_ENABLED", "OutCombat") + self:RegisterEvent("PLAYER_ENTERING_WORLD", "CheckCombat") +end + + +-- OVERRIDE +function IceBarElement.prototype:GetOptions() + local opts = IceBarElement.super.prototype.GetOptions(self) + + opts["side"] = + { + type = 'group', + name = 'side', + desc = 'Side of the HUD where the bar appears', + args = { + left = { + type = 'execute', + name = 'left', + desc = "Left side", + func = function() + self.moduleSettings.side = IceCore.Side.Left + self:Redraw() + end + }, + right = { + type = 'execute', + name = 'right', + desc = "Right side", + func = function() + self.moduleSettings.side = IceCore.Side.Right + self:Redraw() + end + } + }, + order = 30 + } + opts["offset"] = + { + type = 'range', + name = 'offset', + desc = 'Offset of the bar', + min = -1, + max = 10, + step = 1, + get = function() + return self.moduleSettings.offset + end, + set = function(value) + self.moduleSettings.offset = value + self:Redraw() + end, + order = 31 + } + + return opts +end + + +-- OVERRIDE +function IceBarElement.prototype:Redraw() + IceBarElement.super.prototype.Redraw(self) + + self.alpha = self.settings.alphaooc + + self:CreateFrame() + + self.frame:SetAlpha(self.alpha) +end + + + function IceBarElement.prototype:SetPosition(side, offset) IceBarElement.prototype.side = side IceBarElement.prototype.offset = offset end - -- 'Protected' methods -------------------------------------------------------- -- OVERRIDE function IceBarElement.prototype:CreateFrame() -- don't call overridden method + self.alpha = self.settings.alphaooc + self:CreateBackground() self:CreateBar() self:CreateTexts() @@ -51,77 +129,97 @@ end -- Creates background for the bar function IceBarElement.prototype:CreateBackground() - self.frame = CreateFrame("StatusBar", nil, self.parent) + if not (self.frame) then + self.frame = CreateFrame("StatusBar", nil, self.parent) + end self.frame:SetFrameStrata("BACKGROUND") self.frame:SetWidth(self.width) self.frame:SetHeight(self.height) - local bg = self.frame:CreateTexture(nil, "BACKGROUND") - - bg:SetTexture(IceBarElement.BackgroundTexture) - bg:SetAllPoints(self.frame) - - if (self.side == IceCore.Side.Left) then - bg:SetTexCoord(1, 0, 0, 1) + if not (self.frame.bg) then + self.frame.bg = self.frame:CreateTexture(nil, "BACKGROUND") end - self.frame:SetStatusBarTexture(bg) + self.frame.bg:SetTexture(IceBarElement.BackgroundTexture) + self.frame.bg:ClearAllPoints() + self.frame.bg:SetAllPoints(self.frame) + + if (self.moduleSettings.side == IceCore.Side.Left) then + self.frame.bg:SetTexCoord(1, 0, 0, 1) + else + self.frame.bg:SetTexCoord(1, 0, 1, 0) + end + + self.frame:SetStatusBarTexture(self.frame.bg) self.frame:SetStatusBarColor(self:GetColor("undef", self.backgroundAlpha)) local ownPoint = "LEFT" - if (self.side == ownPoint) then + if (self.moduleSettings.side == ownPoint) then ownPoint = "RIGHT" end -- ofxx = (bar width) + (extra space in between the bars) - local offx = (IceBarElement.BarProportion * self.width * self.offset) + (self.offset * 10) - if (self.side == IceCore.Side.Left) then + local offx = (IceBarElement.BarProportion * self.width * self.moduleSettings.offset) + + (self.moduleSettings.offset * 10) + if (self.moduleSettings.side == IceCore.Side.Left) then offx = offx * -1 end - self.frame:SetPoint("BOTTOM"..ownPoint, self.parent, "BOTTOM"..self.side, offx, 0) + self.frame:ClearAllPoints() + self.frame:SetPoint("BOTTOM"..ownPoint, self.parent, "BOTTOM"..self.moduleSettings.side, offx, 0) end -- Creates the actual bar function IceBarElement.prototype:CreateBar() - self.barFrame = CreateFrame("StatusBar", nil, self.frame) + if not (self.barFrame) then + self.barFrame = CreateFrame("StatusBar", nil, self.frame) + end self.barFrame:SetFrameStrata("BACKGROUND") self.barFrame:SetWidth(self.width) self.barFrame:SetHeight(self.height) - local bar = self.frame:CreateTexture(nil, "BACKGROUND") - self.barFrame.texture = bar + if not (self.barFrame.bar) then + self.barFrame.bar = self.frame:CreateTexture(nil, "BACKGROUND") + end - bar:SetTexture(IceBarElement.BarTexture) - bar:SetAllPoints(self.frame) + self.barFrame.bar:SetTexture(IceBarElement.BarTexture) + self.barFrame.bar:SetAllPoints(self.frame) - self.barFrame:SetStatusBarTexture(bar) + self.barFrame:SetStatusBarTexture(self.barFrame.bar) self:UpdateBar(1, "undef") local point = "LEFT" - if (self.side == point) then + if (self.moduleSettings.side == point) then point = "RIGHT" end - self.barFrame:SetPoint("BOTTOM"..point, self.frame, "BOTTOM"..self.side, 0, 0) + self.barFrame:ClearAllPoints() + self.barFrame:SetPoint("BOTTOM"..point, self.frame, "BOTTOM"..self.moduleSettings.side, 0, 0) end function IceBarElement.prototype:CreateTexts() - self.frame.bottomUpperText = self:FontFactory(nil, 13) - self.frame.bottomLowerText = self:FontFactory(nil, 13) + if not (self.frame.bottomUpperText) then + self.frame.bottomUpperText = self:FontFactory(nil, 13) + end + if not (self.frame.bottomLowerText) then + self.frame.bottomLowerText = self:FontFactory(nil, 13) + end self.frame.bottomUpperText:SetWidth(80) self.frame.bottomLowerText:SetWidth(120) + + self.frame.bottomUpperText:SetHeight(14) + self.frame.bottomLowerText:SetHeight(14) local justify = "RIGHT" - if ((self.side == "LEFT" and self.offset <= 1) or - (self.side == "RIGHT" and self.offset > 1)) + if ((self.moduleSettings.side == "LEFT" and self.moduleSettings.offset <= 1) or + (self.moduleSettings.side == "RIGHT" and self.moduleSettings.offset > 1)) then justify = "LEFT" end @@ -131,25 +229,28 @@ function IceBarElement.prototype:CreateTexts() self.frame.bottomLowerText:SetJustifyH(justify) - local ownPoint = self.side - if (self.offset > 1) then + local ownPoint = self.moduleSettings.side + if (self.moduleSettings.offset > 1) then ownPoint = self:Flip(ownPoint) end - local parentPoint = self:Flip(self.side) + local parentPoint = self:Flip(self.moduleSettings.side) local offx = 2 -- adjust offset for bars where text is aligned to the outer side - if (self.offset <= 1) then + if (self.moduleSettings.offset <= 1) then offx = IceBarElement.BarProportion * self.width + 6 end - if (self.side == IceCore.Side.Left) then + if (self.moduleSettings.side == IceCore.Side.Left) then offx = offx * -1 end + self.frame.bottomUpperText:ClearAllPoints() + self.frame.bottomLowerText:ClearAllPoints() + self.frame.bottomUpperText:SetPoint("TOP"..ownPoint , self.frame, "BOTTOM"..parentPoint, offx, -1) self.frame.bottomLowerText:SetPoint("TOP"..ownPoint , self.frame, "BOTTOM"..parentPoint, offx, -15) end @@ -165,7 +266,7 @@ end function IceBarElement.prototype:SetScale(texture, scale) - if (self.side == IceCore.Side.Left) then + if (self.moduleSettings.side == IceCore.Side.Left) then texture:SetTexCoord(1, 0, 1-scale, 1) else texture:SetTexCoord(0, 1, 1-scale, 1) @@ -177,11 +278,11 @@ function IceBarElement.prototype:UpdateBar(scale, color, alpha) alpha = alpha or 1 self.frame:SetAlpha(alpha) - self.frame:SetStatusBarColor(self:GetColor(color, self.backgroundAlpha)) + self.frame:SetStatusBarColor(self:GetColor(color, self.alpha)) self.barFrame:SetStatusBarColor(self:GetColor(color)) - self:SetScale(self.barFrame.texture, scale) + self:SetScale(self.barFrame.bar, scale) end @@ -203,6 +304,9 @@ function IceBarElement.prototype:SetBottomText2(text, color, alpha) end if not (alpha) then alpha = self.alpha + 0.1 + if (alpha > 1) then + alpha = 1 + end end self.frame.bottomLowerText:SetTextColor(self:GetColor(color, alpha)) self.frame.bottomLowerText:SetText(text) @@ -217,3 +321,36 @@ function IceBarElement.prototype:GetFormattedText(value1, value2) return string.format("|c%s[|r%s|c%s/|r%s|c%s]|r", color, value1, color, value2, color) end + +-- To be overridden +function IceBarElement.prototype:Update() + if (self.combat) then + self.alpha = self.settings.alphaic + self.backgroundAlpha = IceBarElement.BackgroundAlpha + else + self.alpha = self.settings.alphaooc + self.backgroundAlpha = IceBarElement.BackgroundAlpha + end +end + + + + +-- Combat event handlers ------------------------------------------------------ + +function IceBarElement.prototype:InCombat() + self.combat = true + self:Update(self.unit) +end + + +function IceBarElement.prototype:OutCombat() + self.combat = false + self:Update(self.unit) +end + + +function IceBarElement.prototype:CheckCombat() + self.combat = UnitAffectingCombat("player") + self:Update(self.unit) +end diff --git a/IceCore.lua b/IceCore.lua index c450147..0b66b6e 100644 --- a/IceCore.lua +++ b/IceCore.lua @@ -1,71 +1,108 @@ local AceOO = AceLibrary("AceOO-2.0") -IceCore = AceOO.Class("AceEvent-2.0") +IceCore = AceOO.Class("AceEvent-2.0", "AceDB-2.0") IceCore.Side = { Left = "LEFT", Right = "RIGHT" } -IceCore.Width = 150 -- Events modules should register/trigger during load IceCore.Loaded = "IceCore_Loaded" IceCore.RegisterModule = "IceCore_RegisterModule" --- 'Private' variables +-- Private variables -- +IceCore.prototype.settings = nil IceCore.prototype.IceHUDFrame = nil IceCore.prototype.elements = {} +-- Constructor -- function IceCore.prototype:init() IceCore.super.prototype.init(self) IceHUD:Debug("IceCore.prototype:init()") - self:DrawFrame() + self:RegisterDB("IceCoreDB") + + self.IceHUDFrame = CreateFrame("Frame","IceHUDFrame", WorldFrame) + -- We are ready to load modules self:RegisterEvent(IceCore.RegisterModule, "Register") self:TriggerEvent(IceCore.Loaded) + + + -- DEFAULT SETTINGS + local defaults = { + gap = 150, + verticalPos = -150, + scale = 1, + alphaooc = 0.3, + alphaic = 0.6 + } + + + -- get default settings from the modules + defaults.modules = {} + for i = 1, table.getn(self.elements) do + local name = self.elements[i]:GetName() + defaults.modules[name] = self.elements[i]:GetDefaultSettings() + end + + + self:RegisterDefaults('account', defaults) end function IceCore.prototype:Enable() + self.settings = self.db.account + + IceElement.Alpha = self.settings.bar + self:DrawFrame() + for i = 1, table.getn(self.elements) do + self.elements[i]:SetDatabase(self.settings) self.elements[i]:Create(self.IceHUDFrame) - self.elements[i]:Enable() + if (self.elements[i]:IsEnabled()) then + self.elements[i]:Enable() + end end end function IceCore.prototype:DrawFrame() - self.IceHUDFrame = CreateFrame("Frame","IceHUDFrame", UIParent) - self.IceHUDFrame:SetFrameStrata("BACKGROUND") - self.IceHUDFrame:SetWidth(IceCore.Width) + self.IceHUDFrame:SetWidth(self.settings.gap) self.IceHUDFrame:SetHeight(20) + self:SetScale(self.settings.scale) - -- For debug purposes - --[[ - self.IceHUDFrame:SetBackdrop( - { - bgFile = "Interface/Tooltips/UI-Tooltip-Background", - edgeFile = "Interface/Tooltips/UI-ToolTip-Border", - tile = false, - tileSize = 32, - edgeSize = 14, - insets = { left = 4, right = 4, top = 4, bottom = 4 } - } ) - - self.IceHUDFrame:SetBackdropColor(0.5, 0.5, 0.5, 0.1) - self.IceHUDFrame:SetBackdropBorderColor(0.4, 0.4, 0.4, 0.1) - --]] - - self.IceHUDFrame:SetPoint("CENTER", 0, -150) + self.IceHUDFrame:SetPoint("CENTER", 0, self.settings.verticalPos) self.IceHUDFrame:Show() end +function IceCore.prototype:Redraw() + for i = 1, table.getn(self.elements) do + self.elements[i]:Redraw() + end +end +function IceCore.prototype:GetModuleOptions() + local options = {} + for i = 1, table.getn(self.elements) do + local modName = self.elements[i]:GetName() + local opt = self.elements[i]:GetOptions() + options[modName] = { + type = 'group', + desc = 'Module options', + name = modName, + args = opt + } + end + + return options +end + -- Method to handle module registration function IceCore.prototype:Register(element) @@ -74,3 +111,61 @@ function IceCore.prototype:Register(element) table.insert(self.elements, element) end + + +------------------------------------------------------------------------------- +-- Configuration methods -- +------------------------------------------------------------------------------- + +function IceCore.prototype:ResetSettings() + self:ResetDB() + ReloadUI() +end + +function IceCore.prototype:GetVerticalPos() + return self.settings.verticalPos +end +function IceCore.prototype:SetVerticalPos(value) + self.settings.verticalPos = value + self.IceHUDFrame:ClearAllPoints() + self.IceHUDFrame:SetPoint("CENTER", 0, self.settings.verticalPos) +end + + +function IceCore.prototype:GetGap() + return self.settings.gap +end +function IceCore.prototype:SetGap(value) + self.settings.gap = value + self.IceHUDFrame:SetWidth(self.settings.gap) +end + + +function IceCore.prototype:GetScale() + return self.settings.scale +end +function IceCore.prototype:SetScale(value) + self.settings.scale = value + + local scale = UIParent:GetScale() * value + self.IceHUDFrame:SetScale(scale) +end + + +function IceCore.prototype:GetAlphaOOC() + return self.settings.alphaooc +end +function IceCore.prototype:SetAlphaOOC(value) + self.settings.alphaooc = value + self:Redraw() +end + + +function IceCore.prototype:GetAlphaIC() + return self.settings.alphaic +end +function IceCore.prototype:SetAlphaIC(value) + self.settings.alphaic = value + self:Redraw() +end + diff --git a/IceElement.lua b/IceElement.lua index c6433a4..8548ccc 100644 --- a/IceElement.lua +++ b/IceElement.lua @@ -3,9 +3,7 @@ local AceOO = AceLibrary("AceOO-2.0") IceElement = AceOO.Class("AceEvent-2.0") IceElement.virtual = true -IceElement.Alpha = 0.3 -- default alpha for hud elements - --- Private variables -- +-- Protected variables -- IceElement.prototype.name = nil IceElement.prototype.parent = nil IceElement.prototype.frame = nil @@ -13,6 +11,9 @@ IceElement.prototype.frame = nil IceElement.prototype.colors = {} -- Shared table for all child classes to save some memory IceElement.prototype.alpha = nil +IceElement.settings = nil +IceElement.moduleSettings = nil + -- Constructor -- -- IceElements are to be instantiated before IceCore is loaded. @@ -20,11 +21,10 @@ IceElement.prototype.alpha = nil -- module to the core with another event. function IceElement.prototype:init(name) IceElement.super.prototype.init(self) - assert(name, "IceElement must have a name") self.name = name - self.alpha = IceElement.Alpha + self.alpha = 1 -- Some common colors self:SetColor("text", 1, 1, 1) @@ -54,6 +54,17 @@ function IceElement.prototype:Create(parent) end +function IceElement.prototype:SetDatabase(db) + self.settings = db + self.moduleSettings = db.modules[self.name] +end + + +function IceElement.prototype:IsEnabled() + return self.moduleSettings.enabled +end + + function IceElement.prototype:Enable() self.frame:Show() end @@ -65,12 +76,56 @@ function IceElement.prototype:Disable() end +-- inherting classes should override this and provide +-- make sure they refresh any changes made to them +function IceElement.prototype:Redraw() + +end + + +-- inheriting classes should override this and provide +-- AceOptions table for configuration +function IceElement.prototype:GetOptions() + local opts = {} + opts["enabled"] = { + type = "toggle", + name = "Enabled", + desc = "Enable/disable module", + get = function() + return self.moduleSettings.enabled + end, + set = function(value) + self.moduleSettings.enabled = value + if (value) then + self:Enable() + else + self:Disable() + end + end, + order = 20 + } + return opts +end + + + +-- inheriting classes should override this and provide +-- default settings to populate db +function IceElement.prototype:GetDefaultSettings() + local defaults = {} + defaults["enabled"] = true + return defaults +end + + -- 'Protected' methods -------------------------------------------------------- -- This should be overwritten by inheriting classes function IceElement.prototype:CreateFrame() - self.frame = CreateFrame("Frame", nil, self.parent) + if not (self.frame) then + self.frame = CreateFrame("Frame", nil, self.parent) + end end @@ -133,6 +188,8 @@ function IceElement.prototype:FontFactory(weight, size, frame) return font end + + -- Event Handlers ------------------------------------------------------------- -- Register ourself to the core diff --git a/IceHUD.lua b/IceHUD.lua index 2a4db08..baaf1f1 100644 --- a/IceHUD.lua +++ b/IceHUD.lua @@ -1,13 +1,162 @@ -IceHUD = AceLibrary("AceAddon-2.0"):new("AceDebug-2.0") -local AceOO = AceLibrary("AceOO-2.0") +IceHUD = AceLibrary("AceAddon-2.0"):new("AceConsole-2.0", "AceDebug-2.0") + +IceHUD.dewdrop = AceLibrary("Dewdrop-2.0") IceHUD.Location = "Interface\\AddOns\\IceHUD" +IceHUD.temp = nil +IceHUD.options = +{ + type = 'group', + args = + { + headerGeneral = { + type = 'header', + name = "General Settings", + order = 10 + }, + vpos = { + type = 'range', + name = 'Vertical position', + desc = 'Vertical position', + get = function() + return IceHUD.IceCore:GetVerticalPos() + end, + set = function(v) + IceHUD.IceCore:SetVerticalPos(v) + end, + min = -300, + max = 300, + step = 10, + order = 11 + }, + + gap = { + type = 'range', + name = 'Gap', + desc = 'Distance between the left and right bars', + get = function() + return IceHUD.IceCore:GetGap() + end, + set = function(v) + IceHUD.IceCore:SetGap(v) + end, + min = 50, + max = 300, + step = 5, + order = 12, + }, + + scale = { + type = 'range', + name = 'Scale', + desc = 'HUD scale', + get = function() + return IceHUD.IceCore:GetScale() + end, + set = function(v) + IceHUD.IceCore:SetScale(v) + end, + min = 0.5, + max = 1.5, + step = 0.05, + order = 13, + }, + + alphaooc = { + type = 'range', + name = 'Alpha OOC', + desc = 'Bar alpha Out Of Combat', + get = function() + return IceHUD.IceCore:GetAlphaOOC() + end, + set = function(v) + IceHUD.IceCore:SetAlphaOOC(v) + end, + min = 0, + max = 1, + step = 0.05, + order = 14, + }, + + alphaic = { + type = 'range', + name = 'Alpha IC', + desc = 'Bar alpha In Combat', + get = function() + return IceHUD.IceCore:GetAlphaIC() + end, + set = function(v) + IceHUD.IceCore:SetAlphaIC(v) + end, + min = 0, + max = 1, + step = 0.05, + order = 15 + }, + + + headerModules = { + type = 'header', + name = 'Module Settings', + order = 40 + }, + + modules = { + type='group', + desc = 'Module configuration options', + name = 'Modules', + args = {}, + order = 41 + }, + + + + headerOther = { + type = 'header', + name = 'Other Settings', + order = 90 + }, + + reset = { + type = 'execute', + name = '|cffff0000Reset|r', + desc = "Resets all IceHUD options - WARNING: Reloads UI", + func = function() + IceHUD.IceCore:ResetSettings() + end, + order = 91 + }, + + dewdrop = { + type = 'execute', + name = 'dewdrop', + desc = 'Open Dewdrop menu for commands', + func = function() + if not (IceHUD.dewdrop:IsRegistered(IceHUD.IceCore.IceHUDFrame)) then + IceHUD.dewdrop:Register(IceHUD.IceCore.IceHUDFrame, + 'children', IceHUD.options, + 'point', "BOTTOMLEFT", + 'relativePoint', "TOPLEFT", + 'dontHook', true + ) + end + IceHUD.dewdrop:Open(IceHUD.IceCore.IceHUDFrame) + end, + order = 92 + } + } +} + function IceHUD:OnInitialize() self:SetDebugging(false) self:Debug("IceHUD:OnInitialize()") self.IceCore = IceCore:new() + + self.options.args.modules.args = self.IceCore:GetModuleOptions() + + self:RegisterChatCommand({ "/icehud" }, IceHUD.options) end diff --git a/IceHUD.toc b/IceHUD.toc index e89b9cd..4aa606e 100644 --- a/IceHUD.toc +++ b/IceHUD.toc @@ -1,17 +1,25 @@ ## Interface: 11100 ## Author: Iceroth +## Name: IceHUD ## Title: IceHUD |cff7fff7f -Ace2-|r ## Notes: Another HUD mod -## Version: 0.11 -## X-Category: UnitFrames +## Version: 0.2 ($Revision$) +## SavedVariables: IceCoreDB +## X-Category: UnitFrame +## X-Date: $Date$ +## X-Website: http://www.wowace.com/forums/index.php/topic,1705.0.html + libs\AceLibrary\AceLibrary.lua libs\AceOO-2.0\AceOO-2.0.lua +libs\AceDB-2.0\AceDB-2.0.lua libs\AceEvent-2.0\AceEvent-2.0.lua libs\AceDebug-2.0\AceDebug-2.0.lua libs\AceLocale-2.0\AceLocale-2.0.lua +libs\AceConsole-2.0\AceConsole-2.0.lua libs\AceAddon-2.0\AceAddon-2.0.lua libs\Metrognome-2.0\Metrognome-2.0.lua +libs\Dewdrop-2.0\Dewdrop-2.0.lua IceCore.lua IceHUD.lua @@ -24,6 +32,8 @@ modules\PlayerHealth.lua modules\PlayerMana.lua modules\TargetHealth.lua modules\TargetMana.lua +modules\PetHealth.lua +modules\PetMana.lua modules\DruidMana.lua modules\TargetInfo.lua modules\TargetOfTarget.lua diff --git a/IceUnitBar.lua b/IceUnitBar.lua index dabdb17..e1d342e 100644 --- a/IceUnitBar.lua +++ b/IceUnitBar.lua @@ -5,7 +5,7 @@ IceUnitBar.virtual = true IceUnitBar.prototype.unit = nil IceUnitBar.prototype.alive = nil -IceUnitBar.prototype.combat = nil + IceUnitBar.prototype.tapped = nil IceUnitBar.prototype.health = nil @@ -18,6 +18,8 @@ IceUnitBar.prototype.manaPercentage = nil IceUnitBar.prototype.unitClass = nil +IceUnitBar.prototype.hasPet = nil + -- Constructor -- function IceUnitBar.prototype:init(name, unit) @@ -41,27 +43,23 @@ function IceUnitBar.prototype:Enable() self:RegisterEvent("PLAYER_ALIVE", "Alive") self:RegisterEvent("PLAYER_DEAD", "Dead") - self:RegisterEvent("PLAYER_REGEN_DISABLED", "InCombat") - self:RegisterEvent("PLAYER_REGEN_ENABLED", "OutCombat") - self.alive = not UnitIsDeadOrGhost(self.unit) self.combat = UnitAffectingCombat(self.unit) end +-- OVERRIDE +function IceUnitBar.prototype:Redraw() + IceUnitBar.super.prototype.Redraw(self) + + self:Update(self.unit) +end -- 'Protected' methods -------------------------------------------------------- --- To be overridden -function IceUnitBar.prototype:Update(unit) - if (self.combat) then - self.alpha = IceElement.Alpha + 0.2 - self.backgroundAlpha = IceBarElement.BackgroundAlpha - else - self.alpha = IceElement.Alpha - self.backgroundAlpha = IceBarElement.BackgroundAlpha - end - + +function IceUnitBar.prototype:Update() + IceUnitBar.super.prototype.Update(self) self.tapped = UnitIsTapped(self.unit) and (not UnitIsTappedByPlayer(self.unit)) self.health = UnitHealth(self.unit) @@ -88,13 +86,3 @@ function IceUnitBar.prototype:Dead() end -function IceUnitBar.prototype:InCombat() - self.combat = true - self:Update(self.unit) -end - - -function IceUnitBar.prototype:OutCombat() - self.combat = false - self:Update(self.unit) -end diff --git a/modules/CastBar.lua b/modules/CastBar.lua index f6109d3..299a9bb 100644 --- a/modules/CastBar.lua +++ b/modules/CastBar.lua @@ -19,8 +19,6 @@ CastBar.prototype.debug = 0 -- Constructor -- function CastBar.prototype:init() CastBar.super.prototype.init(self, "CastBar") - self.side = IceCore.Side.Left - self.offset = 0 self:SetColor("castCasting", 242, 242, 10) self:SetColor("castChanneling", 117, 113, 161) @@ -32,10 +30,19 @@ end -- 'Public' methods ----------------------------------------------------------- + +function CastBar.prototype:GetDefaultSettings() + local settings = CastBar.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Left + settings["offset"] = 0 + return settings +end + + function CastBar.prototype:Enable() CastBar.super.prototype.Enable(self) - self.frame.bottomUpperText:SetWidth(200) + self.frame.bottomUpperText:SetWidth(180) self:RegisterEvent("SPELLCAST_START", "CastStart") self:RegisterEvent("SPELLCAST_STOP", "CastStop") @@ -76,12 +83,14 @@ function CastBar.prototype:OnUpdate() local taken = GetTime() - self.startTime local scale = taken / (self.castTime + self.delay) + self:Update() + if (self.casting or self.channeling) then if (scale > 1) then -- lag compensation scale = 1 end - local timeRemaining = self.castTime - taken + local timeRemaining = self.castTime + self.delay - taken local remaining = string.format("%.1f", timeRemaining) if (timeRemaining < 0 and timeRemaining > -1.5) then -- lag compensation remaining = 0 @@ -92,7 +101,7 @@ function CastBar.prototype:OnUpdate() end self:UpdateBar(scale, "castCasting") - self:SetBottomText1(remaining .. "s " .. self:GetFormattedText(self.spellName)) + self:SetBottomText1(remaining .. "s " .. self.spellName) elseif (self.failing) then self.alpha = 0.7 @@ -180,7 +189,6 @@ function CastBar.prototype:CastTerminated(reason) end - function CastBar.prototype:CastDelayed(delay) self.delay = self.delay + (delay / 1000) end @@ -188,8 +196,6 @@ end - - function CastBar.prototype:ChannelingStart(duration, spell) self.spellName = spell self.castTime = duration / 1000 @@ -225,7 +231,7 @@ function CastBar.prototype:CleanUp() self.failing = false self.succeeding = false self:SetBottomText1() - self.alpha = IceElement.Alpha + self.alpha = self.settings.alphaooc end diff --git a/modules/DruidMana.lua b/modules/DruidMana.lua index 642764b..3a2bf91 100644 --- a/modules/DruidMana.lua +++ b/modules/DruidMana.lua @@ -16,6 +16,14 @@ function DruidMana.prototype:init() end +function DruidMana.prototype:GetDefaultSettings() + local settings = DruidMana.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Right + settings["offset"] = 0 + return settings +end + + function DruidMana.prototype:Enable() DruidMana.super.prototype.Enable(self) @@ -26,6 +34,7 @@ function DruidMana.prototype:Enable() self:RegisterEvent("UNIT_DISPLAYPOWER", "FormsChanged") + self:FormsChanged(self.unit) self:Update() end diff --git a/modules/MirrorBar.lua b/modules/MirrorBar.lua index 699e64b..ab5c7e3 100644 --- a/modules/MirrorBar.lua +++ b/modules/MirrorBar.lua @@ -1,7 +1,7 @@ local AceOO = AceLibrary("AceOO-2.0") -- 2 classes in the same file.. ugly but keeps the idea of --- "1 module, 1 file" intact +-- "1 module = 1 file" intact ------------------------------------------------------------------------------- @@ -19,10 +19,12 @@ MirrorBar.prototype.label = nil -- Constructor -- -function MirrorBar.prototype:init(side, offset, name) +function MirrorBar.prototype:init(side, offset, name, db) MirrorBar.super.prototype.init(self, name) - self.side = side - self.offset = offset + self.settings = db + self.moduleSettings = {} + self.moduleSettings.side = side + self.moduleSettings.offset = offset -- unregister the event superclass registered, we don't want to register -- this to the core @@ -30,6 +32,12 @@ function MirrorBar.prototype:init(side, offset, name) end +function MirrorBar.prototype:UpdatePosition(side, offset) + self.moduleSettings.side = side + self.moduleSettings.offset = offset +end + + function MirrorBar.prototype:Enable() MirrorBar.super.prototype.Enable(self) @@ -68,9 +76,11 @@ function MirrorBar.prototype:OnUpdate(elapsed) local text = self.label .. " " .. remaining .. "s" - if (math.mod(self.offset, 2) == 1) then + if (math.mod(self.moduleSettings.offset, 2) == 1) then self:SetBottomText1(text) + self:SetBottomText2() else + self:SetBottomText1() self:SetBottomText2(text, "text", 1) end end @@ -136,9 +146,7 @@ MirrorBarHandler.prototype.bars = nil -- Constructor -- function MirrorBarHandler.prototype:init() MirrorBarHandler.super.prototype.init(self, "MirrorBarHandler") - self.side = IceCore.Side.Left - self.offset = 3 - + self.bars = {} self:SetColor("EXHAUSTION", 1, 0.9, 0) @@ -148,6 +156,65 @@ function MirrorBarHandler.prototype:init() end +function MirrorBarHandler.prototype:GetDefaultSettings() + local settings = MirrorBarHandler.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Left + settings["offset"] = 3 + return settings +end + + +-- OVERRIDE +function MirrorBarHandler.prototype:GetOptions() + local opts = MirrorBarHandler.super.prototype.GetOptions(self) + + opts["side"] = + { + type = 'group', + name = 'side', + desc = 'Side of the HUD where the bar appears', + args = { + left = { + type = 'execute', + name = 'left', + desc = "Left side", + func = function() + self.moduleSettings.side = IceCore.Side.Left + self:Redraw() + end + }, + right = { + type = 'execute', + name = 'right', + desc = "Right side", + func = function() + self.moduleSettings.side = IceCore.Side.Right + self:Redraw() + end + } + } + } + opts["offset"] = + { + type = 'range', + name = 'offset', + desc = 'Offset of the bar', + min = -1, + max = 10, + step = 1, + get = function() + return self.moduleSettings.offset + end, + set = function(value) + self.moduleSettings.offset = value + self:Redraw() + end + } + + return opts +end + + function MirrorBarHandler.prototype:Enable() MirrorBarHandler.super.prototype.Enable(self) self:RegisterEvent("MIRROR_TIMER_START", "MirrorStart") @@ -166,6 +233,16 @@ function MirrorBarHandler.prototype:Disable() end +function MirrorBarHandler.prototype:Redraw() + MirrorBarHandler.super.prototype.Redraw(self) + + for i = 1, table.getn(self.bars) do + self.bars[i]:UpdatePosition(self.moduleSettings.side, self.moduleSettings.offset + (i-1)) + self.bars[i]:Create(self.parent) + end +end + + function MirrorBarHandler.prototype:MirrorStart(timer, value, maxValue, scale, paused, label) local done = nil @@ -190,7 +267,7 @@ function MirrorBarHandler.prototype:MirrorStart(timer, value, maxValue, scale, p -- finally create a new instance if no available ones were found if not (done) then local count = table.getn(self.bars) - self.bars[count + 1] = MirrorBar:new(self.side, self.offset + count, "MirrorBar" .. tostring(count+1)) + self.bars[count + 1] = MirrorBar:new(self.moduleSettings.side, self.moduleSettings.offset + count, "MirrorBar" .. tostring(count+1), self.settings) self.bars[count + 1]:Create(self.parent) self.bars[count + 1]:Enable() self.bars[count + 1]:MirrorStart(timer, value, maxValue, scale, paused, label) diff --git a/modules/PetHealth.lua b/modules/PetHealth.lua new file mode 100644 index 0000000..5a0d357 --- /dev/null +++ b/modules/PetHealth.lua @@ -0,0 +1,106 @@ +local AceOO = AceLibrary("AceOO-2.0") + +local PetHealth = AceOO.Class(IceUnitBar) + +-- Constructor -- +function PetHealth.prototype:init() + PetHealth.super.prototype.init(self, "PetHealth", "pet") + + self:SetColor("petHealth", 37, 164, 30) +end + + +function PetHealth.prototype:GetDefaultSettings() + local settings = PetHealth.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Left + settings["offset"] = -1 + settings["scale"] = 0.7 + return settings +end + + +-- OVERRIDE +function PetHealth.prototype:GetOptions() + local opts = PetHealth.super.prototype.GetOptions(self) + opts["scale"] = + { + type = 'range', + name = 'scale', + desc = 'Scale of the bar', + min = 0.2, + max = 1, + step = 0.05, + get = function() + return self.moduleSettings.scale + end, + set = function(value) + self.moduleSettings.scale = value + self:Redraw() + end + } + return opts +end + + +-- OVERRIDE +function PetHealth.prototype:CreateFrame() + PetHealth.super.prototype.CreateFrame(self) + self.frame:SetScale(self.moduleSettings.scale) + + local point, relativeTo, relativePoint, xoff, yoff = self.frame.bottomUpperText:GetPoint() + if (point == "TOPLEFT") then + point = "BOTTOMLEFT" + else + point = "BOTTOMRIGHT" + end + + self.frame.bottomUpperText:ClearAllPoints() + self.frame.bottomUpperText:SetPoint(point, relativeTo, relativePoint, 0, 0) +end + + +function PetHealth.prototype:Enable() + PetHealth.super.prototype.Enable(self) + + self:RegisterEvent("PET_UI_UPDATE", "CheckPet"); + self:RegisterEvent("PLAYER_PET_CHANGED", "CheckPet"); + self:RegisterEvent("PET_BAR_CHANGED", "CheckPet"); + self:RegisterEvent("UNIT_PET", "CheckPet"); + + self:RegisterEvent("UNIT_HEALTH", "Update") + self:RegisterEvent("UNIT_MAXHEALTH", "Update") + + self:CheckPet() +end + + +function PetHealth.prototype:CheckPet() + if (UnitExists(self.unit)) then + self.frame:Show() + self:Update(self.unit) + else + self.frame:Hide() + end +end + + +function PetHealth.prototype:Update(unit) + PetHealth.super.prototype.Update(self) + if (unit and (unit ~= self.unit)) then + return + end + + local color = "petHealth" + if not (self.alive) then + color = "dead" + end + + + self:UpdateBar(self.health/self.maxHealth, color) + self:SetBottomText1(self.healthPercentage) +end + + + +-- Load us up +PetHealth:new() diff --git a/modules/PetMana.lua b/modules/PetMana.lua new file mode 100644 index 0000000..f1a7394 --- /dev/null +++ b/modules/PetMana.lua @@ -0,0 +1,141 @@ +local AceOO = AceLibrary("AceOO-2.0") + +local PetMana = AceOO.Class(IceUnitBar) + +-- Constructor -- +function PetMana.prototype:init() + PetMana.super.prototype.init(self, "PetMana", "pet") + + self:SetColor("petMana", 62, 54, 152) + self:SetColor("petRage", 171, 59, 59) + self:SetColor("petEnergy", 218, 231, 31) + self:SetColor("targetFocus", 242, 149, 98) +end + + +-- OVERRIDE +function PetMana.prototype:GetOptions() + local opts = PetMana.super.prototype.GetOptions(self) + opts["scale"] = + { + type = 'range', + name = 'scale', + desc = 'Scale of the bar', + min = 0.2, + max = 1, + step = 0.05, + get = function() + return self.moduleSettings.scale + end, + set = function(value) + self.moduleSettings.scale = value + self:Redraw() + end + } + return opts +end + + +function PetMana.prototype:GetDefaultSettings() + local settings = PetMana.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Right + settings["offset"] = -1 + settings["scale"] = 0.7 + return settings +end + + +-- OVERRIDE +function PetMana.prototype:CreateFrame() + PetMana.super.prototype.CreateFrame(self) + self.frame:SetScale(self.moduleSettings.scale) + + local point, relativeTo, relativePoint, xoff, yoff = self.frame.bottomUpperText:GetPoint() + if (point == "TOPLEFT") then + point = "BOTTOMLEFT" + else + point = "BOTTOMRIGHT" + end + + self.frame.bottomUpperText:ClearAllPoints() + self.frame.bottomUpperText:SetPoint(point, relativeTo, relativePoint, 0, 0) +end + + +function PetMana.prototype:Enable() + PetMana.super.prototype.Enable(self) + + self:RegisterEvent("PET_UI_UPDATE", "CheckPet"); + self:RegisterEvent("PLAYER_PET_CHANGED", "CheckPet"); + self:RegisterEvent("PET_BAR_CHANGED", "CheckPet"); + self:RegisterEvent("UNIT_PET", "CheckPet"); + + self:RegisterEvent("UNIT_MANA", "Update") + self:RegisterEvent("UNIT_MAXMANA", "Update") + self:RegisterEvent("UNIT_RAGE", "Update") + self:RegisterEvent("UNIT_MAXRAGE", "Update") + self:RegisterEvent("UNIT_ENERGY", "Update") + self:RegisterEvent("UNIT_MAXENERGY", "Update") + + self:RegisterEvent("UNIT_DISPLAYPOWER", "ManaType") + + self:CheckPet() + self:ManaType(self.unit) +end + + +function PetMana.prototype:CheckPet() + if (UnitExists(self.unit)) then + self.frame:Show() + self:Update(self.unit) + else + self.frame:Hide() + end +end + + +function PetMana.prototype:ManaType(unit) + if (unit ~= self.unit) then + return + end + + self.manaType = UnitPowerType(self.unit) + self:Update(self.unit) +end + + +function PetMana.prototype:Update(unit) + PetMana.super.prototype.Update(self) + if (unit and (unit ~= self.unit)) then + return + end + + if ((not UnitExists(unit)) or (self.maxMana == 0)) then + self.frame:Hide() + return + else + self.frame:Show() + end + + local color = "petMana" + if not (self.alive) then + color = "dead" + else + local color = "petMana" + if (self.manaType == 1) then + color = "petRage" + elseif (self.manaType == 2) then + color = "petFocus" + elseif (self.manaType == 3) then + color = "petEnergy" + end + end + + self:UpdateBar(self.mana/self.maxMana, color) + self:SetBottomText1(self.manaPercentage) +end + + + +-- Load us up +PetMana:new() diff --git a/modules/PlayerHealth.lua b/modules/PlayerHealth.lua index b0ecb33..e415114 100644 --- a/modules/PlayerHealth.lua +++ b/modules/PlayerHealth.lua @@ -5,13 +5,19 @@ local PlayerHealth = AceOO.Class(IceUnitBar) -- Constructor -- function PlayerHealth.prototype:init() PlayerHealth.super.prototype.init(self, "PlayerHealth", "player") - self.side = IceCore.Side.Left - self.offset = 1 self:SetColor("playerHealth", 37, 164, 30) end +function PlayerHealth.prototype:GetDefaultSettings() + local settings = PlayerHealth.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Left + settings["offset"] = 1 + return settings +end + + function PlayerHealth.prototype:Enable() PlayerHealth.super.prototype.Enable(self) diff --git a/modules/PlayerMana.lua b/modules/PlayerMana.lua index db5ac80..0e71d56 100644 --- a/modules/PlayerMana.lua +++ b/modules/PlayerMana.lua @@ -7,14 +7,20 @@ PlayerMana.prototype.manaType = nil -- Constructor -- function PlayerMana.prototype:init() PlayerMana.super.prototype.init(self, "PlayerMana", "player") - self.side = IceCore.Side.Right - self.offset = 1 self:SetColor("playerMana", 62, 54, 152) self:SetColor("playerRage", 171, 59, 59) self:SetColor("playerEnergy", 218, 231, 31) end +function PlayerMana.prototype:GetDefaultSettings() + local settings = PlayerMana.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Right + settings["offset"] = 1 + return settings +end + + function PlayerMana.prototype:Enable() PlayerMana.super.prototype.Enable(self) @@ -29,7 +35,6 @@ function PlayerMana.prototype:Enable() self:RegisterEvent("UNIT_DISPLAYPOWER", "ManaType") self:ManaType(self.unit) - self:Update("player") end diff --git a/modules/TargetHealth.lua b/modules/TargetHealth.lua index 51e19f2..0918fba 100644 --- a/modules/TargetHealth.lua +++ b/modules/TargetHealth.lua @@ -5,8 +5,6 @@ local TargetHealth = AceOO.Class(IceUnitBar) -- Constructor -- function TargetHealth.prototype:init() TargetHealth.super.prototype.init(self, "TargetHealth", "target") - self.side = IceCore.Side.Left - self.offset = 2 self:SetColor("targetHealthHostile", 231, 31, 36) self:SetColor("targetHealthFriendly", 46, 223, 37) @@ -14,6 +12,15 @@ function TargetHealth.prototype:init() end +function TargetHealth.prototype:GetDefaultSettings() + local settings = TargetHealth.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Left + settings["offset"] = 2 + return settings +end + + + function TargetHealth.prototype:Enable() TargetHealth.super.prototype.Enable(self) diff --git a/modules/TargetInfo.lua b/modules/TargetInfo.lua index fc0288f..ee2b840 100644 --- a/modules/TargetInfo.lua +++ b/modules/TargetInfo.lua @@ -25,13 +25,14 @@ function TargetInfo.prototype:Enable() self:RegisterEvent("UNIT_AURA", "AuraChanged") self:RegisterEvent("UNIT_FACTION", "InfoTextChanged") - self:RegisterEvent("UNIT_LEVEL", "InfoTextChanged"); - self:RegisterEvent("UNIT_CLASSIFICATION_CHANGED", "InfoTextChanged"); - self:RegisterEvent("PLAYER_FLAGS_CHANGED", "InfoTextChanged"); + self:RegisterEvent("UNIT_LEVEL", "InfoTextChanged") + self:RegisterEvent("UNIT_CLASSIFICATION_CHANGED", "InfoTextChanged") + self:RegisterEvent("PLAYER_FLAGS_CHANGED", "InfoTextChanged") + self:RegisterEvent("UNIT_DYNAMIC_FLAGS", "InfoTextChanged") - self:RegisterEvent("RAID_TARGET_UPDATE", "RaidIconChanged"); + self:RegisterEvent("RAID_TARGET_UPDATE", "RaidIconChanged") - self:RegisterEvent("PLAYER_COMBO_POINTS", "ComboPointsChanged"); + self:RegisterEvent("PLAYER_COMBO_POINTS", "ComboPointsChanged") end @@ -100,7 +101,7 @@ end function TargetInfo.prototype:CreateComboFrame() - self.frame.comboPoints = self:FontFactory("Bold", 18) + self.frame.comboPoints = self:FontFactory("Bold", 20) self.frame.comboPoints:SetWidth(TargetInfo.Width) self.frame.comboPoints:SetJustifyH("CENTER") @@ -268,6 +269,12 @@ function TargetInfo.prototype:TargetChanged() end +function TargetInfo.prototype:CombatCheck(arg1) + print(arg1) +end + + + function TargetInfo.prototype:GetInfoString() local u = "target" @@ -275,14 +282,14 @@ function TargetInfo.prototype:GetInfoString() return "" end - local class, _ = UnitClass(u) + local class, unitClass = UnitClass(u) local creatureType = UnitCreatureType(u) local classification = UnitClassification(u) local level = UnitLevel(u) local isPlayer = UnitIsPlayer(u) - local classColor = self:GetHexColor(class) + local classColor = self:GetHexColor(unitClass) local sLevel = "[??] " if (level > 0) then @@ -326,14 +333,13 @@ function TargetInfo.prototype:GetInfoString() sLeader = "[Leader] " end - local guildName, guildRankName, guildRankIndex = GetGuildInfo("target") - local sGuild = "" - if (guildName) then - --sGuild = " <" .. guildName .. ">" - end + local sCombat = "" + --if (UnitAffectingCombat(u)) then + -- sCombat = " +Combat+" + --end return string.format("%s%s%s%s%s%s", - sLevel, sClass, sPVP, sClassification, sLeader, sGuild) + sLevel, sClass, sPVP, sClassification, sLeader, sCombat) end diff --git a/modules/TargetMana.lua b/modules/TargetMana.lua index 6b848db..f3044f3 100644 --- a/modules/TargetMana.lua +++ b/modules/TargetMana.lua @@ -2,11 +2,10 @@ local AceOO = AceLibrary("AceOO-2.0") local TargetMana = AceOO.Class(IceUnitBar) + -- Constructor -- function TargetMana.prototype:init() TargetMana.super.prototype.init(self, "TargetMana", "target") - self.side = IceCore.Side.Right - self.offset = 2 self:SetColor("targetMana", 52, 64, 221) self:SetColor("targetRage", 235, 44, 26) @@ -15,6 +14,14 @@ function TargetMana.prototype:init() end +function TargetMana.prototype:GetDefaultSettings() + local settings = TargetMana.super.prototype.GetDefaultSettings(self) + settings["side"] = IceCore.Side.Right + settings["offset"] = 2 + return settings +end + + function TargetMana.prototype:Enable() TargetMana.super.prototype.Enable(self) diff --git a/modules/TargetOfTarget.lua b/modules/TargetOfTarget.lua index 2abc913..f7f87c6 100644 --- a/modules/TargetOfTarget.lua +++ b/modules/TargetOfTarget.lua @@ -27,6 +27,12 @@ function TargetOfTarget.prototype:Enable() end +function TargetOfTarget.prototype:Disable() + TargetOfTarget.super.prototype.Disable(self) + Metrognome:Unregister("TargetOfTarget") +end + + -- 'Protected' methods -------------------------------------------------------- -- OVERRIDE