Compare with Previous | Blame | View Log
-- ZAM_UnitFrames © ZAM Network LLC -- All Rights Reserved --add "you have died" text to inside player frame? --recreate the reticleover frame local versionNo = "1.3" local wm = GetWindowManager() local strformat = string.format local LAM = LibStub("LibAddonMenu-2.0") local LMP = LibStub("LibMediaProvider-1.0") local targetFrame, inCombat, db --create these in the main chunk local playerFrame = wm:CreateTopLevelWindow("ZAMUnitFrames_Player") do playerFrame.health = wm:CreateControl("ZAMUnitFrames_PlayerHealth", playerFrame, CT_STATUSBAR) playerFrame.magicka = wm:CreateControl("ZAMUnitFrames_PlayerMagicka", playerFrame, CT_STATUSBAR) playerFrame.stamina = wm:CreateControl("ZAMUnitFrames_PlayerStamina", playerFrame, CT_STATUSBAR) playerFrame.health.text = wm:CreateControl("ZAMUnitFrames_PlayerHealthText", playerFrame, CT_LABEL) playerFrame.magicka.text = wm:CreateControl("ZAMUnitFrames_PlayerMagickaText", playerFrame, CT_LABEL) playerFrame.stamina.text = wm:CreateControl("ZAMUnitFrames_PlayerStaminaText", playerFrame, CT_LABEL) end local defaults = { locked = true, barTexture = "ESO Basic", font = "Arial Narrow", fontStyle = "soft-shadow-thin", --add an option for this border = "ESO Gold", borderSpacing = 4, borderSize = 32, targetReaction = false, combatFade = false, } local function SetFonts(frame) local fontConfig = "%s|%d|%s" local path = LMP:Fetch("font", db.font) local fstyle = db.fontStyle frame.health.text:SetFont(strformat(fontConfig, path, frame == playerFrame and 36 or 22, fstyle)) if frame == playerFrame then frame.magicka.text:SetFont(strformat(fontConfig, path, 22, fstyle)) frame.stamina.text:SetFont(strformat(fontConfig, path, 22, fstyle)) else --target frame frame.name:SetFont(strformat(fontConfig, path, 18, fstyle)) frame.level:SetFont(strformat(fontConfig, path, 18, fstyle)) frame.caption:SetFont(strformat(fontConfig, path, 18, fstyle)) end end local function SetBarTextures(frame) local tex = LMP:Fetch("statusbar", db.barTexture) --local tex = [[LMP_MediaStash\statusbar\Glamour7]] if frame == playerFrame then frame.health:SetTexture(tex) frame.magicka:SetTexture(tex) frame.stamina:SetTexture(tex) frame.siege:SetTexture(tex) frame.werewolf:SetTexture(tex) frame.mount:SetTexture(tex) else --target frame frame.health.barLeft:SetTexture(tex) frame.health.barRight:SetTexture(tex) end end local function BorderConfig(frame) local spacing = db.borderSpacing frame.bg:ClearAnchors() frame.bg:SetAnchor(TOPLEFT, frame, TOPLEFT, -(spacing), -(spacing)) frame.bg:SetAnchor(BOTTOMRIGHT, frame, BOTTOMRIGHT, spacing, spacing) frame.bg:SetInsets(spacing, spacing, -(spacing), -(spacing)) frame.bg:SetEdgeTexture(LMP:Fetch("border", db.border), 256, 32, db.borderSize) end local function UnregisterAttributeBars() ZO_PlayerAttributeMagicka:UnregisterForEvent(EVENT_POWER_UPDATE) ZO_PlayerAttributeMagicka:UnregisterForEvent(EVENT_INTERFACE_SETTING_CHANGED) ZO_PlayerAttributeMagicka:UnregisterForEvent(EVENT_PLAYER_ACTIVATED) EVENT_MANAGER:UnregisterForUpdate("ZO_PlayerAttributeMagickaFadeUpdate") ZO_PlayerAttributeMagicka:SetHidden(true) ZO_PlayerAttributeStamina:UnregisterForEvent(EVENT_POWER_UPDATE) ZO_PlayerAttributeStamina:UnregisterForEvent(EVENT_INTERFACE_SETTING_CHANGED) ZO_PlayerAttributeStamina:UnregisterForEvent(EVENT_PLAYER_ACTIVATED) EVENT_MANAGER:UnregisterForUpdate("ZO_PlayerAttributeStaminaFadeUpdate") ZO_PlayerAttributeStamina:SetHidden(true) ZO_PlayerAttributeHealth:UnregisterForEvent(EVENT_POWER_UPDATE) ZO_PlayerAttributeHealth:UnregisterForEvent(EVENT_INTERFACE_SETTING_CHANGED) ZO_PlayerAttributeHealth:UnregisterForEvent(EVENT_PLAYER_ACTIVATED) EVENT_MANAGER:UnregisterForUpdate("ZO_PlayerAttributeHealthFadeUpdate") ZO_PlayerAttributeHealth:SetHidden(true) end local function CreatePlayerFrame() --main frame playerFrame:SetDimensions(300, 54) playerFrame:SetDrawLayer(DL_BACKGROUND) if not db.playerFrame then db.playerFrame = {} db.playerFrame.point = {["a"]=BOTTOM, ["b"]=BOTTOM, ["x"]=0, ["y"]=-100} end local anchor = db.playerFrame.point playerFrame:SetAnchor(anchor.a, GuiRoot, anchor.b or anchor.a, anchor.x, anchor.y) playerFrame:SetMouseEnabled(true) playerFrame:SetMovable(not db.locked) playerFrame:SetClampedToScreen(true) if db.combatFade then playerFrame:SetAlpha(0) end playerFrame:SetHandler("OnMouseUp", function(self) self:StopMovingOrResizing() local _,a,_,b,x,y = self:GetAnchor() db.playerFrame.point = {["a"]=a, ["b"]=b, ["x"]=x, ["y"]=y} end) --border & background playerFrame.bg = wm:CreateControl("ZAMUnitFrames_PlayerBG", playerFrame, CT_BACKDROP) playerFrame.bg:SetCenterColor(0, 0, 0, .5) playerFrame.bg:SetEdgeColor(1, 1, 1, 1) BorderConfig(playerFrame) --health bar playerFrame.health:SetAnchor(TOPLEFT, playerFrame, TOPLEFT, 1, 1) playerFrame.health:SetAnchor(TOPRIGHT, playerFrame, TOPRIGHT, -1, 1) playerFrame.health:SetHeight(20) playerFrame.health:SetMinMax(0, 100) --playerFrame.health:SetValue(100) playerFrame.health.text:SetAnchor(LEFT, playerFrame, RIGHT, 8, 0) playerFrame.health.text:SetText("100%") --siege health mini-bar playerFrame.siege = wm:CreateControl("ZAMUnitFrames_PlayerSiegeHealth", playerFrame.health, CT_STATUSBAR) playerFrame.siege:SetAnchor(BOTTOMLEFT, playerFrame.health, BOTTOMLEFT) playerFrame.siege:SetAnchor(BOTTOMRIGHT, playerFrame.health, BOTTOMRIGHT) playerFrame.siege:SetHeight(8) playerFrame.siege:SetMinMax(0,100) playerFrame.siege:SetHidden(true) --playerFrame.siege:SetValue(90) do local r1,g1,b1 = ZO_POWER_BAR_GRADIENT_COLORS[POWERTYPE_HEALTH][1]:UnpackRGBA() local r2,g2,b2 = ZO_POWER_BAR_GRADIENT_COLORS[POWERTYPE_HEALTH][2]:UnpackRGBA() playerFrame.health:SetGradientColors(r1, g1, b1, 1, r2, g2, b2, 1) playerFrame.health.text:SetColor(r2, g2, b2) --playerFrame.siege:SetColor(r1-.1, g1-.1, b1-.1) playerFrame.siege:SetGradientColors(r1-.2, g1-.2, b1-.2, 1, r2-.2, g2-.2, b2-.2, 1) end --magicka bar playerFrame.magicka:SetAnchor(TOPLEFT, playerFrame.health, BOTTOMLEFT, 0, 1) playerFrame.magicka:SetAnchor(TOPRIGHT, playerFrame.health, BOTTOMRIGHT, 0, 1) playerFrame.magicka:SetHeight(15) playerFrame.magicka:SetMinMax(0,100) --playerFrame.magicka:SetValue(50) playerFrame.magicka.text:SetAnchor(TOPRIGHT, playerFrame, TOPLEFT, -8, 0) playerFrame.magicka.text:SetText("100%") --werewolf mini-bar playerFrame.werewolf = wm:CreateControl("ZAMUnitFrames_PlayerWerewolf", playerFrame.magicka, CT_STATUSBAR) playerFrame.werewolf:SetAnchor(BOTTOMLEFT, playerFrame.magicka, BOTTOMLEFT) playerFrame.werewolf:SetAnchor(BOTTOMRIGHT, playerFrame.magicka, BOTTOMRIGHT) playerFrame.werewolf:SetHeight(5) --playerFrame.mount:SetMinMax(0,100) playerFrame.werewolf:SetHidden(true) --playerFrame.werewolf:SetValue(70) do local r1,g1,b1 = ZO_POWER_BAR_GRADIENT_COLORS[POWERTYPE_MAGICKA][1]:UnpackRGBA() local r2,g2,b2 = ZO_POWER_BAR_GRADIENT_COLORS[POWERTYPE_MAGICKA][2]:UnpackRGBA() playerFrame.magicka:SetGradientColors(r1, g1, b1, 1, r2, g2, b2, 1) playerFrame.magicka.text:SetColor(r2, g2, b2) --playerFrame.werewolf:SetColor(r1-.1, g1-.1, b1-.1) playerFrame.werewolf:SetGradientColors(r1-.2, g1-.2, b1-.2, 1, r2-.2, g2-.2, b2-.2, 1) end --stamina bar playerFrame.stamina:SetAnchor(TOPLEFT, playerFrame.magicka, BOTTOMLEFT, 0, 1) playerFrame.stamina:SetAnchor(TOPRIGHT, playerFrame.magicka, BOTTOMRIGHT, 0, 1) playerFrame.stamina:SetHeight(15) playerFrame.stamina:SetMinMax(0,100) --playerFrame.stamina:SetValue(75) playerFrame.stamina.text:SetAnchor(BOTTOMRIGHT, playerFrame, BOTTOMLEFT, -8, 0) playerFrame.stamina.text:SetText("100%") --mount stamina mini-bar playerFrame.mount = wm:CreateControl("ZAMUnitFrames_PlayerMountStamina", playerFrame.stamina, CT_STATUSBAR) playerFrame.mount:SetAnchor(BOTTOMLEFT, playerFrame.stamina, BOTTOMLEFT) playerFrame.mount:SetAnchor(BOTTOMRIGHT, playerFrame.stamina, BOTTOMRIGHT) playerFrame.mount:SetHeight(5) --playerFrame.mount:SetMinMax(0,100) playerFrame.mount:SetHidden(true) --playerFrame.mount:SetValue(70) do local r1,g1,b1 = ZO_POWER_BAR_GRADIENT_COLORS[POWERTYPE_STAMINA][1]:UnpackRGBA() local r2,g2,b2 = ZO_POWER_BAR_GRADIENT_COLORS[POWERTYPE_STAMINA][2]:UnpackRGBA() playerFrame.stamina:SetGradientColors(r1, g1, b1, 1, r2, g2, b2, 1) playerFrame.stamina.text:SetColor(r2 +.05, g2 +.05, b2 +.05) --playerFrame.mount:SetColor(r1-.1, g1-.1, b1-.1) playerFrame.mount:SetGradientColors(r1-.2, g1-.2, b1-.2, 1, r2-.2, g2-.2, b2-.2, 1) end --set the fonts & bar textures SetFonts(playerFrame) SetBarTextures(playerFrame) --reparent & reuse warner frame/animations local healthwarner = ZO_PlayerAttributeHealthWarner playerFrame.health.warner = healthwarner healthwarner:SetParent(playerFrame.health) healthwarner:ClearAnchors() healthwarner:SetAnchor(TOPLEFT, playerFrame.health, TOPLEFT, -18, 0) healthwarner:SetAnchor(BOTTOMRIGHT, playerFrame.health, BOTTOMRIGHT, 18, 0) GetControl(healthwarner, "Left"):SetTextureCoords(.7578125, .5234375, 0, 1) GetControl(healthwarner, "Right"):SetTextureCoords(.5234375, .7578125, 0, 1) GetControl(healthwarner, "Left"):SetWidth(30) GetControl(healthwarner, "Right"):SetWidth(30) local magickawarner = ZO_PlayerAttributeMagickaWarner playerFrame.magicka.warner = magickawarner magickawarner:SetParent(playerFrame.magicka) magickawarner:ClearAnchors() magickawarner:SetAnchor(TOPLEFT, playerFrame.magicka, TOPLEFT, -18, 0) magickawarner:SetAnchor(BOTTOMRIGHT, playerFrame.magicka, BOTTOMRIGHT, 18, 0) GetControl(magickawarner, "Left"):SetTextureCoords(.7578125, .5234375, 0, 1) GetControl(magickawarner, "Right"):SetTextureCoords(.5234375, .7578125, 0, 1) GetControl(magickawarner, "Left"):SetWidth(30) GetControl(magickawarner, "Right"):SetWidth(30) local staminawarner = ZO_PlayerAttributeStaminaWarner playerFrame.stamina.warner = staminawarner staminawarner:SetParent(playerFrame.stamina) staminawarner:ClearAnchors() staminawarner:SetAnchor(TOPLEFT, playerFrame.stamina, TOPLEFT, -18, 0) staminawarner:SetAnchor(BOTTOMRIGHT, playerFrame.stamina, BOTTOMRIGHT, 18, 0) GetControl(staminawarner, "Left"):SetTextureCoords(.7578125, .5234375, 0, 1) GetControl(staminawarner, "Right"):SetTextureCoords(.5234375, .7578125, 0, 1) GetControl(staminawarner, "Left"):SetWidth(30) GetControl(staminawarner, "Right"):SetWidth(30) UnregisterAttributeBars() end local function TargetFrameTweaks() targetFrame = ZO_TargetUnitFramereticleover targetFrame.health = {} targetFrame.health.barLeft = ZO_TargetUnitFramereticleoverBarLeft targetFrame.health.barRight = ZO_TargetUnitFramereticleoverBarRight targetFrame.health.barRight.gloss:SetHidden(true) targetFrame.health.barLeft.gloss:SetHidden(true) targetFrame.health.text = wm:CreateControl("ZAMUnitFrames_TargetHealthText", targetFrame, CT_LABEL) targetFrame.health.text:SetAnchor(RIGHT, targetFrame, LEFT, -5, 0) targetFrame.health.text:SetText("100%") targetFrame.name = ZO_TargetUnitFramereticleoverName targetFrame.level = ZO_TargetUnitFramereticleoverLevel targetFrame.caption = ZO_TargetUnitFramereticleoverCaption if not db.targetFrame then db.targetFrame = {} db.targetFrame.point = {["a"] = TOP, ["b"] = TOP, ["x"] = 0, ["y"] = 88} end targetFrame:ClearAnchors() local anchor = db.targetFrame.point targetFrame:SetAnchor(anchor.a, GuiRoot, anchor.b, anchor.x, anchor.y) targetFrame.moverFrame = wm:CreateTopLevelWindow("ZAMUnitFrames_TargetMoverFrame") local moverFrame = targetFrame.moverFrame moverFrame:SetDrawLayer(DL_BACKGROUND) moverFrame:SetAnchor(anchor.a, GuiRoot, anchor.b, anchor.x, anchor.y) moverFrame:SetDimensions(280, 75) moverFrame.bg = wm:CreateControl("ZAMUnitFrames_TargetMoverFrameBG", moverFrame, CT_TEXTURE) moverFrame.bg:SetColor(1, 1, 1, .5) moverFrame.bg:SetAnchorFill(moverFrame) moverFrame:SetHidden(db.locked) moverFrame:SetMouseEnabled(true) moverFrame:SetMovable(not db.locked) moverFrame:SetClampedToScreen(true) moverFrame:SetHandler("OnMouseUp", function(self) self:StopMovingOrResizing() local _,a,_,b,x,y = self:GetAnchor() db.targetFrame.point = {["a"] = a, ["b"] = b, ["x"] = x, ["y"] = y} targetFrame:ClearAnchors() targetFrame:SetAnchor(a, GuiRoot, b, x, y) end) SetFonts(targetFrame) local function UpdateColor() if DoesUnitExist("reticleover") then local curHealthT, maxHealthT, effMaxHealthT = GetUnitPower("reticleover", POWERTYPE_HEALTH) targetFrame.health.text:SetText(strformat("%d%%", curHealthT/effMaxHealthT*100)) if db.targetReaction then local r, g, b = GetUnitReactionColor("reticleover") targetFrame.health.barLeft:SetGradientColors(r*.52, g*.73, b*.73, 1, r, g, b, 1) targetFrame.health.barRight:SetGradientColors(r*.52, g*.73, b*.73, 1, r, g, b, 1) end end end targetFrame.health.text:RegisterForEvent(EVENT_RETICLE_TARGET_CHANGED, UpdateColor) targetFrame.health.text:RegisterForEvent(EVENT_DISPOSITION_UPDATE, UpdateColor) end local function InitializeBars() local curHealth, maxHealth, effMaxHealth = GetUnitPower("player", POWERTYPE_HEALTH) playerFrame.health:SetMinMax(0, effMaxHealth) playerFrame.health:SetValue(curHealth) local curMagicka, maxMagicka, effMaxMagicka = GetUnitPower("player", POWERTYPE_MAGICKA) playerFrame.magicka:SetMinMax(0, effMaxMagicka) playerFrame.magicka:SetValue(curMagicka) local curStamina, maxStamina, effMaxStamina = GetUnitPower("player", POWERTYPE_STAMINA) playerFrame.stamina:SetMinMax(0, effMaxStamina) playerFrame.stamina:SetValue(curStamina) local curWerewolf, maxWerewolf, effMaxWerewolf = GetUnitPower("player", POWERTYPE_WEREWOLF) playerFrame.werewolf:SetMinMax(0, effMaxWerewolf) playerFrame.werewolf:SetValue(curWerewolf) local curMountSta, maxMountSta, effMaxMountSta = GetUnitPower("player", POWERTYPE_MOUNT_STAMINA) playerFrame.mount:SetMinMax(0, effMaxMountSta) playerFrame.mount:SetValue(curMountSta) end local function CombatFade(event, inCombatBool) --make this fade in/out instead? if db.combatFade then inCombat = inCombatBool or inCombat local curHealth, maxHealth, effMaxHealth = GetUnitPower("player", POWERTYPE_HEALTH) local curMagicka, maxMagicka, effMaxMagicka = GetUnitPower("player", POWERTYPE_MAGICKA) if not inCombat and curHealth == effMaxHealth and curMagicka == effMaxMagicka then playerFrame:SetAlpha(0) else playerFrame:SetAlpha(1) end end end local function UpdateSiegeHealthBar(event, unit) unit = unit or (IsGameCameraSiegeControlled() and "controlledsiege") or (IsPlayerEscortingRam() and "escortedram") if not DoesUnitExist("player") and (unit == "controlledsiege" or unit == "escortedram") then playerFrame.siege:SetHidden(false) local curHealth, maxHealth, effMaxHealth = GetUnitPower(unit, POWERTYPE_HEALTH) ZO_StatusBar_SmoothTransition(playerFrame.siege, curHealth, effMaxHealth) else playerFrame.siege:SetHidden(true) end end local function PowerUpdate(event, unitTag, powerIndex, powerType, powerValue, powerMax, powerEffectiveMax) if unitTag == "player" then if powerType == POWERTYPE_MAGICKA then ZO_StatusBar_SmoothTransition(playerFrame.magicka, powerValue, powerEffectiveMax) playerFrame.magicka.text:SetText(strformat("%d%%", powerValue/powerEffectiveMax*100)) elseif powerType == POWERTYPE_STAMINA then ZO_StatusBar_SmoothTransition(playerFrame.stamina, powerValue, powerEffectiveMax) playerFrame.stamina.text:SetText(strformat("%d%%", powerValue/powerEffectiveMax*100)) elseif powerType == POWERTYPE_HEALTH then ZO_StatusBar_SmoothTransition(playerFrame.health, powerValue, powerEffectiveMax) playerFrame.health.text:SetText(strformat("%d%%", powerValue/powerEffectiveMax*100)) elseif powerType == POWERTYPE_WEREWOLF then ZO_StatusBar_SmoothTransition(playerFrame.werewolf, powerValue, powerEffectiveMax) elseif powerType == POWERTYPE_MOUNT_STAMINA then ZO_StatusBar_SmoothTransition(playerFrame.mount, powerValue, powerEffectiveMax) end CombatFade() elseif unitTag == "reticleover" and powerType == POWERTYPE_HEALTH then targetFrame.health.text:SetText(strformat("%d%%", powerValue/powerEffectiveMax*100)) elseif (unitTag == "controlledsiege" or unitTag == "escortedram") and powerType == POWERTYPE_HEALTH then --does this event fire for these units? ZO_StatusBar_SmoothTransition(playerFrame.siege, powerValue, powerEffectiveMax) end end local function SetUpDB() ZAM_UnitFramesDB = ZAM_UnitFramesDB or {} for k,v in pairs(defaults) do if type(ZAM_UnitFramesDB[k]) == "nil" then ZAM_UnitFramesDB[k] = v end end db = ZAM_UnitFramesDB end local panelData = { type = "panel", name = "ZAM UnitFrames", displayName = "|t72:36:ZAM_Stats\\ZAM_Logo.dds|t UnitFrames", slashCommand = "/zamuf", registerForDefaults = true, author = "Seerah", version = versionNo, } local optionsData = { [1] = { type = "checkbox", name = "Lock Frames", tooltip = "Lock the unit frames in place.", getFunc = function() return db.locked end, setFunc = function(value) db.locked = value playerFrame:SetMovable(not db.locked) targetFrame.moverFrame:SetHidden(db.locked) targetFrame.moverFrame:SetMovable(not db.locked) end, default = defaults.locked }, [2] = { type = "checkbox", name = "Target Reaction", tooltip = "Color the reticle target's healthbar by reaction.", getFunc = function() return db.targetReaction end, setFunc = function(value) db.targetReaction = value if not db.targetReaction then targetFrame.health.barRight:SetGradientColors(114/255, 35/255, 35/255, 1, 218/255, 48/255, 48/255, 1) targetFrame.health.barLeft:SetGradientColors(114/255, 35/255, 35/255, 1, 218/255, 48/255, 48/255, 1) end end, default = defaults.targetReaction }, [3] = { type = "checkbox", name = "Show Only In Combat", tooltip = "Show the player frame only when in combat or when health or magicka aren't full.", getFunc = function() return db.combatFade end, setFunc = function(value) db.combatFade = value playerFrame:SetAlpha(db.combatFade and 0 or 1) end, default = defaults.combatFade }, [4] = { type = "header", name = "Skinning Options", }, [5] = { type = "dropdown", name = "Bar Texture", tooltip = "The texture to use for the status bars.", choices = LMP:List("statusbar"), getFunc = function() return db.barTexture end, setFunc = function(barTexture) db.barTexture = barTexture SetBarTextures(playerFrame) end, default = defaults.barTexture }, [6] = { type = "dropdown", name = "Font", tooltip = "The font to use for the text.", choices = LMP:List("font"), getFunc = function() return db.font end, setFunc = function(font) db.font = font SetFonts(ZAMUnitFrames_Player) end, default = defaults.font }, [7] = { type = "dropdown", name = "Border", tooltip = "The texture to use for the border.", choices = LMP:List("border"), getFunc = function() return db.border end, setFunc = function(border) db.border = border playerFrame.bg:SetEdgeTexture(LMP:Fetch("border", border), 256, 32, 40) end, default = defaults.border }, [8] = { type = "slider", name = "Border Spacing", tooltip = "The distance between the outside edge of the border and the background of the frame.", min = 0, max = 20, step = 1, getFunc = function() return db.borderSpacing end, setFunc = function(val) db.borderSpacing = val BorderConfig(playerFrame) end, warning = "Each border is different in regards to what combination of spacing and size works best with it. Play with the two sliders until you reach your desired result.", width = "half", default = defaults.borderSpacing, }, [9] = { type = "slider", name = "Border Size", tooltip = "The width of the border.", min = 2, max = 64, step = 2, getFunc = function() return db.borderSize end, setFunc = function(val) db.borderSize = val BorderConfig(playerFrame) end, warning = "Each border is different in regards to what combination of spacing and size works best with it. Play with the two sliders until you reach your desired result.", width = "half", default = defaults.borderSize, }, } local function CreateOptions() LAM:RegisterAddonPanel("ZAMUnitFramesOptions", panelData) LAM:RegisterOptionControls("ZAMUnitFramesOptions", optionsData) end playerFrame:RegisterForEvent(EVENT_ADD_ON_LOADED, function(event, addon) --playerFrame:RegisterForEvent(EVENT_PLAYER_ACTIVATED, function(event, addon) if addon == "ZAM_UnitFrames" then SetUpDB() CreatePlayerFrame() TargetFrameTweaks() InitializeBars() CreateOptions() playerFrame:RegisterForEvent(EVENT_POWER_UPDATE, PowerUpdate) playerFrame:RegisterForEvent(EVENT_PLAYER_COMBAT_STATE, CombatFade) playerFrame:RegisterForEvent(EVENT_UNIT_CREATED, UpdateSiegeHealthBar) playerFrame:RegisterForEvent(EVENT_BEGIN_SIEGE_CONTROL, UpdateSiegeHealthBar) playerFrame:RegisterForEvent(EVENT_END_SIEGE_CONTROL, UpdateSiegeHealthBar) playerFrame:RegisterForEvent(EVENT_LEAVE_RAM_ESCORT, UpdateSiegeHealthBar) playerFrame:RegisterForEvent(EVENT_WEREWOLF_STATE_CHANGED, function(event, isWerewolf) playerFrame.werewolf:SetHidden(not isWerewolf) end) playerFrame:RegisterForEvent(EVENT_MOUNTED_STATE_CHANGED, function(event, isMounted) playerFrame.mount:SetHidden(not isMounted) end) playerFrame:UnregisterForEvent(EVENT_ADD_ON_LOADED) --playerFrame:UnregisterForEvent(EVENT_PLAYER_ACTIVATED) end end)