From d4a8ef0a900833b7eaa73e3481752bb849c7b17f Mon Sep 17 00:00:00 2001 From: Eric Mauser Date: Mon, 16 May 2016 01:17:55 +0200 Subject: [PATCH] introducing the "module-loader" --- modules/actionbar.lua | 658 ++++++++++++++++---------------- modules/autoshift.lua | 150 ++++---- modules/bags.lua | 586 ++++++++++++++--------------- modules/chat.lua | 630 +++++++++++++++---------------- modules/cooldown.lua | 112 +++--- modules/font.lua | 88 ++--- modules/gui.lua | 386 +++++++++---------- modules/minimap.lua | 56 +-- modules/panel.lua | 240 ++++++------ modules/pet.lua | 497 +++++++++++++------------ modules/player.lua | 664 ++++++++++++++++----------------- modules/skin.lua | 120 +++--- modules/target.lua | 786 ++++++++++++++++++++------------------- modules/targettarget.lua | 204 +++++----- modules/uf_tukui.lua | 42 ++- modules/xpbar.lua | 236 ++++++------ pfUI.lua | 27 +- pfUI.toc | 4 +- 18 files changed, 2771 insertions(+), 2715 deletions(-) diff --git a/modules/actionbar.lua b/modules/actionbar.lua index 1112b9ec..8c9a972c 100644 --- a/modules/actionbar.lua +++ b/modules/actionbar.lua @@ -1,330 +1,332 @@ --- override defaultUI functions to always show grid -function ActionButton_ShowGrid(button) return end -function ActionButton_HideGrid(button) return end +pfUI:RegisterModule("actionbar", function () + -- override defaultUI functions to always show grid + function ActionButton_ShowGrid(button) return end + function ActionButton_HideGrid(button) return end -Hook_ShowBonusActionBar = ShowBonusActionBar -function ShowBonusActionBar() - for i=1, 12 do getglobal("ActionButton" .. i):SetAlpha(0) end - Hook_ShowBonusActionBar() -end - -Hook_HideBonusActionBar = HideBonusActionBar -function HideBonusActionBar() - for i=1, 12 do getglobal("ActionButton" .. i):SetAlpha(1) end - Hook_HideBonusActionBar() -end - --- hide default blizz -MainMenuBar:Hide() -BonusActionBarTexture0:Hide() -BonusActionBarTexture1:Hide() - --- create action bar frame -pfUI.bars = CreateFrame("Frame",nil,UIParent) -pfUI.bars:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.bars:RegisterEvent("CVAR_UPDATE") -pfUI.bars:RegisterEvent("UNIT_FLAGS") -pfUI.bars:RegisterEvent("UNIT_PET") -pfUI.bars:RegisterEvent("PET_BAR_UPDATE") -pfUI.bars:RegisterEvent("PET_BAR_UPDATE_COOLDOWN") -pfUI.bars:RegisterEvent("PLAYER_CONTROL_GAINED") -pfUI.bars:RegisterEvent("PLAYER_CONTROL_LOST") -pfUI.bars:RegisterEvent("PLAYER_FARSIGHT_FOCUS_CHANGED") -pfUI.bars:RegisterEvent("UNIT_AURA") -pfUI.bars:RegisterEvent("PET_BAR_SHOWGRID") -pfUI.bars:RegisterEvent("PET_BAR_HIDEGRID") - -pfUI.bars.shapeshift = CreateFrame("Frame", "pfBarBottom", UIParent) -pfUI.bars.bottomleft = CreateFrame("Frame", "pfBarBottom", UIParent) -pfUI.bars.bottomright = CreateFrame("Frame", "pfBarBottom", UIParent) -pfUI.bars.vertical = CreateFrame("Frame", "pfBarBottom", UIParent) -pfUI.bars.pet = CreateFrame("Frame", "pfBarBottom", UIParent) - -PetActionBarFrame:SetParent(pfUI.bars.pet) - -pfUI.bars:SetScript("OnEvent", function() - local bpc = 1; if MultiBarBottomLeft:IsShown() then bpc = bpc + 1 end -- bottom panel count - pfUI.bars.bottom:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 12 + pfUI_config.bars.border * 12) - pfUI.bars.bottom:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * bpc + pfUI_config.bars.border * bpc) - - PetActionBar_Update() - if (PetHasActionBar()) then - --ShowPetActionBar() - --LockPetActionBar() - pfUI.bars.pet:Show() - pfUI.bars.pet:SetFrameStrata("LOW") - pfUI.bars.pet:SetPoint("BOTTOM", pfUI.bars.bottom, "TOP", 0, 5) - pfUI.bars.pet:SetBackdrop(pfUI.backdrop) - pfUI.bars.pet:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 10 + pfUI_config.bars.border * 10) - pfUI.bars.pet:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 1 + pfUI_config.bars.border) - - PetActionBarFrame:ClearAllPoints() - PetActionBarFrame:SetAllPoints(pfUI.bars.pet) - - PetActionButton1:ClearAllPoints() - PetActionButton1:SetParent(pfUI.bars.pet) - PetActionButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) - for i=2, 10 do - local b = getglobal("PetActionButton"..i) - local b2 = getglobal("PetActionButton"..i-1) - b:SetAllPoints(pfUI.bars.pet) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) - end - else - pfUI.bars.pet:Hide() - end - - ShapeshiftBarFrame:ClearAllPoints() - ShapeshiftBarFrame:SetAllPoints(pfUI.bars.shapeshift) - - ShapeshiftButton1:ClearAllPoints() - ShapeshiftButton1:SetParent(pfUI.bars.shapeshift) - ShapeshiftButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) - local shapeshiftbuttons = 0 - if ShapeshiftButton1:IsShown() then - shapeshiftbuttons = 1 - pfUI.bars.shapeshift:Show() - else - pfUI.bars.shapeshift:Hide() - end - for i=2, 10 do - local b = getglobal("ShapeshiftButton"..i) - local b2 = getglobal("ShapeshiftButton"..i-1) - b:SetAllPoints(pfUI.bars.shapeshift) - b:SetParent(pfUI.bars.shapeshift) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) - if b:IsShown() then shapeshiftbuttons = shapeshiftbuttons + 1 end - end - - pfUI.bars.shapeshift:SetFrameStrata("LOW") - pfUI.bars.shapeshift:SetPoint("BOTTOM", pfUI.bars.bottom, "TOP", 0, 5) - pfUI.bars.shapeshift:SetBackdrop(pfUI.backdrop) - pfUI.bars.shapeshift:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * shapeshiftbuttons + pfUI_config.bars.border * shapeshiftbuttons) - pfUI.bars.shapeshift:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 1 + pfUI_config.bars.border) - - if SHOW_MULTI_ACTIONBAR_1 then - MultiBarBottomLeft:SetParent(pfUI.bars.bottom) - MultiBarBottomLeft:ClearAllPoints() - MultiBarBottomLeft:SetAllPoints(pfUI.bars.bottom) - - MultiBarBottomLeftButton1:ClearAllPoints() - MultiBarBottomLeftButton1:SetPoint("BOTTOM", ActionButton1, "TOP", 0, pfUI_config.bars.border) - for i=2, 12 do - local b = getglobal("MultiBarBottomLeftButton"..i) - local b2 = getglobal("MultiBarBottomLeftButton"..i-1) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) - end - end - - if SHOW_MULTI_ACTIONBAR_2 then - pfUI.bars.bottomleft:Show() - pfUI.bars.bottomleft:SetFrameStrata("LOW") - pfUI.bars.bottomleft:SetPoint("BOTTOMRIGHT", pfUI.bars.bottom, "BOTTOMLEFT", -5, 0) - pfUI.bars.bottomleft:SetBackdrop(pfUI.backdrop) - pfUI.bars.bottomleft:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 6 + pfUI_config.bars.border * 6) - pfUI.bars.bottomleft:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 2 + pfUI_config.bars.border * 2) - - MultiBarBottomRight:SetParent(pfUI.bars.bottomleft) - MultiBarBottomRight:ClearAllPoints() - MultiBarBottomRight:SetAllPoints(pfUI.bars.bottomleft) - - MultiBarBottomRightButton1:ClearAllPoints() - MultiBarBottomRightButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) - for i=2, 6 do - local b = getglobal("MultiBarBottomRightButton"..i) - local b2 = getglobal("MultiBarBottomRightButton"..i-1) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) - end - for i=7, 12 do - local b = getglobal("MultiBarBottomRightButton"..i) - local b2 = getglobal("MultiBarBottomRightButton"..i-6) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", -pfUI_config.bars.icon_size, pfUI_config.bars.icon_size + pfUI_config.bars.border) - end - else - pfUI.bars.bottomleft:Hide() - end - - if SHOW_MULTI_ACTIONBAR_3 then - pfUI.bars.bottomright:Show() - pfUI.bars.bottomright:SetFrameStrata("LOW") - pfUI.bars.bottomright:SetPoint("BOTTOMLEFT", pfUI.bars.bottom, "BOTTOMRIGHT", 5, 0) - pfUI.bars.bottomright:SetBackdrop(pfUI.backdrop) - pfUI.bars.bottomright:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 6 + pfUI_config.bars.border * 6) - pfUI.bars.bottomright:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 2 + pfUI_config.bars.border * 2) - - MultiBarRight:SetParent(pfUI.bars.bottomright) - MultiBarRight:ClearAllPoints() - MultiBarRight:SetAllPoints(pfUI.bars.bottomright) - - MultiBarRightButton1:ClearAllPoints() - MultiBarRightButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) - for i=2, 6 do - local b = getglobal("MultiBarRightButton"..i) - local b2 = getglobal("MultiBarRightButton"..i-1) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) - end - for i=7, 12 do - local b = getglobal("MultiBarRightButton"..i) - local b2 = getglobal("MultiBarRightButton"..i-6) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", -pfUI_config.bars.icon_size, pfUI_config.bars.icon_size + pfUI_config.bars.border) - end - else - pfUI.bars.bottomright:Hide() - end - - if SHOW_MULTI_ACTIONBAR_4 and SHOW_MULTI_ACTIONBAR_3 then - pfUI.bars.vertical:Show() - pfUI.bars.vertical:SetFrameStrata("LOW") - pfUI.bars.vertical:SetPoint("RIGHT", -5, 0) - pfUI.bars.vertical:SetBackdrop(pfUI.backdrop) - pfUI.bars.vertical:SetWidth(pfUI_config.bars.border*4 + pfUI_config.bars.icon_size) - pfUI.bars.vertical:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 12 + pfUI_config.bars.border * 12) - - MultiBarLeft:SetParent(pfUI.bars.vertical) - MultiBarLeft:ClearAllPoints() - MultiBarLeft:SetAllPoints(pfUI.bars.vertical) - - MultiBarLeftButton1:ClearAllPoints() - MultiBarLeftButton1:SetPoint("TOPLEFT", pfUI_config.bars.border*2, -pfUI_config.bars.border*2) - for i=2, 12 do - local b = getglobal("MultiBarLeftButton"..i) - local b2 = getglobal("MultiBarLeftButton"..i-1) - b:ClearAllPoints() - b:SetPoint("TOP", b2, "BOTTOM", 0, -pfUI_config.bars.border) - end - else - pfUI.bars.vertical:Hide() - end - end) - --- create bottom bar frame -pfUI.bars.bottom = CreateFrame("Frame", "pfBarBottom", UIParent) -pfUI.bars.bottom:SetFrameStrata("LOW") -pfUI.bars.bottom:SetPoint("BOTTOM", 0, 5) -pfUI.bars.bottom:SetBackdrop(pfUI.backdrop) - -ActionButton1:SetParent(pfUI.bars.bottom) -ActionButton1:ClearAllPoints() -ActionButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) -for i=2, 12 do - local b = getglobal("ActionButton"..i) - local b2 = getglobal("ActionButton"..i-1) - b:SetParent(pfUI.bars.bottom) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) -end - -BonusActionBarFrame:SetParent(pfUI.bars.bottom) -BonusActionBarFrame:ClearAllPoints() -BonusActionBarFrame:SetAllPoints(pfUI.bars.bottom) - -BonusActionButton1:ClearAllPoints() -BonusActionButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2 -4, pfUI_config.bars.border*2) -for i=2, 12 do - local b = getglobal("BonusActionButton"..i) - local b2 = getglobal("BonusActionButton"..i-1) - b:ClearAllPoints() - b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) -end - -for i = 1, 10 do - getglobal("ShapeshiftButton"..i):SetBackdrop(pfUI.backdrop) - getglobal("ShapeshiftButton"..i):SetBackdropColor(0,0,0,0) - - getglobal("ShapeshiftButton"..i):SetWidth(pfUI_config.bars.icon_size) - getglobal("ShapeshiftButton"..i):SetHeight(pfUI_config.bars.icon_size) - getglobal("ShapeshiftButton"..i):Show() - getglobal("ShapeshiftButton"..i).showgrid = 1 - getglobal("ShapeshiftButton"..i..'Icon'):SetAllPoints(getglobal("ShapeshiftButton"..i)) - getglobal("ShapeshiftButton"..i..'Border'):SetTexture(1,1,0,1) - getglobal("ShapeshiftButton"..i..'NormalTexture'):SetAlpha(0) - getglobal("ShapeshiftButton"..i..'NormalTexture'):SetPoint("TOPLEFT", getglobal("ShapeshiftButton"..i) ,"TOPLEFT", -5, 5) - getglobal("ShapeshiftButton"..i..'NormalTexture'):SetPoint("BOTTOMRIGHT", getglobal("ShapeshiftButton"..i) ,"BOTTOMRIGHT", 5, -5) - getglobal("ShapeshiftButton"..i..'Border'):SetPoint("TOPLEFT", getglobal("ShapeshiftButton"..i) ,"TOPLEFT", 1, -1) - getglobal("ShapeshiftButton"..i..'Border'):SetPoint("BOTTOMRIGHT", getglobal("ShapeshiftButton"..i) ,"BOTTOMRIGHT", -1, 1) - getglobal("ShapeshiftButton"..i..'HotKey'):SetPoint("TOPLEFT", getglobal("ShapeshiftButton"..i) ,"TOPLEFT", 1, -1) - getglobal("ShapeshiftButton"..i..'HotKey'):SetPoint("BOTTOMRIGHT", getglobal("ShapeshiftButton"..i) ,"BOTTOMRIGHT", -1, 1) - getglobal("ShapeshiftButton"..i..'HotKey'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") - getglobal("ShapeshiftButton"..i..'HotKey'):SetJustifyH("RIGHT") - getglobal("ShapeshiftButton"..i..'HotKey'):SetJustifyV("TOP") - getglobal("ShapeshiftButton"..i..'Name'):SetPoint("TOPLEFT", getglobal("ShapeshiftButton"..i) ,"TOPLEFT", 1, -1) - getglobal("ShapeshiftButton"..i..'Name'):SetPoint("BOTTOMRIGHT", getglobal("ShapeshiftButton"..i) ,"BOTTOMRIGHT", -1, 1) - getglobal("ShapeshiftButton"..i..'Name'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") - getglobal("ShapeshiftButton"..i..'Name'):SetJustifyH("CENTER") - getglobal("ShapeshiftButton"..i..'Name'):SetJustifyV("BOTTOM") -end - -for i = 1, 10 do - getglobal("PetActionButton"..i):SetBackdrop(pfUI.backdrop) - getglobal("PetActionButton"..i):SetBackdropColor(0,0,0,0) - getglobal("PetActionButton"..i):SetWidth(pfUI_config.bars.icon_size) - getglobal("PetActionButton"..i):SetHeight(pfUI_config.bars.icon_size) - getglobal("PetActionButton"..i):Show() - getglobal("PetActionButton"..i).showgrid = 1 - getglobal("PetActionButton"..i..'AutoCast'):SetScale(.75) - getglobal("PetActionButton"..i..'AutoCast'):SetAlpha(.50) - - getglobal("PetActionButton"..i..'AutoCastable'):SetAlpha(0) - --getglobal("PetActionButton"..i..'Cooldown'):SetScale(.75) - - getglobal("PetActionButton"..i..'Icon'):SetAllPoints(getglobal("PetActionButton"..i)) - getglobal("PetActionButton"..i..'Border'):SetTexture(1,1,0,1) - getglobal("PetActionButton"..i..'NormalTexture2'):SetAlpha(0) - getglobal("PetActionButton"..i..'NormalTexture2'):SetPoint("TOPLEFT", getglobal("PetActionButton"..i) ,"TOPLEFT", -5, 5) - getglobal("PetActionButton"..i..'NormalTexture2'):SetPoint("BOTTOMRIGHT", getglobal("PetActionButton"..i) ,"BOTTOMRIGHT", 5, -5) - getglobal("PetActionButton"..i..'Border'):SetPoint("TOPLEFT", getglobal("PetActionButton"..i) ,"TOPLEFT", 1, -1) - getglobal("PetActionButton"..i..'Border'):SetPoint("BOTTOMRIGHT", getglobal("PetActionButton"..i) ,"BOTTOMRIGHT", -1, 1) - getglobal("PetActionButton"..i..'HotKey'):SetPoint("TOPLEFT", getglobal("PetActionButton"..i) ,"TOPLEFT", 1, -1) - getglobal("PetActionButton"..i..'HotKey'):SetPoint("BOTTOMRIGHT", getglobal("PetActionButton"..i) ,"BOTTOMRIGHT", -1, 1) - getglobal("PetActionButton"..i..'HotKey'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") - getglobal("PetActionButton"..i..'HotKey'):SetJustifyH("RIGHT") - getglobal("PetActionButton"..i..'HotKey'):SetJustifyV("TOP") - getglobal("PetActionButton"..i..'Name'):SetPoint("TOPLEFT", getglobal("PetActionButton"..i) ,"TOPLEFT", 1, -1) - getglobal("PetActionButton"..i..'Name'):SetPoint("BOTTOMRIGHT", getglobal("PetActionButton"..i) ,"BOTTOMRIGHT", -1, 1) - getglobal("PetActionButton"..i..'Name'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") - getglobal("PetActionButton"..i..'Name'):SetJustifyH("CENTER") - getglobal("PetActionButton"..i..'Name'):SetJustifyV("BOTTOM") -end - --- theme all actionbars (spacing, size, border, text position and style) -local actionbars = { "ActionButton", "MultiBarLeftButton", "MultiBarRightButton", - "MultiBarBottomLeftButton", "MultiBarBottomRightButton", "BonusActionButton", } - -for i = 1, 12 do - for _, button in pairs(actionbars) do - getglobal(button..i..'NormalTexture'):SetAlpha(0) - getglobal(button..i):SetBackdrop(pfUI.backdrop) - getglobal(button..i):SetBackdropColor(0,0,0,0) - - getglobal(button..i):SetWidth(pfUI_config.bars.icon_size) - getglobal(button..i):SetHeight(pfUI_config.bars.icon_size) - getglobal(button..i):Show() - getglobal(button..i).showgrid = 1 - - --getglobal(button..i..'Icon'):SetTexCoord(.3,.7,.3,.7) - --getglobal(button..i..'Cooldown'):SetScale(.75) - getglobal(button..i..'Icon'):SetAllPoints(getglobal(button..i)) - getglobal(button..i..'Border'):SetTexture(1,1,0,1) - getglobal(button..i..'NormalTexture'):SetPoint("TOPLEFT", getglobal(button..i) ,"TOPLEFT", -5, 5) - getglobal(button..i..'NormalTexture'):SetPoint("BOTTOMRIGHT", getglobal(button..i) ,"BOTTOMRIGHT", 5, -5) - getglobal(button..i..'Border'):SetPoint("TOPLEFT", getglobal(button..i) ,"TOPLEFT", 1, -1) - getglobal(button..i..'Border'):SetPoint("BOTTOMRIGHT", getglobal(button..i) ,"BOTTOMRIGHT", -1, 1) - getglobal(button..i..'HotKey'):SetPoint("TOPLEFT", getglobal(button..i) ,"TOPLEFT", 1, -1) - getglobal(button..i..'HotKey'):SetPoint("BOTTOMRIGHT", getglobal(button..i) ,"BOTTOMRIGHT", -1, 1) - getglobal(button..i..'HotKey'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") - getglobal(button..i..'HotKey'):SetJustifyH("RIGHT") - getglobal(button..i..'HotKey'):SetJustifyV("TOP") - getglobal(button..i..'Name'):SetPoint("TOPLEFT", getglobal(button..i) ,"TOPLEFT", 1, -1) - getglobal(button..i..'Name'):SetPoint("BOTTOMRIGHT", getglobal(button..i) ,"BOTTOMRIGHT", -1, 1) - getglobal(button..i..'Name'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") - getglobal(button..i..'Name'):SetJustifyH("CENTER") - getglobal(button..i..'Name'):SetJustifyV("BOTTOM") + Hook_ShowBonusActionBar = ShowBonusActionBar + function ShowBonusActionBar() + for i=1, 12 do getglobal("ActionButton" .. i):SetAlpha(0) end + Hook_ShowBonusActionBar() end -end + + Hook_HideBonusActionBar = HideBonusActionBar + function HideBonusActionBar() + for i=1, 12 do getglobal("ActionButton" .. i):SetAlpha(1) end + Hook_HideBonusActionBar() + end + + -- hide default blizz + MainMenuBar:Hide() + BonusActionBarTexture0:Hide() + BonusActionBarTexture1:Hide() + + -- create action bar frame + pfUI.bars = CreateFrame("Frame",nil,UIParent) + pfUI.bars:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.bars:RegisterEvent("CVAR_UPDATE") + pfUI.bars:RegisterEvent("UNIT_FLAGS") + pfUI.bars:RegisterEvent("UNIT_PET") + pfUI.bars:RegisterEvent("PET_BAR_UPDATE") + pfUI.bars:RegisterEvent("PET_BAR_UPDATE_COOLDOWN") + pfUI.bars:RegisterEvent("PLAYER_CONTROL_GAINED") + pfUI.bars:RegisterEvent("PLAYER_CONTROL_LOST") + pfUI.bars:RegisterEvent("PLAYER_FARSIGHT_FOCUS_CHANGED") + pfUI.bars:RegisterEvent("UNIT_AURA") + pfUI.bars:RegisterEvent("PET_BAR_SHOWGRID") + pfUI.bars:RegisterEvent("PET_BAR_HIDEGRID") + + pfUI.bars.shapeshift = CreateFrame("Frame", "pfBarBottom", UIParent) + pfUI.bars.bottomleft = CreateFrame("Frame", "pfBarBottom", UIParent) + pfUI.bars.bottomright = CreateFrame("Frame", "pfBarBottom", UIParent) + pfUI.bars.vertical = CreateFrame("Frame", "pfBarBottom", UIParent) + pfUI.bars.pet = CreateFrame("Frame", "pfBarBottom", UIParent) + + PetActionBarFrame:SetParent(pfUI.bars.pet) + + pfUI.bars:SetScript("OnEvent", function() + local bpc = 1; if MultiBarBottomLeft:IsShown() then bpc = bpc + 1 end -- bottom panel count + pfUI.bars.bottom:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 12 + pfUI_config.bars.border * 12) + pfUI.bars.bottom:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * bpc + pfUI_config.bars.border * bpc) + + PetActionBar_Update() + if (PetHasActionBar()) then + --ShowPetActionBar() + --LockPetActionBar() + pfUI.bars.pet:Show() + pfUI.bars.pet:SetFrameStrata("LOW") + pfUI.bars.pet:SetPoint("BOTTOM", pfUI.bars.bottom, "TOP", 0, 5) + pfUI.bars.pet:SetBackdrop(pfUI.backdrop) + pfUI.bars.pet:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 10 + pfUI_config.bars.border * 10) + pfUI.bars.pet:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 1 + pfUI_config.bars.border) + + PetActionBarFrame:ClearAllPoints() + PetActionBarFrame:SetAllPoints(pfUI.bars.pet) + + PetActionButton1:ClearAllPoints() + PetActionButton1:SetParent(pfUI.bars.pet) + PetActionButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) + for i=2, 10 do + local b = getglobal("PetActionButton"..i) + local b2 = getglobal("PetActionButton"..i-1) + b:SetAllPoints(pfUI.bars.pet) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) + end + else + pfUI.bars.pet:Hide() + end + + ShapeshiftBarFrame:ClearAllPoints() + ShapeshiftBarFrame:SetAllPoints(pfUI.bars.shapeshift) + + ShapeshiftButton1:ClearAllPoints() + ShapeshiftButton1:SetParent(pfUI.bars.shapeshift) + ShapeshiftButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) + local shapeshiftbuttons = 0 + if ShapeshiftButton1:IsShown() then + shapeshiftbuttons = 1 + pfUI.bars.shapeshift:Show() + else + pfUI.bars.shapeshift:Hide() + end + for i=2, 10 do + local b = getglobal("ShapeshiftButton"..i) + local b2 = getglobal("ShapeshiftButton"..i-1) + b:SetAllPoints(pfUI.bars.shapeshift) + b:SetParent(pfUI.bars.shapeshift) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) + if b:IsShown() then shapeshiftbuttons = shapeshiftbuttons + 1 end + end + + pfUI.bars.shapeshift:SetFrameStrata("LOW") + pfUI.bars.shapeshift:SetPoint("BOTTOM", pfUI.bars.bottom, "TOP", 0, 5) + pfUI.bars.shapeshift:SetBackdrop(pfUI.backdrop) + pfUI.bars.shapeshift:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * shapeshiftbuttons + pfUI_config.bars.border * shapeshiftbuttons) + pfUI.bars.shapeshift:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 1 + pfUI_config.bars.border) + + if SHOW_MULTI_ACTIONBAR_1 then + MultiBarBottomLeft:SetParent(pfUI.bars.bottom) + MultiBarBottomLeft:ClearAllPoints() + MultiBarBottomLeft:SetAllPoints(pfUI.bars.bottom) + + MultiBarBottomLeftButton1:ClearAllPoints() + MultiBarBottomLeftButton1:SetPoint("BOTTOM", ActionButton1, "TOP", 0, pfUI_config.bars.border) + for i=2, 12 do + local b = getglobal("MultiBarBottomLeftButton"..i) + local b2 = getglobal("MultiBarBottomLeftButton"..i-1) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) + end + end + + if SHOW_MULTI_ACTIONBAR_2 then + pfUI.bars.bottomleft:Show() + pfUI.bars.bottomleft:SetFrameStrata("LOW") + pfUI.bars.bottomleft:SetPoint("BOTTOMRIGHT", pfUI.bars.bottom, "BOTTOMLEFT", -5, 0) + pfUI.bars.bottomleft:SetBackdrop(pfUI.backdrop) + pfUI.bars.bottomleft:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 6 + pfUI_config.bars.border * 6) + pfUI.bars.bottomleft:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 2 + pfUI_config.bars.border * 2) + + MultiBarBottomRight:SetParent(pfUI.bars.bottomleft) + MultiBarBottomRight:ClearAllPoints() + MultiBarBottomRight:SetAllPoints(pfUI.bars.bottomleft) + + MultiBarBottomRightButton1:ClearAllPoints() + MultiBarBottomRightButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) + for i=2, 6 do + local b = getglobal("MultiBarBottomRightButton"..i) + local b2 = getglobal("MultiBarBottomRightButton"..i-1) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) + end + for i=7, 12 do + local b = getglobal("MultiBarBottomRightButton"..i) + local b2 = getglobal("MultiBarBottomRightButton"..i-6) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", -pfUI_config.bars.icon_size, pfUI_config.bars.icon_size + pfUI_config.bars.border) + end + else + pfUI.bars.bottomleft:Hide() + end + + if SHOW_MULTI_ACTIONBAR_3 then + pfUI.bars.bottomright:Show() + pfUI.bars.bottomright:SetFrameStrata("LOW") + pfUI.bars.bottomright:SetPoint("BOTTOMLEFT", pfUI.bars.bottom, "BOTTOMRIGHT", 5, 0) + pfUI.bars.bottomright:SetBackdrop(pfUI.backdrop) + pfUI.bars.bottomright:SetWidth(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 6 + pfUI_config.bars.border * 6) + pfUI.bars.bottomright:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 2 + pfUI_config.bars.border * 2) + + MultiBarRight:SetParent(pfUI.bars.bottomright) + MultiBarRight:ClearAllPoints() + MultiBarRight:SetAllPoints(pfUI.bars.bottomright) + + MultiBarRightButton1:ClearAllPoints() + MultiBarRightButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) + for i=2, 6 do + local b = getglobal("MultiBarRightButton"..i) + local b2 = getglobal("MultiBarRightButton"..i-1) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) + end + for i=7, 12 do + local b = getglobal("MultiBarRightButton"..i) + local b2 = getglobal("MultiBarRightButton"..i-6) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", -pfUI_config.bars.icon_size, pfUI_config.bars.icon_size + pfUI_config.bars.border) + end + else + pfUI.bars.bottomright:Hide() + end + + if SHOW_MULTI_ACTIONBAR_4 and SHOW_MULTI_ACTIONBAR_3 then + pfUI.bars.vertical:Show() + pfUI.bars.vertical:SetFrameStrata("LOW") + pfUI.bars.vertical:SetPoint("RIGHT", -5, 0) + pfUI.bars.vertical:SetBackdrop(pfUI.backdrop) + pfUI.bars.vertical:SetWidth(pfUI_config.bars.border*4 + pfUI_config.bars.icon_size) + pfUI.bars.vertical:SetHeight(pfUI_config.bars.border*3 + pfUI_config.bars.icon_size * 12 + pfUI_config.bars.border * 12) + + MultiBarLeft:SetParent(pfUI.bars.vertical) + MultiBarLeft:ClearAllPoints() + MultiBarLeft:SetAllPoints(pfUI.bars.vertical) + + MultiBarLeftButton1:ClearAllPoints() + MultiBarLeftButton1:SetPoint("TOPLEFT", pfUI_config.bars.border*2, -pfUI_config.bars.border*2) + for i=2, 12 do + local b = getglobal("MultiBarLeftButton"..i) + local b2 = getglobal("MultiBarLeftButton"..i-1) + b:ClearAllPoints() + b:SetPoint("TOP", b2, "BOTTOM", 0, -pfUI_config.bars.border) + end + else + pfUI.bars.vertical:Hide() + end + end) + + -- create bottom bar frame + pfUI.bars.bottom = CreateFrame("Frame", "pfBarBottom", UIParent) + pfUI.bars.bottom:SetFrameStrata("LOW") + pfUI.bars.bottom:SetPoint("BOTTOM", 0, 5) + pfUI.bars.bottom:SetBackdrop(pfUI.backdrop) + + ActionButton1:SetParent(pfUI.bars.bottom) + ActionButton1:ClearAllPoints() + ActionButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2, pfUI_config.bars.border*2) + for i=2, 12 do + local b = getglobal("ActionButton"..i) + local b2 = getglobal("ActionButton"..i-1) + b:SetParent(pfUI.bars.bottom) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) + end + + BonusActionBarFrame:SetParent(pfUI.bars.bottom) + BonusActionBarFrame:ClearAllPoints() + BonusActionBarFrame:SetAllPoints(pfUI.bars.bottom) + + BonusActionButton1:ClearAllPoints() + BonusActionButton1:SetPoint("BOTTOMLEFT", pfUI_config.bars.border*2 -4, pfUI_config.bars.border*2) + for i=2, 12 do + local b = getglobal("BonusActionButton"..i) + local b2 = getglobal("BonusActionButton"..i-1) + b:ClearAllPoints() + b:SetPoint("LEFT", b2, "RIGHT", pfUI_config.bars.border, 0) + end + + for i = 1, 10 do + getglobal("ShapeshiftButton"..i):SetBackdrop(pfUI.backdrop) + getglobal("ShapeshiftButton"..i):SetBackdropColor(0,0,0,0) + + getglobal("ShapeshiftButton"..i):SetWidth(pfUI_config.bars.icon_size) + getglobal("ShapeshiftButton"..i):SetHeight(pfUI_config.bars.icon_size) + getglobal("ShapeshiftButton"..i):Show() + getglobal("ShapeshiftButton"..i).showgrid = 1 + getglobal("ShapeshiftButton"..i..'Icon'):SetAllPoints(getglobal("ShapeshiftButton"..i)) + getglobal("ShapeshiftButton"..i..'Border'):SetTexture(1,1,0,1) + getglobal("ShapeshiftButton"..i..'NormalTexture'):SetAlpha(0) + getglobal("ShapeshiftButton"..i..'NormalTexture'):SetPoint("TOPLEFT", getglobal("ShapeshiftButton"..i) ,"TOPLEFT", -5, 5) + getglobal("ShapeshiftButton"..i..'NormalTexture'):SetPoint("BOTTOMRIGHT", getglobal("ShapeshiftButton"..i) ,"BOTTOMRIGHT", 5, -5) + getglobal("ShapeshiftButton"..i..'Border'):SetPoint("TOPLEFT", getglobal("ShapeshiftButton"..i) ,"TOPLEFT", 1, -1) + getglobal("ShapeshiftButton"..i..'Border'):SetPoint("BOTTOMRIGHT", getglobal("ShapeshiftButton"..i) ,"BOTTOMRIGHT", -1, 1) + getglobal("ShapeshiftButton"..i..'HotKey'):SetPoint("TOPLEFT", getglobal("ShapeshiftButton"..i) ,"TOPLEFT", 1, -1) + getglobal("ShapeshiftButton"..i..'HotKey'):SetPoint("BOTTOMRIGHT", getglobal("ShapeshiftButton"..i) ,"BOTTOMRIGHT", -1, 1) + getglobal("ShapeshiftButton"..i..'HotKey'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") + getglobal("ShapeshiftButton"..i..'HotKey'):SetJustifyH("RIGHT") + getglobal("ShapeshiftButton"..i..'HotKey'):SetJustifyV("TOP") + getglobal("ShapeshiftButton"..i..'Name'):SetPoint("TOPLEFT", getglobal("ShapeshiftButton"..i) ,"TOPLEFT", 1, -1) + getglobal("ShapeshiftButton"..i..'Name'):SetPoint("BOTTOMRIGHT", getglobal("ShapeshiftButton"..i) ,"BOTTOMRIGHT", -1, 1) + getglobal("ShapeshiftButton"..i..'Name'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") + getglobal("ShapeshiftButton"..i..'Name'):SetJustifyH("CENTER") + getglobal("ShapeshiftButton"..i..'Name'):SetJustifyV("BOTTOM") + end + + for i = 1, 10 do + getglobal("PetActionButton"..i):SetBackdrop(pfUI.backdrop) + getglobal("PetActionButton"..i):SetBackdropColor(0,0,0,0) + getglobal("PetActionButton"..i):SetWidth(pfUI_config.bars.icon_size) + getglobal("PetActionButton"..i):SetHeight(pfUI_config.bars.icon_size) + getglobal("PetActionButton"..i):Show() + getglobal("PetActionButton"..i).showgrid = 1 + getglobal("PetActionButton"..i..'AutoCast'):SetScale(.75) + getglobal("PetActionButton"..i..'AutoCast'):SetAlpha(.50) + + getglobal("PetActionButton"..i..'AutoCastable'):SetAlpha(0) + --getglobal("PetActionButton"..i..'Cooldown'):SetScale(.75) + + getglobal("PetActionButton"..i..'Icon'):SetAllPoints(getglobal("PetActionButton"..i)) + getglobal("PetActionButton"..i..'Border'):SetTexture(1,1,0,1) + getglobal("PetActionButton"..i..'NormalTexture2'):SetAlpha(0) + getglobal("PetActionButton"..i..'NormalTexture2'):SetPoint("TOPLEFT", getglobal("PetActionButton"..i) ,"TOPLEFT", -5, 5) + getglobal("PetActionButton"..i..'NormalTexture2'):SetPoint("BOTTOMRIGHT", getglobal("PetActionButton"..i) ,"BOTTOMRIGHT", 5, -5) + getglobal("PetActionButton"..i..'Border'):SetPoint("TOPLEFT", getglobal("PetActionButton"..i) ,"TOPLEFT", 1, -1) + getglobal("PetActionButton"..i..'Border'):SetPoint("BOTTOMRIGHT", getglobal("PetActionButton"..i) ,"BOTTOMRIGHT", -1, 1) + getglobal("PetActionButton"..i..'HotKey'):SetPoint("TOPLEFT", getglobal("PetActionButton"..i) ,"TOPLEFT", 1, -1) + getglobal("PetActionButton"..i..'HotKey'):SetPoint("BOTTOMRIGHT", getglobal("PetActionButton"..i) ,"BOTTOMRIGHT", -1, 1) + getglobal("PetActionButton"..i..'HotKey'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") + getglobal("PetActionButton"..i..'HotKey'):SetJustifyH("RIGHT") + getglobal("PetActionButton"..i..'HotKey'):SetJustifyV("TOP") + getglobal("PetActionButton"..i..'Name'):SetPoint("TOPLEFT", getglobal("PetActionButton"..i) ,"TOPLEFT", 1, -1) + getglobal("PetActionButton"..i..'Name'):SetPoint("BOTTOMRIGHT", getglobal("PetActionButton"..i) ,"BOTTOMRIGHT", -1, 1) + getglobal("PetActionButton"..i..'Name'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") + getglobal("PetActionButton"..i..'Name'):SetJustifyH("CENTER") + getglobal("PetActionButton"..i..'Name'):SetJustifyV("BOTTOM") + end + + -- theme all actionbars (spacing, size, border, text position and style) + local actionbars = { "ActionButton", "MultiBarLeftButton", "MultiBarRightButton", + "MultiBarBottomLeftButton", "MultiBarBottomRightButton", "BonusActionButton", } + + for i = 1, 12 do + for _, button in pairs(actionbars) do + getglobal(button..i..'NormalTexture'):SetAlpha(0) + getglobal(button..i):SetBackdrop(pfUI.backdrop) + getglobal(button..i):SetBackdropColor(0,0,0,0) + + getglobal(button..i):SetWidth(pfUI_config.bars.icon_size) + getglobal(button..i):SetHeight(pfUI_config.bars.icon_size) + getglobal(button..i):Show() + getglobal(button..i).showgrid = 1 + + --getglobal(button..i..'Icon'):SetTexCoord(.3,.7,.3,.7) + --getglobal(button..i..'Cooldown'):SetScale(.75) + getglobal(button..i..'Icon'):SetAllPoints(getglobal(button..i)) + getglobal(button..i..'Border'):SetTexture(1,1,0,1) + getglobal(button..i..'NormalTexture'):SetPoint("TOPLEFT", getglobal(button..i) ,"TOPLEFT", -5, 5) + getglobal(button..i..'NormalTexture'):SetPoint("BOTTOMRIGHT", getglobal(button..i) ,"BOTTOMRIGHT", 5, -5) + getglobal(button..i..'Border'):SetPoint("TOPLEFT", getglobal(button..i) ,"TOPLEFT", 1, -1) + getglobal(button..i..'Border'):SetPoint("BOTTOMRIGHT", getglobal(button..i) ,"BOTTOMRIGHT", -1, 1) + getglobal(button..i..'HotKey'):SetPoint("TOPLEFT", getglobal(button..i) ,"TOPLEFT", 1, -1) + getglobal(button..i..'HotKey'):SetPoint("BOTTOMRIGHT", getglobal(button..i) ,"BOTTOMRIGHT", -1, 1) + getglobal(button..i..'HotKey'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") + getglobal(button..i..'HotKey'):SetJustifyH("RIGHT") + getglobal(button..i..'HotKey'):SetJustifyV("TOP") + getglobal(button..i..'Name'):SetPoint("TOPLEFT", getglobal(button..i) ,"TOPLEFT", 1, -1) + getglobal(button..i..'Name'):SetPoint("BOTTOMRIGHT", getglobal(button..i) ,"BOTTOMRIGHT", -1, 1) + getglobal(button..i..'Name'):SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 7, "OUTLINE") + getglobal(button..i..'Name'):SetJustifyH("CENTER") + getglobal(button..i..'Name'):SetJustifyV("BOTTOM") + end + end +end) diff --git a/modules/autoshift.lua b/modules/autoshift.lua index 9a364386..fe81498b 100644 --- a/modules/autoshift.lua +++ b/modules/autoshift.lua @@ -1,92 +1,94 @@ -pfUI.autoshift = CreateFrame("Frame") -pfUI.autoshift:RegisterEvent("UI_ERROR_MESSAGE") +pfUI:RegisterModule("autoshift", function () + pfUI.autoshift = CreateFrame("Frame") + pfUI.autoshift:RegisterEvent("UI_ERROR_MESSAGE") -pfUI.autoshift.LastErr = "" -Hook_CastSpell = CastSpell -Hook_CastSpellByName = CastSpellByName -Hook_UseAction = UseAction - --- deDE -pfUI.autoshift.wantBattleStance = "Muss in Kampfhaltung sein." -pfUI.autoshift.wantBattleDefStance = "Muss in Kampfhaltung, Verteidigungshaltung sein." -pfUI.autoshift.BattleStance = "Kampfhaltung" -pfUI.autoshift.BattleStance = "Kampfhaltung" -pfUI.autoshift.wantBerserkerStance = "Muss in Berserkerhaltung sein." -pfUI.autoshift.BerserkerStance = "Berserkerhaltung" -pfUI.autoshift.wantDefensiveStance = "Muss in Verteidigungshaltung sein." -pfUI.autoshift.DefensiveStance = "Verteidigungshaltung" - -function CastSpell(spellId, spellbookTabNum) - if pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleStance then - Hook_CastSpellByName(pfUI.autoshift.BattleStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleDefStance then - Hook_CastSpellByName(pfUI.autoshift.BattleStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBerserkerStance then - Hook_CastSpellByName(pfUI.autoshift.BerserkerStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantDefensiveStance then - Hook_CastSpellByName(pfUI.autoshift.DefensiveStance) - end pfUI.autoshift.LastErr = "" + Hook_CastSpell = CastSpell + Hook_CastSpellByName = CastSpellByName + Hook_UseAction = UseAction - Hook_CastSpell(spellId, spellbookTabNum) -end + -- deDE + pfUI.autoshift.wantBattleStance = "Muss in Kampfhaltung sein." + pfUI.autoshift.wantBattleDefStance = "Muss in Kampfhaltung, Verteidigungshaltung sein." + pfUI.autoshift.BattleStance = "Kampfhaltung" + pfUI.autoshift.BattleStance = "Kampfhaltung" + pfUI.autoshift.wantBerserkerStance = "Muss in Berserkerhaltung sein." + pfUI.autoshift.BerserkerStance = "Berserkerhaltung" + pfUI.autoshift.wantDefensiveStance = "Muss in Verteidigungshaltung sein." + pfUI.autoshift.DefensiveStance = "Verteidigungshaltung" -function CastSpellByName(spellName, onSelf) - if pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleStance then - Hook_CastSpellByName(pfUI.autoshift.BattleStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleDefStance then - Hook_CastSpellByName(pfUI.autoshift.BattleStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBerserkerStance then - Hook_CastSpellByName(pfUI.autoshift.BerserkerStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantDefensiveStance then - Hook_CastSpellByName(pfUI.autoshift.DefensiveStance) + function CastSpell(spellId, spellbookTabNum) + if pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleStance then + Hook_CastSpellByName(pfUI.autoshift.BattleStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleDefStance then + Hook_CastSpellByName(pfUI.autoshift.BattleStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBerserkerStance then + Hook_CastSpellByName(pfUI.autoshift.BerserkerStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantDefensiveStance then + Hook_CastSpellByName(pfUI.autoshift.DefensiveStance) + end + pfUI.autoshift.LastErr = "" + + Hook_CastSpell(spellId, spellbookTabNum) end - pfUI.autoshift.LastErr = "" - Hook_CastSpellByName(spellName, onSelf) -end + function CastSpellByName(spellName, onSelf) + if pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleStance then + Hook_CastSpellByName(pfUI.autoshift.BattleStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleDefStance then + Hook_CastSpellByName(pfUI.autoshift.BattleStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBerserkerStance then + Hook_CastSpellByName(pfUI.autoshift.BerserkerStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantDefensiveStance then + Hook_CastSpellByName(pfUI.autoshift.DefensiveStance) + end + pfUI.autoshift.LastErr = "" -function UseAction(slot, checkCursor, onSelf) - if pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleStance then - Hook_CastSpellByName(pfUI.autoshift.BattleStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleDefStance then - Hook_CastSpellByName(pfUI.autoshift.BattleStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBerserkerStance then - Hook_CastSpellByName(pfUI.autoshift.BerserkerStance) - elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantDefensiveStance then - Hook_CastSpellByName(pfUI.autoshift.DefensiveStance) + Hook_CastSpellByName(spellName, onSelf) end - pfUI.autoshift.LastErr = "" - Hook_UseAction(slot, checkCursor, onSelf) -end + function UseAction(slot, checkCursor, onSelf) + if pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleStance then + Hook_CastSpellByName(pfUI.autoshift.BattleStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBattleDefStance then + Hook_CastSpellByName(pfUI.autoshift.BattleStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantBerserkerStance then + Hook_CastSpellByName(pfUI.autoshift.BerserkerStance) + elseif pfUI.autoshift.LastErr == pfUI.autoshift.wantDefensiveStance then + Hook_CastSpellByName(pfUI.autoshift.DefensiveStance) + end + pfUI.autoshift.LastErr = "" -pfUI.autoshift.Buffs = { "spell_nature_swiftness", "_mount_", "_qirajicrystal_", - "ability_racial_bearform", "ability_druid_catform", "ability_druid_travelform", - "spell_nature_forceofnature", "ability_druid_aquaticform", "spell_shadow_shadowform", - "spell_nature_spiritwolf" } + Hook_UseAction(slot, checkCursor, onSelf) + end -pfUI.autoshift.Errors = { SPELL_FAILED_NOT_MOUNTED, ERR_ATTACK_MOUNTED, ERR_TAXIPLAYERALREADYMOUNTED, - SPELL_FAILED_NOT_SHAPESHIFT, SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED, SPELL_NOT_SHAPESHIFTED, - SPELL_NOT_SHAPESHIFTED_NOSPACE, ERR_CANT_INTERACT_SHAPESHIFTED, ERR_NOT_WHILE_SHAPESHIFTED, - ERR_NO_ITEMS_WHILE_SHAPESHIFTED, ERR_TAXIPLAYERSHAPESHIFTED,ERR_MOUNT_SHAPESHIFTED, - ERR_EMBLEMERROR_NOTABARDGEOSET } + pfUI.autoshift.Buffs = { "spell_nature_swiftness", "_mount_", "_qirajicrystal_", + "ability_racial_bearform", "ability_druid_catform", "ability_druid_travelform", + "spell_nature_forceofnature", "ability_druid_aquaticform", "spell_shadow_shadowform", + "spell_nature_spiritwolf" } -pfUI.autoshift:SetScript("OnEvent", function() - pfUI.autoshift.LastErr = arg1 + pfUI.autoshift.Errors = { SPELL_FAILED_NOT_MOUNTED, ERR_ATTACK_MOUNTED, ERR_TAXIPLAYERALREADYMOUNTED, + SPELL_FAILED_NOT_SHAPESHIFT, SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED, SPELL_NOT_SHAPESHIFTED, + SPELL_NOT_SHAPESHIFTED_NOSPACE, ERR_CANT_INTERACT_SHAPESHIFTED, ERR_NOT_WHILE_SHAPESHIFTED, + ERR_NO_ITEMS_WHILE_SHAPESHIFTED, ERR_TAXIPLAYERSHAPESHIFTED,ERR_MOUNT_SHAPESHIFTED, + ERR_EMBLEMERROR_NOTABARDGEOSET } - for id, errorstring in pairs(pfUI.autoshift.Errors) do - if arg1 == errorstring then - for i=0,15,1 do - currBuffTex = GetPlayerBuffTexture(i); - if (currBuffTex) then - for id, bufftype in pairs(pfUI.autoshift.Buffs) do - if string.find(string.lower(currBuffTex), bufftype) then - CancelPlayerBuff(i); + pfUI.autoshift:SetScript("OnEvent", function() + pfUI.autoshift.LastErr = arg1 + + for id, errorstring in pairs(pfUI.autoshift.Errors) do + if arg1 == errorstring then + for i=0,15,1 do + currBuffTex = GetPlayerBuffTexture(i); + if (currBuffTex) then + for id, bufftype in pairs(pfUI.autoshift.Buffs) do + if string.find(string.lower(currBuffTex), bufftype) then + CancelPlayerBuff(i); + end end end end end end - end - end) + end) +end) diff --git a/modules/bags.lua b/modules/bags.lua index d907be79..d5845eb2 100644 --- a/modules/bags.lua +++ b/modules/bags.lua @@ -1,318 +1,320 @@ -pfUI.bag = CreateFrame("Frame", "pfBagFrame") -pfUI.bag:SetFrameStrata("MEDIUM") -pfUI.bag:SetPoint("BOTTOMLEFT", pfUI.chat.right, "BOTTOMLEFT", 0, 0) -pfUI.bag:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, 0) -pfUI.bag:SetBackdrop(pfUI.backdrop) -pfUI.bag:Hide() - -pfUI.bank = CreateFrame("Frame", "pfBankFrame") -pfUI.bank:SetFrameStrata("MEDIUM") -pfUI.bank:SetPoint("BOTTOMLEFT", pfUI.chat.left, "BOTTOMLEFT", 0, 0) -pfUI.bank:SetPoint("BOTTOMRIGHT", pfUI.chat.left, "BOTTOMRIGHT", 0, 0) -pfUI.bank:SetBackdrop(pfUI.backdrop) -pfUI.bank:Hide() - -tinsert(UISpecialFrames,"pfBagFrame"); - -function OpenAllBags() - if pfUI.bag:IsShown() then - pfUI.bag:Hide() - else - pfUI.bag:Show() - end -end - -function CloseAllBags() +pfUI:RegisterModule("bags", function () + pfUI.bag = CreateFrame("Frame", "pfBagFrame") + pfUI.bag:SetFrameStrata("MEDIUM") + pfUI.bag:SetPoint("BOTTOMLEFT", pfUI.chat.right, "BOTTOMLEFT", 0, 0) + pfUI.bag:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", 0, 0) + pfUI.bag:SetBackdrop(pfUI.backdrop) pfUI.bag:Hide() -end -function ToggleBackpack() - if pfUI.bag:IsShown() then - pfUI.bag:Hide() - else - pfUI.bag:Show() + pfUI.bank = CreateFrame("Frame", "pfBankFrame") + pfUI.bank:SetFrameStrata("MEDIUM") + pfUI.bank:SetPoint("BOTTOMLEFT", pfUI.chat.left, "BOTTOMLEFT", 0, 0) + pfUI.bank:SetPoint("BOTTOMRIGHT", pfUI.chat.left, "BOTTOMRIGHT", 0, 0) + pfUI.bank:SetBackdrop(pfUI.backdrop) + pfUI.bank:Hide() + + tinsert(UISpecialFrames,"pfBagFrame"); + + function OpenAllBags() + if pfUI.bag:IsShown() then + pfUI.bag:Hide() + else + pfUI.bag:Show() + end end -end -function ToggleBag() end + function CloseAllBags() + pfUI.bag:Hide() + end -for i=1, 5 do - pfUI.bag[i] = CreateFrame("Frame") - pfUI.bag[i]:SetID(i-1) - pfUI.bag[i]:SetParent(pfUI.bag) - pfUI.bag[i]:SetAllPoints(pfUI.bag) -end - -for i=6, 12 do - pfUI.bank[i] = CreateFrame("Frame") - pfUI.bank[i]:SetID(i-1) - pfUI.bank[i]:SetParent(pfUI.bank) - pfUI.bank[i]:SetAllPoints(pfUI.bank) -end - -pfUI.bag.close = CreateFrame("Button") -pfUI.bag.close:SetParent(pfUI.bag) -pfUI.bag.close:SetPoint("TOPRIGHT", -pfUI_config.bars.border*2,-pfUI_config.bars.border*2 ) -pfUI.bag.close:SetBackdrop(pfUI.backdrop) -pfUI.bag.close:SetHeight(15) -pfUI.bag.close:SetWidth(15) -pfUI.bag.close:SetText("x") -pfUI.bag.close:SetTextColor(1,.25,.25,1) -pfUI.bag.close:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") -pfUI.bag.close:SetScript("OnEnter", function () - pfUI.bag.close:SetBackdrop(pfUI.backdrop_col) - pfUI.bag.close:SetBackdropBorderColor(1,.25,.25,1) - end) - -pfUI.bag.close:SetScript("OnLeave", function () - pfUI.bag.close:SetBackdrop(pfUI.backdrop) - pfUI.bag.close:SetBackdropBorderColor(1,1,1,1) - end) - -pfUI.bag.close:SetScript("OnClick", CloseAllBags) - -pfUI.bag.search = CreateFrame("Frame", pfUI.bag) -pfUI.bag.search:SetParent(pfUI.bag) -pfUI.bag.search:SetHeight(15) -pfUI.bag.search:SetWidth(100) -pfUI.bag.search:SetPoint("TOPLEFT", pfUI.bag, "TOPLEFT", pfUI_config.bars.border*2, -pfUI_config.bars.border*2) -pfUI.bag.search:SetBackdrop(pfUI.backdrop) -pfUI.bag.search:SetBackdropBorderColor(0,0,0,1) - -pfUI.bag.search.edit = CreateFrame("EditBox", "pfUIBagSearch", pfUI.bag.search, "InputBoxTemplate") -pfUIBagSearchLeft:SetTexture(nil); -pfUIBagSearchMiddle:SetTexture(nil); -pfUIBagSearchRight:SetTexture(nil); -pfUI.bag.search.edit:ClearAllPoints() -pfUI.bag.search.edit:SetScript("OnEditFocusGained", function() - pfUI.bag.search.edit:SetTextColor(1,1,1,1) - pfUI.bag.search:SetBackdropBorderColor(1,1,1,1) - this:SetText("") - - pfUI.bag.search:SetPoint("TOPLEFT", pfUI.bag, "TOPLEFT", pfUI_config.bars.border*2, -pfUI_config.bars.border*2) - pfUI.bag.search:SetPoint("TOPRIGHT", pfUI.bag, "TOPRIGHT", -pfUI_config.bars.border*2 - 16, -pfUI_config.bars.border*2) - - pfUI.bag.money:Hide() - end) -pfUI.bag.search.edit:SetScript("OnEditFocusLost", function() - pfUI.bag.search.edit:SetTextColor(.5,.5,.5,1) - pfUI.bag.search:SetBackdropBorderColor(0,0,0,1) - this:SetText("Search") - - pfUI.bag.search:ClearAllPoints() - pfUI.bag.search:SetWidth(100) - pfUI.bag.search:SetPoint("TOPLEFT", pfUI.bag, "TOPLEFT", pfUI_config.bars.border*2, -pfUI_config.bars.border*2) - - for j=1, 12 do - local frame, container = nil - if j > 11 then - frame = "BankFrame" - container = -1 - else - frame = "ContainerFrame" .. j - container = j - 1 - end - for i=1, GetContainerNumSlots(container) do - getglobal(frame .. "Item" .. i):SetAlpha(1) - end + function ToggleBackpack() + if pfUI.bag:IsShown() then + pfUI.bag:Hide() + else + pfUI.bag:Show() end + end - pfUI.bag.money:Show() - end) + function ToggleBag() end -pfUI.bag.search.edit:SetPoint("TOPLEFT", pfUI.bag.search, "TOPLEFT", pfUI_config.bars.border*2, 0) -pfUI.bag.search.edit:SetPoint("BOTTOMRIGHT", pfUI.bag.search, "BOTTOMRIGHT", -pfUI_config.bars.border*2, 0) + for i=1, 5 do + pfUI.bag[i] = CreateFrame("Frame") + pfUI.bag[i]:SetID(i-1) + pfUI.bag[i]:SetParent(pfUI.bag) + pfUI.bag[i]:SetAllPoints(pfUI.bag) + end -pfUI.bag.search.edit:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") -pfUI.bag.search.edit:SetAutoFocus(false) -pfUI.bag.search.edit:SetText("Search") -pfUI.bag.search.edit:SetTextColor(.5,.5,.5,1) -pfUI.bag.search.edit:SetScript("OnTextChanged", function(self) - if pfUI.bag.search.edit:GetText() == "Search" then return end - for j=1, 12 do + for i=6, 12 do + pfUI.bank[i] = CreateFrame("Frame") + pfUI.bank[i]:SetID(i-1) + pfUI.bank[i]:SetParent(pfUI.bank) + pfUI.bank[i]:SetAllPoints(pfUI.bank) + end - local frame, container = nil - if j > 11 then - frame = "BankFrame" - container = -1 - else - frame = "ContainerFrame" .. j - container = j - 1 + pfUI.bag.close = CreateFrame("Button") + pfUI.bag.close:SetParent(pfUI.bag) + pfUI.bag.close:SetPoint("TOPRIGHT", -pfUI_config.bars.border*2,-pfUI_config.bars.border*2 ) + pfUI.bag.close:SetBackdrop(pfUI.backdrop) + pfUI.bag.close:SetHeight(15) + pfUI.bag.close:SetWidth(15) + pfUI.bag.close:SetText("x") + pfUI.bag.close:SetTextColor(1,.25,.25,1) + pfUI.bag.close:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") + pfUI.bag.close:SetScript("OnEnter", function () + pfUI.bag.close:SetBackdrop(pfUI.backdrop_col) + pfUI.bag.close:SetBackdropBorderColor(1,.25,.25,1) + end) + + pfUI.bag.close:SetScript("OnLeave", function () + pfUI.bag.close:SetBackdrop(pfUI.backdrop) + pfUI.bag.close:SetBackdropBorderColor(1,1,1,1) + end) + + pfUI.bag.close:SetScript("OnClick", CloseAllBags) + + pfUI.bag.search = CreateFrame("Frame", pfUI.bag) + pfUI.bag.search:SetParent(pfUI.bag) + pfUI.bag.search:SetHeight(15) + pfUI.bag.search:SetWidth(100) + pfUI.bag.search:SetPoint("TOPLEFT", pfUI.bag, "TOPLEFT", pfUI_config.bars.border*2, -pfUI_config.bars.border*2) + pfUI.bag.search:SetBackdrop(pfUI.backdrop) + pfUI.bag.search:SetBackdropBorderColor(0,0,0,1) + + pfUI.bag.search.edit = CreateFrame("EditBox", "pfUIBagSearch", pfUI.bag.search, "InputBoxTemplate") + pfUIBagSearchLeft:SetTexture(nil); + pfUIBagSearchMiddle:SetTexture(nil); + pfUIBagSearchRight:SetTexture(nil); + pfUI.bag.search.edit:ClearAllPoints() + pfUI.bag.search.edit:SetScript("OnEditFocusGained", function() + pfUI.bag.search.edit:SetTextColor(1,1,1,1) + pfUI.bag.search:SetBackdropBorderColor(1,1,1,1) + this:SetText("") + + pfUI.bag.search:SetPoint("TOPLEFT", pfUI.bag, "TOPLEFT", pfUI_config.bars.border*2, -pfUI_config.bars.border*2) + pfUI.bag.search:SetPoint("TOPRIGHT", pfUI.bag, "TOPRIGHT", -pfUI_config.bars.border*2 - 16, -pfUI_config.bars.border*2) + + pfUI.bag.money:Hide() + end) + pfUI.bag.search.edit:SetScript("OnEditFocusLost", function() + pfUI.bag.search.edit:SetTextColor(.5,.5,.5,1) + pfUI.bag.search:SetBackdropBorderColor(0,0,0,1) + this:SetText("Search") + + pfUI.bag.search:ClearAllPoints() + pfUI.bag.search:SetWidth(100) + pfUI.bag.search:SetPoint("TOPLEFT", pfUI.bag, "TOPLEFT", pfUI_config.bars.border*2, -pfUI_config.bars.border*2) + + for j=1, 12 do + local frame, container = nil + if j > 11 then + frame = "BankFrame" + container = -1 + else + frame = "ContainerFrame" .. j + container = j - 1 + end + for i=1, GetContainerNumSlots(container) do + getglobal(frame .. "Item" .. i):SetAlpha(1) + end end - for i=1, GetContainerNumSlots(container) do - local texture, itemCount, locked, quality, readable = GetContainerItemInfo(container, i); - if itemCount then - local itemLink = GetContainerItemLink(container, i); - local itemstring = string.sub(itemLink, string.find(itemLink, "%[")+1, string.find(itemLink, "%]")-1); - if strfind(strlower(itemstring), strlower(pfUI.bag.search.edit:GetText())) then - getglobal(frame .. "Item" .. i):SetAlpha(1) + pfUI.bag.money:Show() + end) + + pfUI.bag.search.edit:SetPoint("TOPLEFT", pfUI.bag.search, "TOPLEFT", pfUI_config.bars.border*2, 0) + pfUI.bag.search.edit:SetPoint("BOTTOMRIGHT", pfUI.bag.search, "BOTTOMRIGHT", -pfUI_config.bars.border*2, 0) + + pfUI.bag.search.edit:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") + pfUI.bag.search.edit:SetAutoFocus(false) + pfUI.bag.search.edit:SetText("Search") + pfUI.bag.search.edit:SetTextColor(.5,.5,.5,1) + pfUI.bag.search.edit:SetScript("OnTextChanged", function(self) + if pfUI.bag.search.edit:GetText() == "Search" then return end + for j=1, 12 do + + local frame, container = nil + if j > 11 then + frame = "BankFrame" + container = -1 + else + frame = "ContainerFrame" .. j + container = j - 1 + end + + for i=1, GetContainerNumSlots(container) do + local texture, itemCount, locked, quality, readable = GetContainerItemInfo(container, i); + if itemCount then + local itemLink = GetContainerItemLink(container, i); + local itemstring = string.sub(itemLink, string.find(itemLink, "%[")+1, string.find(itemLink, "%]")-1); + if strfind(strlower(itemstring), strlower(pfUI.bag.search.edit:GetText())) then + getglobal(frame .. "Item" .. i):SetAlpha(1) + else + getglobal(frame .. "Item" .. i):SetAlpha(.25) + end + end + end + end + end) + + pfUI.bag.money = CreateFrame("Frame", "pfUIBagsMoney", pfUI.bag, "SmallMoneyFrameTemplate") + pfUI.bag.money:ClearAllPoints() + pfUI.bag.money:SetPoint("TOPRIGHT", pfUI.bag, "TOPRIGHT", -13, -6) + pfUIBagsMoneyGoldButton:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") + for i,v in ipairs({pfUIBagsMoneyGoldButton:GetRegions()}) do if i == 1 then v:SetHeight(10); v:SetWidth(10) end end + pfUIBagsMoneySilverButton:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") + for i,v in ipairs({pfUIBagsMoneySilverButton:GetRegions()}) do if i == 1 then v:SetHeight(10); v:SetWidth(10) end end + pfUIBagsMoneyCopperButton:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") + for i,v in ipairs({pfUIBagsMoneyCopperButton:GetRegions()}) do if i == 1 then v:SetHeight(10); v:SetWidth(10) end end + + pfUI.bag:RegisterEvent("BAG_UPDATE"); + pfUI.bag:RegisterEvent("BAG_CLOSED"); + pfUI.bag:RegisterEvent("BAG_OPEN"); + pfUI.bag:RegisterEvent("BAG_UPDATE_COOLDOWN"); + pfUI.bag:RegisterEvent("ITEM_LOCK_CHANGED"); + pfUI.bag:RegisterEvent("UPDATE_INVENTORY_ALERTS") + pfUI.bag:SetScript("OnEvent", function() + local x = -1 + local y = 0 + local x_max = 10 + + local button_size = (this:GetWidth() - pfUI_config.bars.border*3) / x_max - pfUI_config.bars.border + + for j=1, 5 do + for i=1, GetContainerNumSlots(j-1) do + x = x + 1 + if x >= x_max then y = y + 1; x = 0 end + + getglobal("ContainerFrame" .. j).size = GetContainerNumSlots(j-1) + f = getglobal("ContainerFrame" .. j .. "Item" .. i) + f:SetParent(pfUI.bag[j]) + f:SetID(i) + f:SetPoint("TOPLEFT", pfUI.bag, "TOPLEFT", pfUI_config.bars.border*2 + x*button_size + x*pfUI_config.bars.border, -pfUI_config.bars.border*2 - y*button_size - y * pfUI_config.bars.border - 17) + f:Show() + f:SetHeight(button_size) + f:SetWidth(button_size) + local texture, itemCount, locked, quality, readable = GetContainerItemInfo(j-1, i); + f:SetNormalTexture(nil) + + f:SetBackdrop( + { bgFile = texture, tile = false, tileSize = pfUI_config.unitframes.buff_size, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) + if quality and quality > 1 then + f:SetBackdropBorderColor(GetItemQualityColor(quality)) else - getglobal(frame .. "Item" .. i):SetAlpha(.25) + f:SetBackdropBorderColor(.3,.3,.3,1) end - end - end - end - end) -pfUI.bag.money = CreateFrame("Frame", "pfUIBagsMoney", pfUI.bag, "SmallMoneyFrameTemplate") -pfUI.bag.money:ClearAllPoints() -pfUI.bag.money:SetPoint("TOPRIGHT", pfUI.bag, "TOPRIGHT", -13, -6) -pfUIBagsMoneyGoldButton:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") -for i,v in ipairs({pfUIBagsMoneyGoldButton:GetRegions()}) do if i == 1 then v:SetHeight(10); v:SetWidth(10) end end -pfUIBagsMoneySilverButton:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") -for i,v in ipairs({pfUIBagsMoneySilverButton:GetRegions()}) do if i == 1 then v:SetHeight(10); v:SetWidth(10) end end -pfUIBagsMoneyCopperButton:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") -for i,v in ipairs({pfUIBagsMoneyCopperButton:GetRegions()}) do if i == 1 then v:SetHeight(10); v:SetWidth(10) end end - -pfUI.bag:RegisterEvent("BAG_UPDATE"); -pfUI.bag:RegisterEvent("BAG_CLOSED"); -pfUI.bag:RegisterEvent("BAG_OPEN"); -pfUI.bag:RegisterEvent("BAG_UPDATE_COOLDOWN"); -pfUI.bag:RegisterEvent("ITEM_LOCK_CHANGED"); -pfUI.bag:RegisterEvent("UPDATE_INVENTORY_ALERTS") -pfUI.bag:SetScript("OnEvent", function() - local x = -1 - local y = 0 - local x_max = 10 - - local button_size = (this:GetWidth() - pfUI_config.bars.border*3) / x_max - pfUI_config.bars.border - - for j=1, 5 do - for i=1, GetContainerNumSlots(j-1) do - x = x + 1 - if x >= x_max then y = y + 1; x = 0 end - - getglobal("ContainerFrame" .. j).size = GetContainerNumSlots(j-1) - f = getglobal("ContainerFrame" .. j .. "Item" .. i) - f:SetParent(pfUI.bag[j]) - f:SetID(i) - f:SetPoint("TOPLEFT", pfUI.bag, "TOPLEFT", pfUI_config.bars.border*2 + x*button_size + x*pfUI_config.bars.border, -pfUI_config.bars.border*2 - y*button_size - y * pfUI_config.bars.border - 17) - f:Show() - f:SetHeight(button_size) - f:SetWidth(button_size) - local texture, itemCount, locked, quality, readable = GetContainerItemInfo(j-1, i); - f:SetNormalTexture(nil) - - f:SetBackdrop( - { bgFile = texture, tile = false, tileSize = pfUI_config.unitframes.buff_size, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, - insets = { left = 0, right = 0, top = 0, bottom = 0} - }) - if quality and quality > 1 then - f:SetBackdropBorderColor(GetItemQualityColor(quality)) - else - f:SetBackdropBorderColor(.3,.3,.3,1) - end - - SetItemButtonCount(getglobal("ContainerFrame" .. j .. "Item" .. i), itemCount); - if ( texture ) then - local cooldown = getglobal(getglobal("ContainerFrame" .. j .. "Item" .. i):GetName().."Cooldown"); - local start, duration, enable = GetContainerItemCooldown(j-1, getglobal("ContainerFrame" .. j .. "Item" .. i):GetID()); - CooldownFrame_SetTimer(cooldown, start, duration, enable); - if ( duration > 0 and enable == 0 ) then - SetItemButtonTextureVertexColor(button, 0.4, 0.4, 0.4); - end - getglobal("ContainerFrame" .. j .. "Item" .. i .. "Cooldown"):Show(); - else - getglobal("ContainerFrame" .. j .. "Item" .. i .. "Cooldown"):Hide(); - end - - getglobal("ContainerFrame" .. j .. "Item" .. i .. "Count"):SetPoint("BOTTOMLEFT", 0,0) - getglobal("ContainerFrame" .. j .. "Item" .. i .. "Count"):SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") - - for i,v in ipairs({f:GetRegions()}) do - -- 2 is stack count - if i == 4 then v:SetAlpha(0) end - end - end - end - y = y + 1 - pfUI.bag:SetHeight( y * button_size + y * pfUI_config.bars.border + pfUI_config.bars.border*3 + 17 + 17) - end) - -pfUI.bank:RegisterEvent("BAG_UPDATE"); -pfUI.bank:RegisterEvent("BANKFRAME_OPENED"); -pfUI.bank:RegisterEvent("BANKFRAME_CLOSED"); -pfUI.bank:RegisterEvent("BAG_UPDATE_COOLDOWN"); -pfUI.bank:RegisterEvent("ITEM_LOCK_CHANGED"); -pfUI.bank:RegisterEvent("UPDATE_INVENTORY_ALERTS") -pfUI.bank:RegisterEvent("BANKFRAME_OPENED"); -pfUI.bank:RegisterEvent("PLAYERBANKSLOTS_CHANGED"); -pfUI.bank:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED"); -pfUI.bank:SetScript("OnEvent", function() - BankFrame:SetWidth(.1) - BankFrame:SetHeight(.1) - BankFrame:SetAlpha(0) - - if event == "BANKFRAME_OPENED" then pfUI.bank:Show(); pfUI.bag:Show() end - if event == "BANKFRAME_CLOSED" then pfUI.bank:Hide(); HideUIPanel(this) end - - local x = -1 - local y = 0 - local x_max = 10 - - local button_size = (this:GetWidth() - pfUI_config.bars.border*3) / x_max - pfUI_config.bars.border - - for j=5, 11 do - local frame, container = nil - if j == 5 then - frame = "BankFrame" - container = -1 - else - frame = "ContainerFrame" .. j - container = j - 1 - end - - for i=1, GetContainerNumSlots(container) do - x = x + 1 - if x >= x_max then y = y + 1; x = 0 end - getglobal(frame).size = GetContainerNumSlots(j-1) - f = getglobal(frame .. "Item" .. i) - if j == 5 then f:SetParent(pfUI.bank[12]) else f:SetParent(pfUI.bank[j]) end - f:Show() - f:SetID(i) - f:SetPoint("TOPLEFT", pfUI.bank, "TOPLEFT", pfUI_config.bars.border*2 + x*button_size + x*pfUI_config.bars.border, -pfUI_config.bars.border*2 - y*button_size - y * pfUI_config.bars.border) - f:SetAlpha(1) - f:SetHeight(button_size) - f:SetWidth(button_size) - local texture, itemCount, locked, quality, readable = GetContainerItemInfo(container, i); - f:SetNormalTexture(nil) - - f:SetBackdrop( - { bgFile = texture, tile = false, tileSize = pfUI_config.unitframes.buff_size, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, - insets = { left = 0, right = 0, top = 0, bottom = 0} - }) - if quality and quality > 1 then - f:SetBackdropBorderColor(GetItemQualityColor(quality)) - else - f:SetBackdropBorderColor(.3,.3,.3,1) - end - - SetItemButtonCount(getglobal(frame .. "Item" .. i), itemCount); - if ( texture ) then - local cooldown = getglobal(getglobal(frame .. "Item" .. i):GetName().."Cooldown"); - if cooldown then - local start, duration, enable = GetContainerItemCooldown(container, getglobal(frame .. "Item" .. i):GetID()); + SetItemButtonCount(getglobal("ContainerFrame" .. j .. "Item" .. i), itemCount); + if ( texture ) then + local cooldown = getglobal(getglobal("ContainerFrame" .. j .. "Item" .. i):GetName().."Cooldown"); + local start, duration, enable = GetContainerItemCooldown(j-1, getglobal("ContainerFrame" .. j .. "Item" .. i):GetID()); CooldownFrame_SetTimer(cooldown, start, duration, enable); if ( duration > 0 and enable == 0 ) then SetItemButtonTextureVertexColor(button, 0.4, 0.4, 0.4); end + getglobal("ContainerFrame" .. j .. "Item" .. i .. "Cooldown"):Show(); + else + getglobal("ContainerFrame" .. j .. "Item" .. i .. "Cooldown"):Hide(); + end + + getglobal("ContainerFrame" .. j .. "Item" .. i .. "Count"):SetPoint("BOTTOMLEFT", 0,0) + getglobal("ContainerFrame" .. j .. "Item" .. i .. "Count"):SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + + for i,v in ipairs({f:GetRegions()}) do + -- 2 is stack count + if i == 4 then v:SetAlpha(0) end end end + end + y = y + 1 + pfUI.bag:SetHeight( y * button_size + y * pfUI_config.bars.border + pfUI_config.bars.border*3 + 17 + 17) + end) - getglobal(frame .. "Item" .. i .. "Count"):SetPoint("BOTTOMLEFT", 0,0) - getglobal(frame .. "Item" .. i .. "Count"):SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.bank:RegisterEvent("BAG_UPDATE"); + pfUI.bank:RegisterEvent("BANKFRAME_OPENED"); + pfUI.bank:RegisterEvent("BANKFRAME_CLOSED"); + pfUI.bank:RegisterEvent("BAG_UPDATE_COOLDOWN"); + pfUI.bank:RegisterEvent("ITEM_LOCK_CHANGED"); + pfUI.bank:RegisterEvent("UPDATE_INVENTORY_ALERTS") + pfUI.bank:RegisterEvent("BANKFRAME_OPENED"); + pfUI.bank:RegisterEvent("PLAYERBANKSLOTS_CHANGED"); + pfUI.bank:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED"); + pfUI.bank:SetScript("OnEvent", function() + BankFrame:SetWidth(.1) + BankFrame:SetHeight(.1) + BankFrame:SetAlpha(0) - for i,v in ipairs({f:GetRegions()}) do - -- 2 is stack count - if i == 4 then v:SetAlpha(0) end - if j == 5 and i == 1 then v:SetAlpha(0) end + if event == "BANKFRAME_OPENED" then pfUI.bank:Show(); pfUI.bag:Show() end + if event == "BANKFRAME_CLOSED" then pfUI.bank:Hide(); HideUIPanel(this) end + local x = -1 + local y = 0 + local x_max = 10 + + local button_size = (this:GetWidth() - pfUI_config.bars.border*3) / x_max - pfUI_config.bars.border + + for j=5, 11 do + local frame, container = nil + if j == 5 then + frame = "BankFrame" + container = -1 + else + frame = "ContainerFrame" .. j + container = j - 1 + end + + for i=1, GetContainerNumSlots(container) do + x = x + 1 + if x >= x_max then y = y + 1; x = 0 end + getglobal(frame).size = GetContainerNumSlots(j-1) + f = getglobal(frame .. "Item" .. i) + if j == 5 then f:SetParent(pfUI.bank[12]) else f:SetParent(pfUI.bank[j]) end + f:Show() + f:SetID(i) + f:SetPoint("TOPLEFT", pfUI.bank, "TOPLEFT", pfUI_config.bars.border*2 + x*button_size + x*pfUI_config.bars.border, -pfUI_config.bars.border*2 - y*button_size - y * pfUI_config.bars.border) + f:SetAlpha(1) + f:SetHeight(button_size) + f:SetWidth(button_size) + local texture, itemCount, locked, quality, readable = GetContainerItemInfo(container, i); + f:SetNormalTexture(nil) + + f:SetBackdrop( + { bgFile = texture, tile = false, tileSize = pfUI_config.unitframes.buff_size, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) + if quality and quality > 1 then + f:SetBackdropBorderColor(GetItemQualityColor(quality)) + else + f:SetBackdropBorderColor(.3,.3,.3,1) + end + + SetItemButtonCount(getglobal(frame .. "Item" .. i), itemCount); + if ( texture ) then + local cooldown = getglobal(getglobal(frame .. "Item" .. i):GetName().."Cooldown"); + if cooldown then + local start, duration, enable = GetContainerItemCooldown(container, getglobal(frame .. "Item" .. i):GetID()); + CooldownFrame_SetTimer(cooldown, start, duration, enable); + if ( duration > 0 and enable == 0 ) then + SetItemButtonTextureVertexColor(button, 0.4, 0.4, 0.4); + end + end + end + + getglobal(frame .. "Item" .. i .. "Count"):SetPoint("BOTTOMLEFT", 0,0) + getglobal(frame .. "Item" .. i .. "Count"):SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + + for i,v in ipairs({f:GetRegions()}) do + -- 2 is stack count + if i == 4 then v:SetAlpha(0) end + if j == 5 and i == 1 then v:SetAlpha(0) end + + end end end - end - y = y + 1 - pfUI.bank:SetHeight( y * button_size + y * pfUI_config.bars.border + pfUI_config.bars.border*3 + 17) - end) + y = y + 1 + pfUI.bank:SetHeight( y * button_size + y * pfUI_config.bars.border + pfUI_config.bars.border*3 + 17) + end) +end) diff --git a/modules/chat.lua b/modules/chat.lua index a81aed74..9b09ccab 100644 --- a/modules/chat.lua +++ b/modules/chat.lua @@ -1,354 +1,356 @@ -pfUI.chat = CreateFrame("Frame",nil,UIParent) +pfUI:RegisterModule("chat", function () + pfUI.chat = CreateFrame("Frame",nil,UIParent) -pfUI.chat.left = CreateFrame("Frame", "leftChat", UIParent) -pfUI.chat.left:SetFrameStrata("BACKGROUND") -pfUI.chat.left:SetWidth(350) -pfUI.chat.left:SetHeight(150) -pfUI.chat.left:SetPoint("BOTTOMLEFT", 5,5) -pfUI.chat.left:SetBackdrop(pfUI.backdrop) -pfUI.chat.left:SetBackdropColor(0,0,0,.75) + pfUI.chat.left = CreateFrame("Frame", "leftChat", UIParent) + pfUI.chat.left:SetFrameStrata("BACKGROUND") + pfUI.chat.left:SetWidth(350) + pfUI.chat.left:SetHeight(150) + pfUI.chat.left:SetPoint("BOTTOMLEFT", 5,5) + pfUI.chat.left:SetBackdrop(pfUI.backdrop) + pfUI.chat.left:SetBackdropColor(0,0,0,.75) -pfUI.chat.left.panelTop = CreateFrame("Frame", "leftChatPanelTop", pfUI.chat.left) -pfUI.chat.left.panelTop:ClearAllPoints() -pfUI.chat.left.panelTop:SetHeight(19) -pfUI.chat.left.panelTop:SetPoint("TOPLEFT", pfUI.chat.left, "TOPLEFT", 2, -2) -pfUI.chat.left.panelTop:SetPoint("TOPRIGHT", pfUI.chat.left, "TOPRIGHT", -2, -2) -pfUI.chat.left.panelTop:SetBackdrop(pfUI.backdrop) -pfUI.chat.left.panelTop:SetBackdropColor(0,0,0,.75) + pfUI.chat.left.panelTop = CreateFrame("Frame", "leftChatPanelTop", pfUI.chat.left) + pfUI.chat.left.panelTop:ClearAllPoints() + pfUI.chat.left.panelTop:SetHeight(19) + pfUI.chat.left.panelTop:SetPoint("TOPLEFT", pfUI.chat.left, "TOPLEFT", 2, -2) + pfUI.chat.left.panelTop:SetPoint("TOPRIGHT", pfUI.chat.left, "TOPRIGHT", -2, -2) + pfUI.chat.left.panelTop:SetBackdrop(pfUI.backdrop) + pfUI.chat.left.panelTop:SetBackdropColor(0,0,0,.75) -pfUI.chat.right = CreateFrame("Frame", "leftChat", UIParent) -pfUI.chat.right:SetFrameStrata("BACKGROUND") -pfUI.chat.right:SetWidth(350) -pfUI.chat.right:SetHeight(150) -pfUI.chat.right:SetPoint("BOTTOMRIGHT", -5,5) -pfUI.chat.right:SetBackdrop(pfUI.backdrop) -pfUI.chat.right:SetBackdropColor(0,0,0,.75) + pfUI.chat.right = CreateFrame("Frame", "leftChat", UIParent) + pfUI.chat.right:SetFrameStrata("BACKGROUND") + pfUI.chat.right:SetWidth(350) + pfUI.chat.right:SetHeight(150) + pfUI.chat.right:SetPoint("BOTTOMRIGHT", -5,5) + pfUI.chat.right:SetBackdrop(pfUI.backdrop) + pfUI.chat.right:SetBackdropColor(0,0,0,.75) -pfUI.chat.right.panelTop = CreateFrame("Frame", "rightChatPanelTop", pfUI.chat.right) -pfUI.chat.right.panelTop:ClearAllPoints() -pfUI.chat.right.panelTop:SetHeight(19) -pfUI.chat.right.panelTop:SetPoint("TOPLEFT", pfUI.chat.right, "TOPLEFT", 2, -2) -pfUI.chat.right.panelTop:SetPoint("TOPRIGHT", pfUI.chat.right, "TOPRIGHT", -2, -2) -pfUI.chat.right.panelTop:SetBackdrop(pfUI.backdrop) -pfUI.chat.right.panelTop:SetBackdropColor(0,0,0,.75) + pfUI.chat.right.panelTop = CreateFrame("Frame", "rightChatPanelTop", pfUI.chat.right) + pfUI.chat.right.panelTop:ClearAllPoints() + pfUI.chat.right.panelTop:SetHeight(19) + pfUI.chat.right.panelTop:SetPoint("TOPLEFT", pfUI.chat.right, "TOPLEFT", 2, -2) + pfUI.chat.right.panelTop:SetPoint("TOPRIGHT", pfUI.chat.right, "TOPRIGHT", -2, -2) + pfUI.chat.right.panelTop:SetBackdrop(pfUI.backdrop) + pfUI.chat.right.panelTop:SetBackdropColor(0,0,0,.75) -pfUI.chat:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.chat:RegisterEvent("UI_SCALE_CHANGED") -pfUI.chat:RegisterEvent("FRIENDLIST_UPDATE") -pfUI.chat:RegisterEvent("GUILD_ROSTER_UPDATE") -pfUI.chat:RegisterEvent("RAID_ROSTER_UPDATE") -pfUI.chat:RegisterEvent("PARTY_MEMBERS_CHANGED") -pfUI.chat:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.chat:RegisterEvent("WHO_LIST_UPDATE") -pfUI.chat:RegisterEvent("CHAT_MSG_SYSTEM") + pfUI.chat:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.chat:RegisterEvent("UI_SCALE_CHANGED") + pfUI.chat:RegisterEvent("FRIENDLIST_UPDATE") + pfUI.chat:RegisterEvent("GUILD_ROSTER_UPDATE") + pfUI.chat:RegisterEvent("RAID_ROSTER_UPDATE") + pfUI.chat:RegisterEvent("PARTY_MEMBERS_CHANGED") + pfUI.chat:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.chat:RegisterEvent("WHO_LIST_UPDATE") + pfUI.chat:RegisterEvent("CHAT_MSG_SYSTEM") -pfUI.chat:SetScript("OnEvent", function() - if event == "PLAYER_ENTERING_WORLD" or event == "UI_SCALE_CHANGED" then - for i,v in ipairs({ChatFrameMenuButton:GetRegions()}) do - v:SetAllPoints(ChatFrameMenuButton) - local _, class = UnitClass("player") - v:SetTexture(.5,.5,.5, 1) - v:SetVertexColor(RAID_CLASS_COLORS[class].r + .3 * .5, RAID_CLASS_COLORS[class].g +.3 * .5, RAID_CLASS_COLORS[class].b +.3 * .5,1) - end - - pfUI.chat.SetupPositions() - pfUI.chat.SetupChannels() - - for i=1, NUM_CHAT_WINDOWS do - for j,v in ipairs({getglobal("ChatFrame" .. i .. "Tab"):GetRegions()}) do - if j==5 then v:SetTexture(0,0,0,0) end + pfUI.chat:SetScript("OnEvent", function() + if event == "PLAYER_ENTERING_WORLD" or event == "UI_SCALE_CHANGED" then + for i,v in ipairs({ChatFrameMenuButton:GetRegions()}) do + v:SetAllPoints(ChatFrameMenuButton) + local _, class = UnitClass("player") + v:SetTexture(.5,.5,.5, 1) + v:SetVertexColor(RAID_CLASS_COLORS[class].r + .3 * .5, RAID_CLASS_COLORS[class].g +.3 * .5, RAID_CLASS_COLORS[class].b +.3 * .5,1) end - local _, relativeTo = getglobal("ChatFrame" .. i):GetPoint(1) - getglobal("ChatFrame" .. i .. "Tab"):SetParent(pfUI.chat.left.panelTop) - getglobal("ChatFrame" .. i .. "ResizeBottom"):Hide() + pfUI.chat.SetupPositions() + pfUI.chat.SetupChannels() - if relativeTo == pfUI.chat.left then + for i=1, NUM_CHAT_WINDOWS do + for j,v in ipairs({getglobal("ChatFrame" .. i .. "Tab"):GetRegions()}) do + if j==5 then v:SetTexture(0,0,0,0) end + end + + local _, relativeTo = getglobal("ChatFrame" .. i):GetPoint(1) getglobal("ChatFrame" .. i .. "Tab"):SetParent(pfUI.chat.left.panelTop) - getglobal("ChatFrame" .. i):SetParent(pfUI.chat.left.panelTop) - elseif relativeTo == pfUI.chat.right then - getglobal("ChatFrame" .. i .. "Tab"):SetParent(pfUI.chat.right.panelTop) - getglobal("ChatFrame" .. i):SetParent(pfUI.chat.right.panelTop) - end + getglobal("ChatFrame" .. i .. "ResizeBottom"):Hide() - getglobal("ChatFrame" .. i .. "TabText"):SetJustifyV("TOP") - getglobal("ChatFrame" .. i .. "TabLeft"):SetAlpha(0) - getglobal("ChatFrame" .. i .. "TabMiddle"):SetAlpha(0) - getglobal("ChatFrame" .. i .. "TabRight"):SetAlpha(0) - getglobal("ChatFrame" .. i .. "TabFlash"):SetAlpha(0) - local _, class = UnitClass("player") - getglobal("ChatFrame" .. i .. "TabText"):SetTextColor(RAID_CLASS_COLORS[class].r + .3 * .5, RAID_CLASS_COLORS[class].g + .3 * .5, RAID_CLASS_COLORS[class].b + .3 * .5, 1) - getglobal("ChatFrame" .. i .. "TabText"):SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + if relativeTo == pfUI.chat.left then + getglobal("ChatFrame" .. i .. "Tab"):SetParent(pfUI.chat.left.panelTop) + getglobal("ChatFrame" .. i):SetParent(pfUI.chat.left.panelTop) + elseif relativeTo == pfUI.chat.right then + getglobal("ChatFrame" .. i .. "Tab"):SetParent(pfUI.chat.right.panelTop) + getglobal("ChatFrame" .. i):SetParent(pfUI.chat.right.panelTop) + end - if getglobal("ChatFrame" .. i).isDocked or getglobal("ChatFrame" .. i):IsVisible() then - getglobal("ChatFrame" .. i .. "Tab"):Show() - end + getglobal("ChatFrame" .. i .. "TabText"):SetJustifyV("TOP") + getglobal("ChatFrame" .. i .. "TabLeft"):SetAlpha(0) + getglobal("ChatFrame" .. i .. "TabMiddle"):SetAlpha(0) + getglobal("ChatFrame" .. i .. "TabRight"):SetAlpha(0) + getglobal("ChatFrame" .. i .. "TabFlash"):SetAlpha(0) + local _, class = UnitClass("player") + getglobal("ChatFrame" .. i .. "TabText"):SetTextColor(RAID_CLASS_COLORS[class].r + .3 * .5, RAID_CLASS_COLORS[class].g + .3 * .5, RAID_CLASS_COLORS[class].b + .3 * .5, 1) + getglobal("ChatFrame" .. i .. "TabText"):SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") - local cf = getglobal("ChatFrame" .. i) - cf:EnableMouseWheel(true) - cf:SetScript("OnMouseWheel", function() - if (arg1 > 0) then - if IsShiftKeyDown() then - cf:ScrollToTop() - else - cf:ScrollUp() + if getglobal("ChatFrame" .. i).isDocked or getglobal("ChatFrame" .. i):IsVisible() then + getglobal("ChatFrame" .. i .. "Tab"):Show() + end + + local cf = getglobal("ChatFrame" .. i) + cf:EnableMouseWheel(true) + cf:SetScript("OnMouseWheel", function() + if (arg1 > 0) then + if IsShiftKeyDown() then + cf:ScrollToTop() + else + cf:ScrollUp() + end + elseif (arg1 < 0) then + if IsShiftKeyDown() then + cf:ScrollToBottom() + else + cf:ScrollDown() + end end - elseif (arg1 < 0) then - if IsShiftKeyDown() then - cf:ScrollToBottom() - else - cf:ScrollDown() - end - end - end) - end - - elseif event == "FRIENDLIST_UPDATE" or event == "PLAYER_ENTERING_WORLD" then - local Name, Class, Level - for i = 1, GetNumFriends() do - Name, Level, Class = GetFriendInfo(i) - if pfLocaleClass[GetLocale()] and pfLocaleClass[GetLocale()][Class] then - Class = pfLocaleClass[GetLocale()][Class] + end) end - pfUI.playerDB[Name] = { class = Class, level = Level } - end - elseif event == "GUILD_ROSTER_UPDATE" or event == "PLAYER_ENTERING_WORLD" then - local Name, Class, Level - for i = 1, GetNumGuildMembers() do - Name, _, _, Level, Class = GetGuildRosterInfo(i) - if pfLocaleClass[GetLocale()] and pfLocaleClass[GetLocale()][Class] then - Class = pfLocaleClass[GetLocale()][Class] + + elseif event == "FRIENDLIST_UPDATE" or event == "PLAYER_ENTERING_WORLD" then + local Name, Class, Level + for i = 1, GetNumFriends() do + Name, Level, Class = GetFriendInfo(i) + if pfLocaleClass[GetLocale()] and pfLocaleClass[GetLocale()][Class] then + Class = pfLocaleClass[GetLocale()][Class] + end + pfUI.playerDB[Name] = { class = Class, level = Level } end - pfUI.playerDB[Name] = { class = Class, level = Level } - end - - elseif event == "RAID_ROSTER_UPDATE" or event == "PLAYER_ENTERING_WORLD" then - local Name, Class, SubGroup, Level - for i = 1, GetNumRaidMembers() do - Name, _, SubGroup, Level, Class = GetRaidRosterInfo(i) - if pfLocaleClass[GetLocale()] and pfLocaleClass[GetLocale()].Class then - Class = pfLocaleClass[GetLocale()][Class] + elseif event == "GUILD_ROSTER_UPDATE" or event == "PLAYER_ENTERING_WORLD" then + local Name, Class, Level + for i = 1, GetNumGuildMembers() do + Name, _, _, Level, Class = GetGuildRosterInfo(i) + if pfLocaleClass[GetLocale()] and pfLocaleClass[GetLocale()][Class] then + Class = pfLocaleClass[GetLocale()][Class] + end + pfUI.playerDB[Name] = { class = Class, level = Level } end - pfUI.playerDB[Name] = { class = Class, level = Level } - end - elseif event == "PARTY_MEMBERS_CHANGED" or event == "PLAYER_ENTERING_WORLD" then - local Class, Unit - for i = 1, GetNumPartyMembers() do - Unit = "party" .. i - _, Class = UnitClass(Unit) - pfUI.playerDB[UnitName(Unit)] = { class = Class, level = UnitLevel(Unit) } - end + elseif event == "RAID_ROSTER_UPDATE" or event == "PLAYER_ENTERING_WORLD" then + local Name, Class, SubGroup, Level + for i = 1, GetNumRaidMembers() do + Name, _, SubGroup, Level, Class = GetRaidRosterInfo(i) + if pfLocaleClass[GetLocale()] and pfLocaleClass[GetLocale()].Class then + Class = pfLocaleClass[GetLocale()][Class] + end + pfUI.playerDB[Name] = { class = Class, level = Level } + end - elseif event == "PLAYER_TARGET_CHANGED" then - local Class - if not UnitIsPlayer("target") or not UnitIsFriend("player", "target") then - return - end - _, Class = UnitClass("target") - pfUI.playerDB[UnitName("target")] = { class = Class, level = UnitLevel("target") } + elseif event == "PARTY_MEMBERS_CHANGED" or event == "PLAYER_ENTERING_WORLD" then + local Class, Unit + for i = 1, GetNumPartyMembers() do + Unit = "party" .. i + _, Class = UnitClass(Unit) + pfUI.playerDB[UnitName(Unit)] = { class = Class, level = UnitLevel(Unit) } + end - elseif event == "WHO_LIST_UPDATE" or event == "CHAT_MSG_SYSTEM" then - local Name, Class, Level - for i = 1, GetNumWhoResults() do - Name, _, Level, _, Class, _ = GetWhoInfo(i) - if pfLocaleClass[GetLocale()] and pfLocaleClass[GetLocale()][Class] then - Class = pfLocaleClass[GetLocale()][Class] + elseif event == "PLAYER_TARGET_CHANGED" then + local Class + if not UnitIsPlayer("target") or not UnitIsFriend("player", "target") then + return + end + _, Class = UnitClass("target") + pfUI.playerDB[UnitName("target")] = { class = Class, level = UnitLevel("target") } + + elseif event == "WHO_LIST_UPDATE" or event == "CHAT_MSG_SYSTEM" then + local Name, Class, Level + for i = 1, GetNumWhoResults() do + Name, _, Level, _, Class, _ = GetWhoInfo(i) + if pfLocaleClass[GetLocale()] and pfLocaleClass[GetLocale()][Class] then + Class = pfLocaleClass[GetLocale()][Class] + end + pfUI.playerDB[Name] = { class = Class, level = Level } end - pfUI.playerDB[Name] = { class = Class, level = Level } end - end - end) + end) -Hook_ChatFrame_OnUpdate = ChatFrame_OnUpdate -function ChatFrame_OnUpdate (arg1) - for i=1, NUM_CHAT_WINDOWS do - getglobal("ChatFrame" .. i .. "UpButton"):Hide() - getglobal("ChatFrame" .. i .. "DownButton"):Hide() - getglobal("ChatFrame" .. i .. "BottomButton"):Hide() - end - Hook_ChatFrame_OnUpdate(arg1) -end - -function pfUI.chat.SetupPositions() - -- set position of Main Window - ChatFrame1:ClearAllPoints() - ChatFrame1:SetPoint("TOPLEFT", pfUI.chat.left ,"TOPLEFT", 5, -25) - ChatFrame1:SetPoint("BOTTOMRIGHT", pfUI.chat.left ,"BOTTOMRIGHT", -5, 25) - - FCF_SetLocked(ChatFrame1, 1) - FCF_SetWindowColor(ChatFrame1, 0, 0, 0); - FCF_SetWindowAlpha(ChatFrame1, 0); - FCF_SetChatWindowFontSize(ChatFrame1, 12) - -- set position of Loot & Spam - if not ChatFrame3.isDocked == 1 or not ChatFrame3:IsShown() then - FCF_OpenNewWindow("Loot & Spam") - end - - FCF_SetWindowColor(ChatFrame3, 0, 0, 0); - FCF_SetWindowAlpha(ChatFrame3, 0); - FCF_SetChatWindowFontSize(ChatFrame3, 12) - FCF_SetWindowName(ChatFrame3, "Loot & Spam", 1 ) - FCF_UnDockFrame(ChatFrame3) - ChatFrame3:ClearAllPoints() - ChatFrame3:SetPoint("TOPLEFT", pfUI.chat.right ,"TOPLEFT", 5, -25) - ChatFrame3:SetPoint("BOTTOMRIGHT", pfUI.chat.right ,"BOTTOMRIGHT", -5, 25) - FCF_SetLocked(ChatFrame3, 1) - -- save positions on logout - ChatFrame1:SetUserPlaced(1); - ChatFrame3:SetUserPlaced(1); -end - -function pfUI.chat.SetupChannels() - ChatFrame_RemoveAllMessageGroups(ChatFrame1) - ChatFrame_RemoveAllMessageGroups(ChatFrame3) - - local normalg = {"SAY", "EMOTE", "YELL", "GUILD", "OFFICER", "GUILD_ACHIEVEMENT", "WHISPER", - "MONSTER_SAY", "MONSTER_EMOTE", "MONSTER_YELL", "MONSTER_WHISPER", "MONSTER_BOSS_EMOTE", "MONSTER_BOSS_WHISPER", - "PARTY", "PARTY_LEADER", "RAID", "RAID_LEADER", "RAID_WARNING", "BATTLEGROUND", "BATTLEGROUND_LEADER", - "BG_HORDE", "BG_ALLIANCE", "BG_NEUTRAL", "SYSTEM", "ERRORS", "AFK", "DND", "IGNORED", "BN_WHISPER", "BN_CONVERSATION"} - for _,group in pairs(normalg) do - ChatFrame_AddMessageGroup(ChatFrame1, group) - end - - local spamg = { "COMBAT_XP_GAIN", "COMBAT_HONOR_GAIN", "COMBAT_FACTION_CHANGE", "LOOT", "MONEY" } - for _,group in pairs(spamg) do - ChatFrame_AddMessageGroup(ChatFrame3, group) - end - - local spamc = { "Trade", "General", "LocalDefense", "GuildRecruitment", "LookingForGroup", - "Handel", "Allgemein", "LokaleVerteidigung", "Gildenrekrutierung", "SucheNachGruppe", "World" } - for _,channel in pairs(spamc) do - ChatFrame_RemoveChannel(ChatFrame1, channel) - ChatFrame_AddChannel(ChatFrame3, channel) - end - - JoinChannelByName("World") - ChatFrame_AddChannel(ChatFrame3, "World") -end - --- orig. function but removed flashing -function FCF_OnUpdate(elapsed) - -- Need to draw the dock regions for a frame to define their rects - if ( not ChatFrame1.init ) then + Hook_ChatFrame_OnUpdate = ChatFrame_OnUpdate + function ChatFrame_OnUpdate (arg1) for i=1, NUM_CHAT_WINDOWS do - getglobal("ChatFrame"..i.."TabDockRegion"):Show(); - FCF_UpdateButtonSide(getglobal("ChatFrame"..i)); + getglobal("ChatFrame" .. i .. "UpButton"):Hide() + getglobal("ChatFrame" .. i .. "DownButton"):Hide() + getglobal("ChatFrame" .. i .. "BottomButton"):Hide() end - ChatFrame1.init = 1; - return; - elseif ( ChatFrame1.init == 1 ) then - for i=1, NUM_CHAT_WINDOWS do - getglobal("ChatFrame"..i.."TabDockRegion"):Hide(); - end - ChatFrame1.init = 2; + Hook_ChatFrame_OnUpdate(arg1) end - -- Detect if mouse is over any chat frames and if so show their tabs, if not hide them - local chatFrame, chatTab; + function pfUI.chat.SetupPositions() + -- set position of Main Window + ChatFrame1:ClearAllPoints() + ChatFrame1:SetPoint("TOPLEFT", pfUI.chat.left ,"TOPLEFT", 5, -25) + ChatFrame1:SetPoint("BOTTOMRIGHT", pfUI.chat.left ,"BOTTOMRIGHT", -5, 25) - if ( MOVING_CHATFRAME ) then - -- Set buttons to the left or right side of the frame - -- If the the side of the buttons changes and the frame is the default frame, then set every docked frames buttons to the same side - local updateAllButtons = nil; - if (FCF_UpdateButtonSide(MOVING_CHATFRAME) and MOVING_CHATFRAME == DEFAULT_CHAT_FRAME ) then - updateAllButtons = 1; + FCF_SetLocked(ChatFrame1, 1) + FCF_SetWindowColor(ChatFrame1, 0, 0, 0); + FCF_SetWindowAlpha(ChatFrame1, 0); + FCF_SetChatWindowFontSize(ChatFrame1, 12) + -- set position of Loot & Spam + if not ChatFrame3.isDocked == 1 or not ChatFrame3:IsShown() then + FCF_OpenNewWindow("Loot & Spam") end - local dockRegion; - for index, value in DOCKED_CHAT_FRAMES do - if ( updateAllButtons ) then - FCF_UpdateButtonSide(value); + + FCF_SetWindowColor(ChatFrame3, 0, 0, 0); + FCF_SetWindowAlpha(ChatFrame3, 0); + FCF_SetChatWindowFontSize(ChatFrame3, 12) + FCF_SetWindowName(ChatFrame3, "Loot & Spam", 1 ) + FCF_UnDockFrame(ChatFrame3) + ChatFrame3:ClearAllPoints() + ChatFrame3:SetPoint("TOPLEFT", pfUI.chat.right ,"TOPLEFT", 5, -25) + ChatFrame3:SetPoint("BOTTOMRIGHT", pfUI.chat.right ,"BOTTOMRIGHT", -5, 25) + FCF_SetLocked(ChatFrame3, 1) + -- save positions on logout + ChatFrame1:SetUserPlaced(1); + ChatFrame3:SetUserPlaced(1); + end + + function pfUI.chat.SetupChannels() + ChatFrame_RemoveAllMessageGroups(ChatFrame1) + ChatFrame_RemoveAllMessageGroups(ChatFrame3) + + local normalg = {"SAY", "EMOTE", "YELL", "GUILD", "OFFICER", "GUILD_ACHIEVEMENT", "WHISPER", + "MONSTER_SAY", "MONSTER_EMOTE", "MONSTER_YELL", "MONSTER_WHISPER", "MONSTER_BOSS_EMOTE", "MONSTER_BOSS_WHISPER", + "PARTY", "PARTY_LEADER", "RAID", "RAID_LEADER", "RAID_WARNING", "BATTLEGROUND", "BATTLEGROUND_LEADER", + "BG_HORDE", "BG_ALLIANCE", "BG_NEUTRAL", "SYSTEM", "ERRORS", "AFK", "DND", "IGNORED", "BN_WHISPER", "BN_CONVERSATION"} + for _,group in pairs(normalg) do + ChatFrame_AddMessageGroup(ChatFrame1, group) + end + + local spamg = { "COMBAT_XP_GAIN", "COMBAT_HONOR_GAIN", "COMBAT_FACTION_CHANGE", "LOOT", "MONEY" } + for _,group in pairs(spamg) do + ChatFrame_AddMessageGroup(ChatFrame3, group) + end + + local spamc = { "Trade", "General", "LocalDefense", "GuildRecruitment", "LookingForGroup", + "Handel", "Allgemein", "LokaleVerteidigung", "Gildenrekrutierung", "SucheNachGruppe", "World" } + for _,channel in pairs(spamc) do + ChatFrame_RemoveChannel(ChatFrame1, channel) + ChatFrame_AddChannel(ChatFrame3, channel) + end + + JoinChannelByName("World") + ChatFrame_AddChannel(ChatFrame3, "World") + end + + -- orig. function but removed flashing + function FCF_OnUpdate(elapsed) + -- Need to draw the dock regions for a frame to define their rects + if ( not ChatFrame1.init ) then + for i=1, NUM_CHAT_WINDOWS do + getglobal("ChatFrame"..i.."TabDockRegion"):Show(); + FCF_UpdateButtonSide(getglobal("ChatFrame"..i)); end - - dockRegion = getglobal(value:GetName().."TabDockRegion"); - if ( MouseIsOver(dockRegion) and MOVING_CHATFRAME ~= DEFAULT_CHAT_FRAME ) then - dockRegion:Show(); - else - dockRegion:Hide(); + ChatFrame1.init = 1; + return; + elseif ( ChatFrame1.init == 1 ) then + for i=1, NUM_CHAT_WINDOWS do + getglobal("ChatFrame"..i.."TabDockRegion"):Hide(); end + ChatFrame1.init = 2; end - end - -- If the default chat frame is resizing, then resize the dock - if ( DEFAULT_CHAT_FRAME.resizing ) then - FCF_DockUpdate(); - end -end + -- Detect if mouse is over any chat frames and if so show their tabs, if not hide them + local chatFrame, chatTab; -ChatFrameMenuButton:SetNormalTexture("foo") -ChatFrameMenuButton:ClearAllPoints() -ChatFrameMenuButton:SetParent(pfUI.chat.left.panelTop) -ChatFrameMenuButton:SetPoint("TOPRIGHT",-6,-6) -ChatFrameMenuButton:SetHeight(6) -ChatFrameMenuButton:SetWidth(6) + if ( MOVING_CHATFRAME ) then + -- Set buttons to the left or right side of the frame + -- If the the side of the buttons changes and the frame is the default frame, then set every docked frames buttons to the same side + local updateAllButtons = nil; + if (FCF_UpdateButtonSide(MOVING_CHATFRAME) and MOVING_CHATFRAME == DEFAULT_CHAT_FRAME ) then + updateAllButtons = 1; + end + local dockRegion; + for index, value in DOCKED_CHAT_FRAMES do + if ( updateAllButtons ) then + FCF_UpdateButtonSide(value); + end -ChatFrameEditBox:ClearAllPoints() -ChatFrameEditBox:SetHeight(22) -ChatFrameEditBox:SetPoint("BOTTOMLEFT", pfUI.bars.bottom, "TOPLEFT", 0, 5) -ChatFrameEditBox:SetPoint("BOTTOMRIGHT", pfUI.bars.bottom, "TOPRIGHT", 0, 5) - -ChatFrameEditBox:SetBackdrop(pfUI.backdrop) - -for i,v in ipairs({ChatFrameEditBox:GetRegions()}) do - if i==6 or i==7 or i==8 then - v:SetTexture(0,0,0,1) - v:SetHeight(ChatFrameEditBox:GetHeight()) - end -end -ChatFrameEditBox:SetAltArrowKeyMode(false) - -local shortnames = { channel1 = "[1]", channel2 = "[2]", - channel3 = "[3]", channel4 = "[4]", channel5 = "[5]", - channel6 = "[6]", channel7 = "[7]", channel8 = "[8]", - channel9 = "[9]", channel10 = "[10]", } - -local default = " " .. "%s" .. "|r:" .. "\32" -CHAT_CHANNEL_GET = "%s" .. "|r:" .. "\32"; -CHAT_GUILD_GET = '[G]' .. default -CHAT_OFFICER_GET = '[O]'.. default -CHAT_PARTY_GET = '[P]' .. default -CHAT_RAID_GET = '[R]' .. default -CHAT_RAID_LEADER_GET = '[RL]' .. default -CHAT_RAID_WARNING_GET = '[RW]' .. default -CHAT_BATTLEGROUND_GET = '[BG]' .. default -CHAT_BATTLEGROUND_LEADER_GET = '[BL]' .. default -CHAT_SAY_GET = '[S]' .. default -CHAT_WHISPER_GET = '|cffffaaff[W]' .. default -CHAT_WHISPER_INFORM_GET = '[W]' .. default -CHAT_YELL_GET = '[Y]' .. default - -for i=1,NUM_CHAT_WINDOWS do - local HookAddMessage = getglobal("ChatFrame"..i).AddMessage - getglobal("ChatFrame"..i).AddMessage = function (frame, text, ...) - if text then - local Name = string.gsub(text, ".*|Hplayer:(.-)|h.*", "%1") - if pfUI.playerDB[Name] and pfUI.playerDB[Name].class ~= nil then - local Class = pfUI.playerDB[Name].class - if RAID_CLASS_COLORS[Class] ~= nil then - local Color = string.format("%02x%02x%02x", - RAID_CLASS_COLORS[Class].r * 255, - RAID_CLASS_COLORS[Class].g * 255, - RAID_CLASS_COLORS[Class].b * 255) - Name = "|cff" .. Color .. Name .. "|r" + dockRegion = getglobal(value:GetName().."TabDockRegion"); + if ( MouseIsOver(dockRegion) and MOVING_CHATFRAME ~= DEFAULT_CHAT_FRAME ) then + dockRegion:Show(); + else + dockRegion:Hide(); end end - text = string.gsub(text, "|Hplayer:(.-)|h%[.-%]|h(.-:-)", "[|Hplayer:%1|h" .. Name .. "|h]" .. "%2") + end - -- make incoming whispers lighter than outgoing - if string.find(text, '|cffffaaff') == 1 then - text = string.gsub(text, "|r", "|cffffaaff") - end - - local pattern = "%]%s+(.*|Hplayer)" - local channel = string.gsub(text, ".*%[(.-)" .. pattern ..".+", "%1") - if string.find(channel, "%d+%. ") then - channel = string.gsub(channel, "(%d+)%..*", "channel%1") - channel = string.gsub(channel, "channel", "") - pattern = "%[%d+%..-" .. pattern - text = string.gsub(text, pattern, "["..channel.."]".."%1") - end - - HookAddMessage(frame, text, unpack(arg)) + -- If the default chat frame is resizing, then resize the dock + if ( DEFAULT_CHAT_FRAME.resizing ) then + FCF_DockUpdate(); end end -end + + ChatFrameMenuButton:SetNormalTexture("foo") + ChatFrameMenuButton:ClearAllPoints() + ChatFrameMenuButton:SetParent(pfUI.chat.left.panelTop) + ChatFrameMenuButton:SetPoint("TOPRIGHT",-6,-6) + ChatFrameMenuButton:SetHeight(6) + ChatFrameMenuButton:SetWidth(6) + + ChatFrameEditBox:ClearAllPoints() + ChatFrameEditBox:SetHeight(22) + ChatFrameEditBox:SetPoint("BOTTOMLEFT", pfUI.bars.bottom, "TOPLEFT", 0, 5) + ChatFrameEditBox:SetPoint("BOTTOMRIGHT", pfUI.bars.bottom, "TOPRIGHT", 0, 5) + + ChatFrameEditBox:SetBackdrop(pfUI.backdrop) + + for i,v in ipairs({ChatFrameEditBox:GetRegions()}) do + if i==6 or i==7 or i==8 then + v:SetTexture(0,0,0,1) + v:SetHeight(ChatFrameEditBox:GetHeight()) + end + end + ChatFrameEditBox:SetAltArrowKeyMode(false) + + local shortnames = { channel1 = "[1]", channel2 = "[2]", + channel3 = "[3]", channel4 = "[4]", channel5 = "[5]", + channel6 = "[6]", channel7 = "[7]", channel8 = "[8]", + channel9 = "[9]", channel10 = "[10]", } + + local default = " " .. "%s" .. "|r:" .. "\32" + CHAT_CHANNEL_GET = "%s" .. "|r:" .. "\32"; + CHAT_GUILD_GET = '[G]' .. default + CHAT_OFFICER_GET = '[O]'.. default + CHAT_PARTY_GET = '[P]' .. default + CHAT_RAID_GET = '[R]' .. default + CHAT_RAID_LEADER_GET = '[RL]' .. default + CHAT_RAID_WARNING_GET = '[RW]' .. default + CHAT_BATTLEGROUND_GET = '[BG]' .. default + CHAT_BATTLEGROUND_LEADER_GET = '[BL]' .. default + CHAT_SAY_GET = '[S]' .. default + CHAT_WHISPER_GET = '|cffffaaff[W]' .. default + CHAT_WHISPER_INFORM_GET = '[W]' .. default + CHAT_YELL_GET = '[Y]' .. default + + for i=1,NUM_CHAT_WINDOWS do + local HookAddMessage = getglobal("ChatFrame"..i).AddMessage + getglobal("ChatFrame"..i).AddMessage = function (frame, text, ...) + if text then + local Name = string.gsub(text, ".*|Hplayer:(.-)|h.*", "%1") + if pfUI.playerDB[Name] and pfUI.playerDB[Name].class ~= nil then + local Class = pfUI.playerDB[Name].class + if RAID_CLASS_COLORS[Class] ~= nil then + local Color = string.format("%02x%02x%02x", + RAID_CLASS_COLORS[Class].r * 255, + RAID_CLASS_COLORS[Class].g * 255, + RAID_CLASS_COLORS[Class].b * 255) + Name = "|cff" .. Color .. Name .. "|r" + end + end + text = string.gsub(text, "|Hplayer:(.-)|h%[.-%]|h(.-:-)", "[|Hplayer:%1|h" .. Name .. "|h]" .. "%2") + + -- make incoming whispers lighter than outgoing + if string.find(text, '|cffffaaff') == 1 then + text = string.gsub(text, "|r", "|cffffaaff") + end + + local pattern = "%]%s+(.*|Hplayer)" + local channel = string.gsub(text, ".*%[(.-)" .. pattern ..".+", "%1") + if string.find(channel, "%d+%. ") then + channel = string.gsub(channel, "(%d+)%..*", "channel%1") + channel = string.gsub(channel, "channel", "") + pattern = "%[%d+%..-" .. pattern + text = string.gsub(text, pattern, "["..channel.."]".."%1") + end + + HookAddMessage(frame, text, unpack(arg)) + end + end + end +end) diff --git a/modules/cooldown.lua b/modules/cooldown.lua index 5b398e2d..6edbf2ea 100644 --- a/modules/cooldown.lua +++ b/modules/cooldown.lua @@ -1,70 +1,72 @@ -function CooldownFrame_SetTimer(this, start, duration, enable) - if ( start > 0 and duration > 0 and enable > 0) then +pfUI:RegisterModule("cooldown", function () + function CooldownFrame_SetTimer(this, start, duration, enable) + if ( start > 0 and duration > 0 and enable > 0) then - this.start = start; - this.duration = duration; - this.stopping = 0; - this:SetSequence(0); + this.start = start; + this.duration = duration; + this.stopping = 0; + this:SetSequence(0); - if not this.cd then - this.cd = CreateFrame("Frame") - this.cd:SetAllPoints(this) - this.cd:SetParent(this:GetParent()) + if not this.cd then + this.cd = CreateFrame("Frame") + this.cd:SetAllPoints(this) + this.cd:SetParent(this:GetParent()) - this.cd.back = this.cd:CreateTexture(nil,"BACKGROUND") - this.cd.back:SetTexture(0,0,0,1) - this.cd.back:SetAlpha(.5) - this.cd.back:SetAllPoints(this.cd) + this.cd.back = this.cd:CreateTexture(nil,"BACKGROUND") + this.cd.back:SetTexture(0,0,0,1) + this.cd.back:SetAlpha(.5) + this.cd.back:SetAllPoints(this.cd) - this.cd.text = this.cd:CreateFontString("Status", "HIGH", "GameFontNormal") - this.cd.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - this.cd.text:ClearAllPoints() - this.cd.text:SetParent(this.cd) - this.cd.text:SetAllPoints(this.cd) - this.cd.text:SetJustifyH("CENTER") - this.cd.text:SetFontObject(GameFontWhite) + this.cd.text = this.cd:CreateFontString("Status", "HIGH", "GameFontNormal") + this.cd.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + this.cd.text:ClearAllPoints() + this.cd.text:SetParent(this.cd) + this.cd.text:SetAllPoints(this.cd) + this.cd.text:SetJustifyH("CENTER") + this.cd.text:SetFontObject(GameFontWhite) + end + this:Show(); + else + this:Hide() end - this:Show(); - else - this:Hide() + + this:SetAlpha(0) end - this:SetAlpha(0) -end + function CooldownFrame_OnUpdateModel() + if this.start and this.duration then + local remaining = this.duration - (GetTime() - this.start) -function CooldownFrame_OnUpdateModel() - if this.start and this.duration then - local remaining = this.duration - (GetTime() - this.start) + -- disable GCD notify + if ( remaining >= 1.5 ) then + this.cd:Show() + local unit = "" + if remaining > 99 then + remaining = remaining / 60 + unit = "m" + end - -- disable GCD notify - if ( remaining >= 1.5 ) then - this.cd:Show() - local unit = "" - if remaining > 99 then - remaining = remaining / 60 - unit = "m" + if remaining > 99 then + remaining = remaining / 60 + unit = "h" + end + + this.cd.text:SetText(floor(remaining)..unit) + --elseif ( remaining >= .5 ) then + -- this.cd:Show() + -- this.cd.text:SetText("") + else + this:Hide(); + this.cd:Hide() + this.stopping = 1; end + end + end - if remaining > 99 then - remaining = remaining / 60 - unit = "h" - end - - this.cd.text:SetText(floor(remaining)..unit) - --elseif ( remaining >= .5 ) then - -- this.cd:Show() - -- this.cd.text:SetText("") - else + function CooldownFrame_OnAnimFinished() + if ( this.stopping == 1 ) then this:Hide(); this.cd:Hide() - this.stopping = 1; end end -end - -function CooldownFrame_OnAnimFinished() - if ( this.stopping == 1 ) then - this:Hide(); - this.cd:Hide() - end -end +end) diff --git a/modules/font.lua b/modules/font.lua index 2a13679f..fa5e8906 100644 --- a/modules/font.lua +++ b/modules/font.lua @@ -1,47 +1,49 @@ -pfUI.font = CreateFrame("Frame",nil,UIParent) -pfUI.font:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.font:RegisterEvent("VARIABLES_LOADED") -pfUI.font:RegisterEvent("ADDON_LOADED") +pfUI:RegisterModule("font", function () + pfUI.font = CreateFrame("Frame",nil,UIParent) + pfUI.font:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.font:RegisterEvent("VARIABLES_LOADED") + pfUI.font:RegisterEvent("ADDON_LOADED") -pfUI.font:SetScript("OnEvent", function() - pfUI.font:LoadFonts() - end) + pfUI.font:SetScript("OnEvent", function() + pfUI.font:LoadFonts() + end) -function pfUI.font.LoadFonts() - local font = "Interface\\AddOns\\pfUI\\fonts\\arial.ttf" - local combat_font = "Interface\\AddOns\\pfUI\\fonts\\combat_font.ttf" + function pfUI.font.LoadFonts() + local font = "Interface\\AddOns\\pfUI\\fonts\\arial.ttf" + local combat_font = "Interface\\AddOns\\pfUI\\fonts\\combat_font.ttf" - STANDARD_TEXT_FONT = font; - UNIT_NAME_FONT = font; - DAMAGE_TEXT_FONT = combat_font; - NAMEPLATE_FONT = font; + STANDARD_TEXT_FONT = font; + UNIT_NAME_FONT = font; + DAMAGE_TEXT_FONT = combat_font; + NAMEPLATE_FONT = font; - SystemFont:SetFont(font, 15) - GameFontNormal:SetFont(font, 12) - GameFontBlack:SetFont(font, 12) - GameFontNormalSmall:SetFont(font, 10) - GameFontNormalLarge:SetFont(font, 16) - GameFontNormalHuge:SetFont(font, 20) - NumberFontNormal:SetFont(font, 14, "OUTLINE") - NumberFontNormalSmall:SetFont(font, 14, "OUTLINE") - NumberFontNormalLarge:SetFont(font, 16, "OUTLINE") - NumberFontNormalHuge:SetFont(font, 30, "OUTLINE") - QuestTitleFont:SetFont(font, 18) - QuestFont:SetFont(font, 13) - QuestFontHighlight:SetFont(font, 14) - ItemTextFontNormal:SetFont(font, 15) - MailTextFontNormal:SetFont(font, 15) - SubSpellFont:SetFont(font, 10) - DialogButtonNormalText:SetFont(font, 16) - ZoneTextFont:SetFont(font, 48, "OUTLINE") - SubZoneTextFont:SetFont(font, 24, "OUTLINE") - TextStatusBarTextSmall:SetFont(font, 12, "NORMAL") - GameTooltipText:SetFont(font, 12) - GameTooltipTextSmall:SetFont(font, 10) - GameTooltipHeaderText:SetFont(font, 14) - WorldMapTextFont:SetFont(font, 102, "THICK") - InvoiceTextFontNormal:SetFont(font, 12) - InvoiceTextFontSmall:SetFont(font, 10) - CombatTextFont:SetFont(font, 25) - ChatFontNormal:SetFont(font, 12, "NORMAL") -end + SystemFont:SetFont(font, 15) + GameFontNormal:SetFont(font, 12) + GameFontBlack:SetFont(font, 12) + GameFontNormalSmall:SetFont(font, 10) + GameFontNormalLarge:SetFont(font, 16) + GameFontNormalHuge:SetFont(font, 20) + NumberFontNormal:SetFont(font, 14, "OUTLINE") + NumberFontNormalSmall:SetFont(font, 14, "OUTLINE") + NumberFontNormalLarge:SetFont(font, 16, "OUTLINE") + NumberFontNormalHuge:SetFont(font, 30, "OUTLINE") + QuestTitleFont:SetFont(font, 18) + QuestFont:SetFont(font, 13) + QuestFontHighlight:SetFont(font, 14) + ItemTextFontNormal:SetFont(font, 15) + MailTextFontNormal:SetFont(font, 15) + SubSpellFont:SetFont(font, 10) + DialogButtonNormalText:SetFont(font, 16) + ZoneTextFont:SetFont(font, 48, "OUTLINE") + SubZoneTextFont:SetFont(font, 24, "OUTLINE") + TextStatusBarTextSmall:SetFont(font, 12, "NORMAL") + GameTooltipText:SetFont(font, 12) + GameTooltipTextSmall:SetFont(font, 10) + GameTooltipHeaderText:SetFont(font, 14) + WorldMapTextFont:SetFont(font, 102, "THICK") + InvoiceTextFontNormal:SetFont(font, 12) + InvoiceTextFontSmall:SetFont(font, 10) + CombatTextFont:SetFont(font, 25) + ChatFontNormal:SetFont(font, 12, "NORMAL") + end +end) diff --git a/modules/gui.lua b/modules/gui.lua index 069d2988..c884c9af 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -1,212 +1,214 @@ -pfUI.gui = CreateFrame("Frame",nil,UIParent) +pfUI:RegisterModule("gui", function () + pfUI.gui = CreateFrame("Frame",nil,UIParent) -pfUI.gui:RegisterEvent("PLAYER_ENTERING_WORLD"); + pfUI.gui:RegisterEvent("PLAYER_ENTERING_WORLD"); -pfUI.gui:SetFrameStrata("DIALOG") -pfUI.gui:SetWidth(480) -pfUI.gui:SetHeight(320) -pfUI.gui:Hide() + pfUI.gui:SetFrameStrata("DIALOG") + pfUI.gui:SetWidth(480) + pfUI.gui:SetHeight(320) + pfUI.gui:Hide() -pfUI.gui:SetBackdrop(pfUI.backdrop) -pfUI.gui:SetBackdropColor(0,0,0,.75); -pfUI.gui:SetPoint("CENTER",0,0) -pfUI.gui:SetMovable(true) -pfUI.gui:EnableMouse(true) -pfUI.gui:SetScript("OnMouseDown",function() - pfUI.gui:StartMoving() - end) -pfUI.gui:SetScript("OnMouseUp",function() - pfUI.gui:StopMovingOrSizing() - end) + pfUI.gui:SetBackdrop(pfUI.backdrop) + pfUI.gui:SetBackdropColor(0,0,0,.75); + pfUI.gui:SetPoint("CENTER",0,0) + pfUI.gui:SetMovable(true) + pfUI.gui:EnableMouse(true) + pfUI.gui:SetScript("OnMouseDown",function() + pfUI.gui:StartMoving() + end) + pfUI.gui:SetScript("OnMouseUp",function() + pfUI.gui:StopMovingOrSizing() + end) -function pfUI.gui.SwitchTab(frame) - local elements = { pfUI.gui.global, pfUI.gui.uf } - for _, hide in pairs(elements) do - hide:Hide() - end - frame:Show() -end - -function pfUI.gui.CreateConfig(parent, caption, category, config) - -- parent object placement - if parent.objectCount == nil then - parent.objectCount = 1 - else - parent.objectCount = parent.objectCount + 1 - end - - -- basic frame - local frame = CreateFrame("Frame", nil, parent) - frame:SetWidth(350) - frame:SetHeight(25) - frame:SetBackdrop(pfUI.backdrop_underline) - frame:SetBackdropBorderColor(1,1,1,.25) - frame:SetPoint("TOPLEFT", 25, parent.objectCount * -25) - - -- caption - frame.caption = frame:CreateFontString("Status", "LOW", "GameFontNormal") - frame.caption:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 12, "OUTLINE") - frame.caption:SetAllPoints(frame) - frame.caption:SetFontObject(GameFontWhite) - frame.caption:SetJustifyH("LEFT") - frame.caption:SetText(caption) - frame.configCategory = category - frame.configEntry = config - - -- input field - frame.input = CreateFrame("EditBox", nil, frame) - frame.input:SetTextColor(.2,1.1,1) - frame.input:SetJustifyH("RIGHT") - - frame.input:SetWidth(100) - frame.input:SetHeight(20) - frame.input:SetPoint("TOPRIGHT" , 0, 0) - frame.input:SetFontObject(GameFontNormal) - frame.input:SetAutoFocus(false) - frame.input:SetText(category[config]) - frame.category = category - frame.config = config - frame.input:SetScript("OnEscapePressed", function(self) - this:GetParent().category[this:GetParent().config] = this:GetText() - this:ClearFocus() - end) - - return frame -end - -function pfUI.gui.UnlockFrames() - -- don't call it "grid" to avoid confusion with grid (addon) module - pfUI.gitter = CreateFrame("Frame", nil, UIParent) - pfUI.gitter:SetFrameStrata("BACKGROUND") - pfUI.gitter:SetPoint("TOPLEFT", 0, 0, "TOPLEFT") - pfUI.gitter:SetPoint("BOTTOMRIGHT", 0, 0, "BOTTOMRIGHT") - pfUI.gitter:SetBackdrop(pfUI.backdrop_gitter) - pfUI.gitter:SetBackdropColor(0,0,0,1) - - local movable = { pfUI.minimap, pfUI.chat.left, pfUI.chat.right, - pfUI.uf.player, pfUI.uf.target, pfUI.uf.targettarget, pfUI.uf.pet, - pfUI.bars.shapeshift, pfUI.bars.bottomleft, pfUI.bars.bottomright, - pfUI.bars.vertical, pfUI.bars.pet, pfUI.bars.bottom } - - for _,frame in pairs(movable) do - local frame = frame + function pfUI.gui.SwitchTab(frame) + local elements = { pfUI.gui.global, pfUI.gui.uf } + for _, hide in pairs(elements) do + hide:Hide() + end frame:Show() - frame:SetMovable(true) - - frame.drag = CreateFrame("Frame", nil, frame) - frame.drag:SetAllPoints(frame) - frame.drag:SetFrameStrata("DIALOG") - frame.drag.bg = frame.drag:CreateTexture() - frame.drag.bg:SetAllPoints(frame.drag) - frame.drag.bg:SetTexture(.2,1,.8,1) - frame.drag:SetAlpha(.25) - frame.drag:EnableMouse(true) - - frame.drag:SetScript("OnMouseDown",function() - frame:StartMoving() - end) - - frame.drag:SetScript("OnMouseUp",function() - frame:StopMovingOrSizing() - end) end -end --- Global Settings -pfUI.gui.global = CreateFrame("Frame", nil, pfUI.gui) -pfUI.gui.global:SetWidth(400) -pfUI.gui.global:SetHeight(320) + function pfUI.gui.CreateConfig(parent, caption, category, config) + -- parent object placement + if parent.objectCount == nil then + parent.objectCount = 1 + else + parent.objectCount = parent.objectCount + 1 + end -pfUI.gui.global:SetBackdrop(pfUI.backdrop) -pfUI.gui.global:SetBackdropColor(0,0,0,.50); -pfUI.gui.global:SetPoint("RIGHT",0,0) + -- basic frame + local frame = CreateFrame("Frame", nil, parent) + frame:SetWidth(350) + frame:SetHeight(25) + frame:SetBackdrop(pfUI.backdrop_underline) + frame:SetBackdropBorderColor(1,1,1,.25) + frame:SetPoint("TOPLEFT", 25, parent.objectCount * -25) -pfUI.gui.global.switch = CreateFrame("Button", nil, pfUI.gui) -pfUI.gui.global.switch:ClearAllPoints() -pfUI.gui.global.switch:SetWidth(80) -pfUI.gui.global.switch:SetHeight(20) -pfUI.gui.global.switch:SetPoint("TOPLEFT", 0, 0) -pfUI.gui.global.switch:SetBackdrop(pfUI.backdrop) -pfUI.gui.global.switch.text = pfUI.gui.global.switch:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.gui.global.switch.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.gui.global.switch.text:ClearAllPoints() -pfUI.gui.global.switch.text:SetAllPoints(pfUI.gui.global.switch) -pfUI.gui.global.switch.text:SetPoint("CENTER", 0, 0) -pfUI.gui.global.switch.text:SetFontObject(GameFontWhite) -pfUI.gui.global.switch.text:SetText("Global") -pfUI.gui.global.switch:SetScript("OnClick", function() - pfUI.gui.SwitchTab(pfUI.gui.global) - end) + -- caption + frame.caption = frame:CreateFontString("Status", "LOW", "GameFontNormal") + frame.caption:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 12, "OUTLINE") + frame.caption:SetAllPoints(frame) + frame.caption:SetFontObject(GameFontWhite) + frame.caption:SetJustifyH("LEFT") + frame.caption:SetText(caption) + frame.configCategory = category + frame.configEntry = config -pfUI.gui.global.title = pfUI.gui.global:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.gui.global.title:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 12, "OUTLINE") -pfUI.gui.global.title:SetPoint("TOP", 0, -10) -pfUI.gui.global.title:SetFontObject(GameFontWhite) -pfUI.gui.global.title:SetText("Global Settings") + -- input field + frame.input = CreateFrame("EditBox", nil, frame) + frame.input:SetTextColor(.2,1.1,1) + frame.input:SetJustifyH("RIGHT") --- UnitFrame settings -pfUI.gui.uf = CreateFrame("Frame", nil, pfUI.gui) -pfUI.gui.uf:SetWidth(400) -pfUI.gui.uf:SetHeight(320) + frame.input:SetWidth(100) + frame.input:SetHeight(20) + frame.input:SetPoint("TOPRIGHT" , 0, 0) + frame.input:SetFontObject(GameFontNormal) + frame.input:SetAutoFocus(false) + frame.input:SetText(category[config]) + frame.category = category + frame.config = config + frame.input:SetScript("OnEscapePressed", function(self) + this:GetParent().category[this:GetParent().config] = this:GetText() + this:ClearFocus() + end) -pfUI.gui.uf:SetBackdrop(pfUI.backdrop) -pfUI.gui.uf:SetBackdropColor(0,0,0,.50); -pfUI.gui.uf:SetPoint("RIGHT",0,0) + return frame + end -pfUI.gui.uf.switch = CreateFrame("Button", nil, pfUI.gui) -pfUI.gui.uf.switch:ClearAllPoints() -pfUI.gui.uf.switch:SetWidth(80) -pfUI.gui.uf.switch:SetHeight(20) -pfUI.gui.uf.switch:SetPoint("TOPLEFT", 0, -20) -pfUI.gui.uf.switch:SetBackdrop(pfUI.backdrop) -pfUI.gui.uf.switch.text = pfUI.gui.uf.switch:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.gui.uf.switch.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.gui.uf.switch.text:ClearAllPoints() -pfUI.gui.uf.switch.text:SetAllPoints(pfUI.gui.uf.switch) -pfUI.gui.uf.switch.text:SetPoint("CENTER", 0, 0) -pfUI.gui.uf.switch.text:SetFontObject(GameFontWhite) -pfUI.gui.uf.switch.text:SetText("UnitFrames") -pfUI.gui.uf.switch:SetScript("OnClick", function() - pfUI.gui.SwitchTab(pfUI.gui.uf) - end) + function pfUI.gui.UnlockFrames() + -- don't call it "grid" to avoid confusion with grid (addon) module + pfUI.gitter = CreateFrame("Frame", nil, UIParent) + pfUI.gitter:SetFrameStrata("BACKGROUND") + pfUI.gitter:SetPoint("TOPLEFT", 0, 0, "TOPLEFT") + pfUI.gitter:SetPoint("BOTTOMRIGHT", 0, 0, "BOTTOMRIGHT") + pfUI.gitter:SetBackdrop(pfUI.backdrop_gitter) + pfUI.gitter:SetBackdropColor(0,0,0,1) -pfUI.gui.uf.title = pfUI.gui.uf:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.gui.uf.title:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 12, "OUTLINE") -pfUI.gui.uf.title:SetPoint("TOP", 0, -10) -pfUI.gui.uf.title:SetFontObject(GameFontWhite) -pfUI.gui.uf.title:SetText("UnitFrame Settings") + local movable = { pfUI.minimap, pfUI.chat.left, pfUI.chat.right, + pfUI.uf.player, pfUI.uf.target, pfUI.uf.targettarget, pfUI.uf.pet, + pfUI.bars.shapeshift, pfUI.bars.bottomleft, pfUI.bars.bottomright, + pfUI.bars.vertical, pfUI.bars.pet, pfUI.bars.bottom } -pfUI.gui.CreateConfig(pfUI.gui.uf, "Animation speed", pfUI_config.unitframes, "animation_speed") -pfUI.gui.CreateConfig(pfUI.gui.uf, "Buff size", pfUI_config.unitframes, "buff_size") -pfUI.gui.CreateConfig(pfUI.gui.uf, "Debuff size", pfUI_config.unitframes, "debuff_size") -pfUI.gui.CreateConfig(pfUI.gui.uf, "Layout", pfUI_config.unitframes, "layout") + for _,frame in pairs(movable) do + local frame = frame + frame:Show() + frame:SetMovable(true) -pfUI.gui.CreateConfig(pfUI.gui.uf, "Player width", pfUI_config.unitframes.player, "width") -pfUI.gui.CreateConfig(pfUI.gui.uf, "Player height", pfUI_config.unitframes.player, "height") -pfUI.gui.CreateConfig(pfUI.gui.uf, "Player powerbar height", pfUI_config.unitframes.player, "pheight") + frame.drag = CreateFrame("Frame", nil, frame) + frame.drag:SetAllPoints(frame) + frame.drag:SetFrameStrata("DIALOG") + frame.drag.bg = frame.drag:CreateTexture() + frame.drag.bg:SetAllPoints(frame.drag) + frame.drag.bg:SetTexture(.2,1,.8,1) + frame.drag:SetAlpha(.25) + frame.drag:EnableMouse(true) -pfUI.gui.CreateConfig(pfUI.gui.uf, "Target width", pfUI_config.unitframes.target, "width") -pfUI.gui.CreateConfig(pfUI.gui.uf, "Target height", pfUI_config.unitframes.target, "height") -pfUI.gui.CreateConfig(pfUI.gui.uf, "Target powerbar height", pfUI_config.unitframes.target, "pheight") + frame.drag:SetScript("OnMouseDown",function() + frame:StartMoving() + end) + + frame.drag:SetScript("OnMouseUp",function() + frame:StopMovingOrSizing() + end) + end + end + + -- Global Settings + pfUI.gui.global = CreateFrame("Frame", nil, pfUI.gui) + pfUI.gui.global:SetWidth(400) + pfUI.gui.global:SetHeight(320) + + pfUI.gui.global:SetBackdrop(pfUI.backdrop) + pfUI.gui.global:SetBackdropColor(0,0,0,.50); + pfUI.gui.global:SetPoint("RIGHT",0,0) + + pfUI.gui.global.switch = CreateFrame("Button", nil, pfUI.gui) + pfUI.gui.global.switch:ClearAllPoints() + pfUI.gui.global.switch:SetWidth(80) + pfUI.gui.global.switch:SetHeight(20) + pfUI.gui.global.switch:SetPoint("TOPLEFT", 0, 0) + pfUI.gui.global.switch:SetBackdrop(pfUI.backdrop) + pfUI.gui.global.switch.text = pfUI.gui.global.switch:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.gui.global.switch.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.gui.global.switch.text:ClearAllPoints() + pfUI.gui.global.switch.text:SetAllPoints(pfUI.gui.global.switch) + pfUI.gui.global.switch.text:SetPoint("CENTER", 0, 0) + pfUI.gui.global.switch.text:SetFontObject(GameFontWhite) + pfUI.gui.global.switch.text:SetText("Global") + pfUI.gui.global.switch:SetScript("OnClick", function() + pfUI.gui.SwitchTab(pfUI.gui.global) + end) + + pfUI.gui.global.title = pfUI.gui.global:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.gui.global.title:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 12, "OUTLINE") + pfUI.gui.global.title:SetPoint("TOP", 0, -10) + pfUI.gui.global.title:SetFontObject(GameFontWhite) + pfUI.gui.global.title:SetText("Global Settings") + + -- UnitFrame settings + pfUI.gui.uf = CreateFrame("Frame", nil, pfUI.gui) + pfUI.gui.uf:SetWidth(400) + pfUI.gui.uf:SetHeight(320) + + pfUI.gui.uf:SetBackdrop(pfUI.backdrop) + pfUI.gui.uf:SetBackdropColor(0,0,0,.50); + pfUI.gui.uf:SetPoint("RIGHT",0,0) + + pfUI.gui.uf.switch = CreateFrame("Button", nil, pfUI.gui) + pfUI.gui.uf.switch:ClearAllPoints() + pfUI.gui.uf.switch:SetWidth(80) + pfUI.gui.uf.switch:SetHeight(20) + pfUI.gui.uf.switch:SetPoint("TOPLEFT", 0, -20) + pfUI.gui.uf.switch:SetBackdrop(pfUI.backdrop) + pfUI.gui.uf.switch.text = pfUI.gui.uf.switch:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.gui.uf.switch.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.gui.uf.switch.text:ClearAllPoints() + pfUI.gui.uf.switch.text:SetAllPoints(pfUI.gui.uf.switch) + pfUI.gui.uf.switch.text:SetPoint("CENTER", 0, 0) + pfUI.gui.uf.switch.text:SetFontObject(GameFontWhite) + pfUI.gui.uf.switch.text:SetText("UnitFrames") + pfUI.gui.uf.switch:SetScript("OnClick", function() + pfUI.gui.SwitchTab(pfUI.gui.uf) + end) + + pfUI.gui.uf.title = pfUI.gui.uf:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.gui.uf.title:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 12, "OUTLINE") + pfUI.gui.uf.title:SetPoint("TOP", 0, -10) + pfUI.gui.uf.title:SetFontObject(GameFontWhite) + pfUI.gui.uf.title:SetText("UnitFrame Settings") + + pfUI.gui.CreateConfig(pfUI.gui.uf, "Animation speed", pfUI_config.unitframes, "animation_speed") + pfUI.gui.CreateConfig(pfUI.gui.uf, "Buff size", pfUI_config.unitframes, "buff_size") + pfUI.gui.CreateConfig(pfUI.gui.uf, "Debuff size", pfUI_config.unitframes, "debuff_size") + pfUI.gui.CreateConfig(pfUI.gui.uf, "Layout", pfUI_config.unitframes, "layout") + + pfUI.gui.CreateConfig(pfUI.gui.uf, "Player width", pfUI_config.unitframes.player, "width") + pfUI.gui.CreateConfig(pfUI.gui.uf, "Player height", pfUI_config.unitframes.player, "height") + pfUI.gui.CreateConfig(pfUI.gui.uf, "Player powerbar height", pfUI_config.unitframes.player, "pheight") + + pfUI.gui.CreateConfig(pfUI.gui.uf, "Target width", pfUI_config.unitframes.target, "width") + pfUI.gui.CreateConfig(pfUI.gui.uf, "Target height", pfUI_config.unitframes.target, "height") + pfUI.gui.CreateConfig(pfUI.gui.uf, "Target powerbar height", pfUI_config.unitframes.target, "pheight") --- Unlock Frames -pfUI.gui.unlockFrames = CreateFrame("Button", nil, pfUI.gui) -pfUI.gui.unlockFrames:ClearAllPoints() -pfUI.gui.unlockFrames:SetWidth(80) -pfUI.gui.unlockFrames:SetHeight(20) -pfUI.gui.unlockFrames:SetPoint("BOTTOMLEFT", 0, 0) -pfUI.gui.unlockFrames:SetBackdrop(pfUI.backdrop) -pfUI.gui.unlockFrames.text = pfUI.gui.unlockFrames:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.gui.unlockFrames.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.gui.unlockFrames.text:ClearAllPoints() -pfUI.gui.unlockFrames.text:SetAllPoints(pfUI.gui.unlockFrames) -pfUI.gui.unlockFrames.text:SetPoint("CENTER", 0, 0) -pfUI.gui.unlockFrames.text:SetFontObject(GameFontWhite) -pfUI.gui.unlockFrames.text:SetText("Unlock Frames") -pfUI.gui.unlockFrames:SetScript("OnClick", function() - pfUI.gui.UnlockFrames() - end) + -- Unlock Frames + pfUI.gui.unlockFrames = CreateFrame("Button", nil, pfUI.gui) + pfUI.gui.unlockFrames:ClearAllPoints() + pfUI.gui.unlockFrames:SetWidth(80) + pfUI.gui.unlockFrames:SetHeight(20) + pfUI.gui.unlockFrames:SetPoint("BOTTOMLEFT", 0, 0) + pfUI.gui.unlockFrames:SetBackdrop(pfUI.backdrop) + pfUI.gui.unlockFrames.text = pfUI.gui.unlockFrames:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.gui.unlockFrames.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.gui.unlockFrames.text:ClearAllPoints() + pfUI.gui.unlockFrames.text:SetAllPoints(pfUI.gui.unlockFrames) + pfUI.gui.unlockFrames.text:SetPoint("CENTER", 0, 0) + pfUI.gui.unlockFrames.text:SetFontObject(GameFontWhite) + pfUI.gui.unlockFrames.text:SetText("Unlock Frames") + pfUI.gui.unlockFrames:SetScript("OnClick", function() + pfUI.gui.UnlockFrames() + end) --- Switch to default View: global -pfUI.gui.SwitchTab(pfUI.gui.global) + -- Switch to default View: global + pfUI.gui.SwitchTab(pfUI.gui.global) +end) diff --git a/modules/minimap.lua b/modules/minimap.lua index c96e4f90..49905ad9 100644 --- a/modules/minimap.lua +++ b/modules/minimap.lua @@ -1,32 +1,34 @@ -MinimapToggleButton:Hide() -MinimapBorderTop:Hide() -MinimapZoneTextButton:Hide() -MinimapZoomIn:Hide() -MinimapZoomOut:Hide() -GameTimeFrame:Hide() +pfUI:RegisterModule("minimap", function () + MinimapToggleButton:Hide() + MinimapBorderTop:Hide() + MinimapZoneTextButton:Hide() + MinimapZoomIn:Hide() + MinimapZoomOut:Hide() + GameTimeFrame:Hide() -MinimapBorder:SetTexture(nil) -Minimap:SetMaskTexture("Interface\\AddOns\\pfUI\\img\\minimap") + MinimapBorder:SetTexture(nil) + Minimap:SetMaskTexture("Interface\\AddOns\\pfUI\\img\\minimap") -Minimap:EnableMouseWheel(true) -Minimap:SetScript("OnMouseWheel", function() - if(arg1 > 0) then Minimap_ZoomIn() else Minimap_ZoomOut() end - end) + Minimap:EnableMouseWheel(true) + Minimap:SetScript("OnMouseWheel", function() + if(arg1 > 0) then Minimap_ZoomIn() else Minimap_ZoomOut() end + end) -pfUI.minimap = CreateFrame("Frame",nil,UIParent) -pfUI.minimap:SetBackdrop(pfUI.backdrop) -pfUI.minimap:SetBackdropColor(0,0,0,0) -pfUI.minimap:SetPoint("TOPRIGHT", UIParent, -5, -5) -pfUI.minimap:SetWidth(Minimap:GetWidth()) -pfUI.minimap:SetHeight(Minimap:GetHeight()) -pfUI.minimap:SetFrameStrata("BACKGROUND") -pfUI.minimap.background = pfUI.minimap:CreateTexture(nil,"BACKGROUND") -pfUI.minimap.background:SetTexture(0,0,0,1) -pfUI.minimap.background:SetAllPoints(pfUI.minimap) + pfUI.minimap = CreateFrame("Frame",nil,UIParent) + pfUI.minimap:SetBackdrop(pfUI.backdrop) + pfUI.minimap:SetBackdropColor(0,0,0,0) + pfUI.minimap:SetPoint("TOPRIGHT", UIParent, -5, -5) + pfUI.minimap:SetWidth(Minimap:GetWidth()) + pfUI.minimap:SetHeight(Minimap:GetHeight()) + pfUI.minimap:SetFrameStrata("BACKGROUND") + pfUI.minimap.background = pfUI.minimap:CreateTexture(nil,"BACKGROUND") + pfUI.minimap.background:SetTexture(0,0,0,1) + pfUI.minimap.background:SetAllPoints(pfUI.minimap) -Minimap:SetParent(pfUI.minimap) -Minimap:ClearAllPoints() -Minimap:SetPoint("TOPLEFT", pfUI.minimap, "TOPLEFT", 3, -3) -Minimap:SetPoint("BOTTOMRIGHT", pfUI.minimap, "BOTTOMRIGHT", -3, 3) + Minimap:SetParent(pfUI.minimap) + Minimap:ClearAllPoints() + Minimap:SetPoint("TOPLEFT", pfUI.minimap, "TOPLEFT", 3, -3) + Minimap:SetPoint("BOTTOMRIGHT", pfUI.minimap, "BOTTOMRIGHT", -3, 3) -MiniMapTrackingFrame:SetFrameStrata("LOW") + MiniMapTrackingFrame:SetFrameStrata("LOW") +end) diff --git a/modules/panel.lua b/modules/panel.lua index 9ccbd49d..5666fbad 100644 --- a/modules/panel.lua +++ b/modules/panel.lua @@ -1,129 +1,131 @@ -pfUI.panel = CreateFrame("Frame",nil,UIParent) +pfUI:RegisterModule("panel", function () + pfUI.panel = CreateFrame("Frame",nil,UIParent) -pfUI.panel.left = CreateFrame("Frame", "leftChatPanelBottom", pfUI.panel) -pfUI.panel.left:ClearAllPoints() -pfUI.panel.left:SetHeight(19) -pfUI.panel.left:SetPoint("BOTTOMLEFT", pfUI.chat.left, "BOTTOMLEFT", 2, 2) -pfUI.panel.left:SetPoint("BOTTOMRIGHT", pfUI.chat.left, "BOTTOMRIGHT", -2, 2) -pfUI.panel.left:SetBackdrop(pfUI.backdrop) -pfUI.panel.left:SetBackdropColor(0,0,0,.75) + pfUI.panel.left = CreateFrame("Frame", "leftChatPanelBottom", pfUI.panel) + pfUI.panel.left:ClearAllPoints() + pfUI.panel.left:SetHeight(19) + pfUI.panel.left:SetPoint("BOTTOMLEFT", pfUI.chat.left, "BOTTOMLEFT", 2, 2) + pfUI.panel.left:SetPoint("BOTTOMRIGHT", pfUI.chat.left, "BOTTOMRIGHT", -2, 2) + pfUI.panel.left:SetBackdrop(pfUI.backdrop) + pfUI.panel.left:SetBackdropColor(0,0,0,.75) -pfUI.panel.left.hide = CreateFrame("Button", nil, pfUI.panel.left) -pfUI.panel.left.hide:ClearAllPoints() -pfUI.panel.left.hide:SetWidth(15) -pfUI.panel.left.hide:SetHeight(pfUI.panel.left:GetHeight()) -pfUI.panel.left.hide:SetPoint("LEFT", 0, 0) -pfUI.panel.left.hide:SetBackdrop(pfUI.backdrop) -pfUI.panel.left.hide.text = pfUI.panel.left.hide:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.panel.left.hide.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.panel.left.hide.text:ClearAllPoints() -pfUI.panel.left.hide.text:SetAllPoints(pfUI.panel.left.hide) -pfUI.panel.left.hide.text:SetPoint("LEFT", 0, 0) -pfUI.panel.left.hide.text:SetFontObject(GameFontWhite) -pfUI.panel.left.hide.text:SetText("< ") -pfUI.panel.left.hide:SetScript("OnClick", function() - if pfUI.chat.left:IsShown() then pfUI.chat.left:Hide() else pfUI.chat.left:Show() end - end) + pfUI.panel.left.hide = CreateFrame("Button", nil, pfUI.panel.left) + pfUI.panel.left.hide:ClearAllPoints() + pfUI.panel.left.hide:SetWidth(15) + pfUI.panel.left.hide:SetHeight(pfUI.panel.left:GetHeight()) + pfUI.panel.left.hide:SetPoint("LEFT", 0, 0) + pfUI.panel.left.hide:SetBackdrop(pfUI.backdrop) + pfUI.panel.left.hide.text = pfUI.panel.left.hide:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.panel.left.hide.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.panel.left.hide.text:ClearAllPoints() + pfUI.panel.left.hide.text:SetAllPoints(pfUI.panel.left.hide) + pfUI.panel.left.hide.text:SetPoint("LEFT", 0, 0) + pfUI.panel.left.hide.text:SetFontObject(GameFontWhite) + pfUI.panel.left.hide.text:SetText("< ") + pfUI.panel.left.hide:SetScript("OnClick", function() + if pfUI.chat.left:IsShown() then pfUI.chat.left:Hide() else pfUI.chat.left:Show() end + end) -pfUI.panel.left.left = CreateFrame("Frame", nil, pfUI.panel.left) -pfUI.panel.left.left:ClearAllPoints() -pfUI.panel.left.left:SetWidth(115) -pfUI.panel.left.left:SetHeight(pfUI.panel.left:GetHeight()) -pfUI.panel.left.left:SetPoint("LEFT", 0, 0) -pfUI.panel.left.left.text = pfUI.panel.left.left:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.panel.left.left.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.panel.left.left.text:ClearAllPoints() -pfUI.panel.left.left.text:SetAllPoints(pfUI.panel.left.left) -pfUI.panel.left.left.text:SetPoint("CENTER", 0, 0) -pfUI.panel.left.left.text:SetFontObject(GameFontWhite) -pfUI.panel.left.left.text:SetText("[DUMMY]") + pfUI.panel.left.left = CreateFrame("Frame", nil, pfUI.panel.left) + pfUI.panel.left.left:ClearAllPoints() + pfUI.panel.left.left:SetWidth(115) + pfUI.panel.left.left:SetHeight(pfUI.panel.left:GetHeight()) + pfUI.panel.left.left:SetPoint("LEFT", 0, 0) + pfUI.panel.left.left.text = pfUI.panel.left.left:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.panel.left.left.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.panel.left.left.text:ClearAllPoints() + pfUI.panel.left.left.text:SetAllPoints(pfUI.panel.left.left) + pfUI.panel.left.left.text:SetPoint("CENTER", 0, 0) + pfUI.panel.left.left.text:SetFontObject(GameFontWhite) + pfUI.panel.left.left.text:SetText("[DUMMY]") -pfUI.panel.left.center = CreateFrame("Frame", nil, pfUI.panel.left) -pfUI.panel.left.center:ClearAllPoints() -pfUI.panel.left.center:SetWidth(115) -pfUI.panel.left.center:SetHeight(pfUI.panel.left:GetHeight()) -pfUI.panel.left.center:SetPoint("CENTER", 0, 0) -pfUI.panel.left.center.text = pfUI.panel.left.center:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.panel.left.center.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.panel.left.center.text:ClearAllPoints() -pfUI.panel.left.center.text:SetAllPoints(pfUI.panel.left.center) -pfUI.panel.left.center.text:SetPoint("CENTER", 0, 0) -pfUI.panel.left.center.text:SetFontObject(GameFontWhite) -pfUI.panel.left.center.text:SetText("[DUMMY]") + pfUI.panel.left.center = CreateFrame("Frame", nil, pfUI.panel.left) + pfUI.panel.left.center:ClearAllPoints() + pfUI.panel.left.center:SetWidth(115) + pfUI.panel.left.center:SetHeight(pfUI.panel.left:GetHeight()) + pfUI.panel.left.center:SetPoint("CENTER", 0, 0) + pfUI.panel.left.center.text = pfUI.panel.left.center:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.panel.left.center.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.panel.left.center.text:ClearAllPoints() + pfUI.panel.left.center.text:SetAllPoints(pfUI.panel.left.center) + pfUI.panel.left.center.text:SetPoint("CENTER", 0, 0) + pfUI.panel.left.center.text:SetFontObject(GameFontWhite) + pfUI.panel.left.center.text:SetText("[DUMMY]") -pfUI.panel.left.right = CreateFrame("Frame", nil, pfUI.panel.left) -pfUI.panel.left.right:ClearAllPoints() -pfUI.panel.left.right:SetWidth(115) -pfUI.panel.left.right:SetHeight(pfUI.panel.left:GetHeight()) -pfUI.panel.left.right:SetPoint("RIGHT", 0, 0) -pfUI.panel.left.right.text = pfUI.panel.left.right:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.panel.left.right.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.panel.left.right.text:ClearAllPoints() -pfUI.panel.left.right.text:SetAllPoints(pfUI.panel.left.right) -pfUI.panel.left.right.text:SetPoint("CENTER", 0, 0) -pfUI.panel.left.right.text:SetFontObject(GameFontWhite) -pfUI.panel.left.right.text:SetText("[DUMMY]") + pfUI.panel.left.right = CreateFrame("Frame", nil, pfUI.panel.left) + pfUI.panel.left.right:ClearAllPoints() + pfUI.panel.left.right:SetWidth(115) + pfUI.panel.left.right:SetHeight(pfUI.panel.left:GetHeight()) + pfUI.panel.left.right:SetPoint("RIGHT", 0, 0) + pfUI.panel.left.right.text = pfUI.panel.left.right:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.panel.left.right.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.panel.left.right.text:ClearAllPoints() + pfUI.panel.left.right.text:SetAllPoints(pfUI.panel.left.right) + pfUI.panel.left.right.text:SetPoint("CENTER", 0, 0) + pfUI.panel.left.right.text:SetFontObject(GameFontWhite) + pfUI.panel.left.right.text:SetText("[DUMMY]") -pfUI.panel.right = CreateFrame("Frame", "rightChatPanelBottom", pfUI.panel) -pfUI.panel.right:ClearAllPoints() -pfUI.panel.right:SetHeight(19) -pfUI.panel.right:SetPoint("BOTTOMLEFT", pfUI.chat.right, "BOTTOMLEFT", 2, 2) -pfUI.panel.right:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", -2, 2) -pfUI.panel.right:SetBackdrop(pfUI.backdrop) -pfUI.panel.right:SetBackdropColor(0,0,0,.75) + pfUI.panel.right = CreateFrame("Frame", "rightChatPanelBottom", pfUI.panel) + pfUI.panel.right:ClearAllPoints() + pfUI.panel.right:SetHeight(19) + pfUI.panel.right:SetPoint("BOTTOMLEFT", pfUI.chat.right, "BOTTOMLEFT", 2, 2) + pfUI.panel.right:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", -2, 2) + pfUI.panel.right:SetBackdrop(pfUI.backdrop) + pfUI.panel.right:SetBackdropColor(0,0,0,.75) -pfUI.panel.right.hide = CreateFrame("Button", nil, pfUI.panel.right) -pfUI.panel.right.hide:ClearAllPoints() -pfUI.panel.right.hide:SetWidth(15) -pfUI.panel.right.hide:SetHeight(pfUI.panel.right:GetHeight()) -pfUI.panel.right.hide:SetPoint("RIGHT", 0, 0) -pfUI.panel.right.hide:SetBackdrop(pfUI.backdrop) -pfUI.panel.right.hide.text = pfUI.panel.right.hide:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.panel.right.hide.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.panel.right.hide.text:ClearAllPoints() -pfUI.panel.right.hide.text:SetAllPoints(pfUI.panel.right.hide) -pfUI.panel.right.hide.text:SetPoint("LEFT", 0, 0) -pfUI.panel.right.hide.text:SetFontObject(GameFontWhite) -pfUI.panel.right.hide.text:SetText(" >") -pfUI.panel.right.hide:SetScript("OnClick", function() - if pfUI.chat.right:IsShown() then pfUI.chat.right:Hide() else pfUI.chat.right:Show() end - end) + pfUI.panel.right.hide = CreateFrame("Button", nil, pfUI.panel.right) + pfUI.panel.right.hide:ClearAllPoints() + pfUI.panel.right.hide:SetWidth(15) + pfUI.panel.right.hide:SetHeight(pfUI.panel.right:GetHeight()) + pfUI.panel.right.hide:SetPoint("RIGHT", 0, 0) + pfUI.panel.right.hide:SetBackdrop(pfUI.backdrop) + pfUI.panel.right.hide.text = pfUI.panel.right.hide:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.panel.right.hide.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.panel.right.hide.text:ClearAllPoints() + pfUI.panel.right.hide.text:SetAllPoints(pfUI.panel.right.hide) + pfUI.panel.right.hide.text:SetPoint("LEFT", 0, 0) + pfUI.panel.right.hide.text:SetFontObject(GameFontWhite) + pfUI.panel.right.hide.text:SetText(" >") + pfUI.panel.right.hide:SetScript("OnClick", function() + if pfUI.chat.right:IsShown() then pfUI.chat.right:Hide() else pfUI.chat.right:Show() end + end) -pfUI.panel.right.left = CreateFrame("Frame", nil, pfUI.panel.right) -pfUI.panel.right.left:ClearAllPoints() -pfUI.panel.right.left:SetWidth(115) -pfUI.panel.right.left:SetHeight(pfUI.panel.right:GetHeight()) -pfUI.panel.right.left:SetPoint("LEFT", 0, 0) -pfUI.panel.right.left.text = pfUI.panel.right.left:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.panel.right.left.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.panel.right.left.text:ClearAllPoints() -pfUI.panel.right.left.text:SetAllPoints(pfUI.panel.right.left) -pfUI.panel.right.left.text:SetPoint("CENTER", 0, 0) -pfUI.panel.right.left.text:SetFontObject(GameFontWhite) -pfUI.panel.right.left.text:SetText("[DUMMY]") + pfUI.panel.right.left = CreateFrame("Frame", nil, pfUI.panel.right) + pfUI.panel.right.left:ClearAllPoints() + pfUI.panel.right.left:SetWidth(115) + pfUI.panel.right.left:SetHeight(pfUI.panel.right:GetHeight()) + pfUI.panel.right.left:SetPoint("LEFT", 0, 0) + pfUI.panel.right.left.text = pfUI.panel.right.left:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.panel.right.left.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.panel.right.left.text:ClearAllPoints() + pfUI.panel.right.left.text:SetAllPoints(pfUI.panel.right.left) + pfUI.panel.right.left.text:SetPoint("CENTER", 0, 0) + pfUI.panel.right.left.text:SetFontObject(GameFontWhite) + pfUI.panel.right.left.text:SetText("[DUMMY]") -pfUI.panel.right.center = CreateFrame("Frame", nil, pfUI.panel.right) -pfUI.panel.right.center:ClearAllPoints() -pfUI.panel.right.center:SetWidth(115) -pfUI.panel.right.center:SetHeight(pfUI.panel.right:GetHeight()) -pfUI.panel.right.center:SetPoint("CENTER", 0, 0) -pfUI.panel.right.center.text = pfUI.panel.right.center:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.panel.right.center.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.panel.right.center.text:ClearAllPoints() -pfUI.panel.right.center.text:SetAllPoints(pfUI.panel.right.center) -pfUI.panel.right.center.text:SetPoint("CENTER", 0, 0) -pfUI.panel.right.center.text:SetFontObject(GameFontWhite) -pfUI.panel.right.center.text:SetText("[DUMMY]") + pfUI.panel.right.center = CreateFrame("Frame", nil, pfUI.panel.right) + pfUI.panel.right.center:ClearAllPoints() + pfUI.panel.right.center:SetWidth(115) + pfUI.panel.right.center:SetHeight(pfUI.panel.right:GetHeight()) + pfUI.panel.right.center:SetPoint("CENTER", 0, 0) + pfUI.panel.right.center.text = pfUI.panel.right.center:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.panel.right.center.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.panel.right.center.text:ClearAllPoints() + pfUI.panel.right.center.text:SetAllPoints(pfUI.panel.right.center) + pfUI.panel.right.center.text:SetPoint("CENTER", 0, 0) + pfUI.panel.right.center.text:SetFontObject(GameFontWhite) + pfUI.panel.right.center.text:SetText("[DUMMY]") -pfUI.panel.right.right = CreateFrame("Frame", nil, pfUI.panel.right) -pfUI.panel.right.right:ClearAllPoints() -pfUI.panel.right.right:SetWidth(115) -pfUI.panel.right.right:SetHeight(pfUI.panel.right:GetHeight()) -pfUI.panel.right.right:SetPoint("RIGHT", 0, 0) -pfUI.panel.right.right.text = pfUI.panel.right.right:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.panel.right.right.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") -pfUI.panel.right.right.text:ClearAllPoints() -pfUI.panel.right.right.text:SetAllPoints(pfUI.panel.right.right) -pfUI.panel.right.right.text:SetPoint("CENTER", 0, 0) -pfUI.panel.right.right.text:SetFontObject(GameFontWhite) -pfUI.panel.right.right.text:SetText("[DUMMY]") + pfUI.panel.right.right = CreateFrame("Frame", nil, pfUI.panel.right) + pfUI.panel.right.right:ClearAllPoints() + pfUI.panel.right.right:SetWidth(115) + pfUI.panel.right.right:SetHeight(pfUI.panel.right:GetHeight()) + pfUI.panel.right.right:SetPoint("RIGHT", 0, 0) + pfUI.panel.right.right.text = pfUI.panel.right.right:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.panel.right.right.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE") + pfUI.panel.right.right.text:ClearAllPoints() + pfUI.panel.right.right.text:SetAllPoints(pfUI.panel.right.right) + pfUI.panel.right.right.text:SetPoint("CENTER", 0, 0) + pfUI.panel.right.right.text:SetFontObject(GameFontWhite) + pfUI.panel.right.right.text:SetText("[DUMMY]") +end) diff --git a/modules/pet.lua b/modules/pet.lua index c804094b..6013b66c 100644 --- a/modules/pet.lua +++ b/modules/pet.lua @@ -1,242 +1,214 @@ -pfUI.uf.pet = CreateFrame("Button",nil,UIParent) +pfUI:RegisterModule("pet", function () + pfUI.uf.pet = CreateFrame("Button",nil,UIParent) -pfUI.uf.pet:SetWidth(100) -pfUI.uf.pet:SetHeight(23) -pfUI.uf.pet:ClearAllPoints() -pfUI.uf.pet:SetPoint("TOPLEFT", pfUI.uf.player.hp , "TOPRIGHT", 0, 0) -pfUI.uf.pet:SetPoint("BOTTOMRIGHT", pfUI.uf.target.hp, "BOTTOMLEFT", 0, 0) + pfUI.uf.pet:SetWidth(100) + pfUI.uf.pet:SetHeight(23) + pfUI.uf.pet:ClearAllPoints() + pfUI.uf.pet:SetPoint("TOPLEFT", pfUI.uf.player.hp , "TOPRIGHT", 0, 0) + pfUI.uf.pet:SetPoint("BOTTOMRIGHT", pfUI.uf.target.hp, "BOTTOMLEFT", 0, 0) -pfUI.uf.pet:RegisterForClicks('LeftButtonUp', 'RightButtonUp') -pfUI.uf.pet:SetScript("OnClick", function () - TargetUnit("pet") - end) - -pfUI.uf.pet:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.uf.pet:RegisterEvent("UNIT_PET") -pfUI.uf.pet:RegisterEvent("UNIT_COMBAT"); -pfUI.uf.pet:RegisterEvent("UNIT_AURA"); -pfUI.uf.pet:RegisterEvent("PET_ATTACK_START"); -pfUI.uf.pet:RegisterEvent("PET_ATTACK_STOP"); -pfUI.uf.pet:RegisterEvent("UNIT_HAPPINESS"); - -pfUI.uf.pet:RegisterEvent("UNIT_HEALTH") -pfUI.uf.pet:RegisterEvent("UNIT_MAXHEALTH") -pfUI.uf.pet:RegisterEvent("UNIT_MANA") -pfUI.uf.pet:RegisterEvent("UNIT_MAXMANA") -pfUI.uf.pet:RegisterEvent("UNIT_RAGE") -pfUI.uf.pet:RegisterEvent("UNIT_MAXRAGE") -pfUI.uf.pet:RegisterEvent("UNIT_ENERGY") -pfUI.uf.pet:RegisterEvent("UNIT_MAXENERGY") -pfUI.uf.pet:RegisterEvent("UNIT_FOCUS") -pfUI.uf.pet:RegisterEvent("UNIT_MAXFOCUS") - -pfUI.uf.pet:SetScript("OnEvent", function(arg1) - if UnitExists("pet") then pfUI.uf.pet:Show() else pfUI.uf.pet:Hide() end - local hp, hpmax = UnitHealth("pet"), UnitHealthMax("pet") - local power, powermax = UnitMana("pet"), UnitManaMax("pet") - - local happiness = GetPetHappiness() - if happiness == 1 then - color = { r = 1, g = 0, b = 0 } - elseif happiness == 2 then - color = { r = 1, g = 1, b = 0 } - else - color = { r = 0, g = 1, b = 0 } - end - local r, g, b = (color.r + .5) * .5, (color.g + .5) * .5, (color.b + .5) * .5 - - pfUI.uf.pet.hp.bar:SetMinMaxValues(0, hpmax) - pfUI.uf.pet.hp.bar:SetStatusBarColor(r, g, b, hp / hpmax / 4 + .75) - pfUI.uf.pet.hp.text:SetTextColor(r+.3,g+.3,b+.3, 1) - pfUI.uf.pet.hp.text:SetText(UnitName("pet")) - - pfUI.uf.pet.hpReal = hp - pfUI.uf.pet.powerReal = power - - PowerColor = ManaBarColor[UnitPowerType("pet")]; - pfUI.uf.pet.power.bar:SetStatusBarColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5, 1) - pfUI.uf.pet.power.bar:SetMinMaxValues(0, UnitManaMax("pet")) - end) - -pfUI.uf.pet:SetScript("OnUpdate", function() - -- animation hp - local hpDisplay = pfUI.uf.pet.hp.bar:GetValue() - local hpReal = pfUI.uf.pet.hpReal - local hpDiff = abs(hpReal - hpDisplay) - - if hpDisplay < hpReal then - pfUI.uf.pet.hp.bar:SetValue(hpDisplay + ceil(hpDiff / pfUI_config.unitframes.animation_speed)) - elseif hpDisplay > hpReal then - pfUI.uf.pet.hp.bar:SetValue(hpDisplay - ceil(hpDiff / pfUI_config.unitframes.animation_speed)) - end - - -- animation power - local powerDisplay = pfUI.uf.pet.power.bar:GetValue() - local powerReal = pfUI.uf.pet.powerReal - local powerDiff = abs(powerReal - powerDisplay) - - if powerDisplay < powerReal then - pfUI.uf.pet.power.bar:SetValue(powerDisplay + ceil(powerDiff / pfUI_config.unitframes.animation_speed)) - elseif hpDisplay > hpReal then - pfUI.uf.pet.power.bar:SetValue(powerDisplay - ceil(powerDiff / pfUI_config.unitframes.animation_speed)) - end - end) - -pfUI.uf.pet.hp = CreateFrame("Frame",nil, pfUI.uf.pet) -pfUI.uf.pet.hp:SetBackdrop(pfUI.backdrop) -pfUI.uf.pet.hp:SetWidth(100) -pfUI.uf.pet.hp:SetHeight(20) -pfUI.uf.pet.hp:SetPoint("TOP",pfUI.uf.pet,"TOP") -pfUI.uf.pet.hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.pet.hp) -pfUI.uf.pet.hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") -pfUI.uf.pet.hp.bar:ClearAllPoints() -pfUI.uf.pet.hp.bar:SetPoint("TOPLEFT", pfUI.uf.pet.hp, "TOPLEFT", 3, -3) -pfUI.uf.pet.hp.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.pet.hp, "BOTTOMRIGHT", -3, 3) -pfUI.uf.pet.hp.bar:SetMinMaxValues(0, 100) -pfUI.uf.pet.hp.bar:SetValue(100) - -pfUI.uf.pet.power = CreateFrame("Frame",nil, pfUI.uf.pet) -pfUI.uf.pet.power:SetBackdrop(pfUI.backdrop) -pfUI.uf.pet.power:SetWidth(100) -pfUI.uf.pet.power:SetHeight(8) -pfUI.uf.pet.power:SetPoint("TOPLEFT",pfUI.uf.pet.hp,"BOTTOMLEFT",0,3) -pfUI.uf.pet.power.bar = CreateFrame("StatusBar", nil, pfUI.uf.pet.power) -pfUI.uf.pet.power.bar:ClearAllPoints() -pfUI.uf.pet.power.bar:SetPoint("TOPLEFT", pfUI.uf.pet.power, "TOPLEFT", 3, -3) -pfUI.uf.pet.power.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.pet.power, "BOTTOMRIGHT", -3, 3) -pfUI.uf.pet.power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") -pfUI.uf.pet.power.bar:SetBackdropColor(0,0,0,1) -pfUI.uf.pet.power.bar:SetStatusBarColor(0,0,0) -pfUI.uf.pet.power.bar:SetMinMaxValues(0, 100) -pfUI.uf.pet.power.bar:SetValue(100) - -pfUI.uf.pet.hp.text = pfUI.uf.pet.hp.bar:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.uf.pet.hp.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 8, "OUTLINE") -pfUI.uf.pet.hp.text:ClearAllPoints() -pfUI.uf.pet.hp.text:SetAllPoints(pfUI.uf.pet.hp.bar) -pfUI.uf.pet.hp.text:SetPoint("CENTER", 0, 0) -pfUI.uf.pet.hp.text:SetJustifyH("CENTER") -pfUI.uf.pet.hp.text:SetFontObject(GameFontWhite) -pfUI.uf.pet.hp.text:SetText("n/a") - -pfUI.uf.pet.buff = CreateFrame("Frame", nil) -pfUI.uf.pet.buff:RegisterEvent("PLAYER_AURAS_CHANGED") -pfUI.uf.pet.buff:RegisterEvent("PLAYER_AURAS_CHANGED") -pfUI.uf.pet.buff:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.uf.pet.buff:RegisterEvent("UNIT_AURA") -pfUI.uf.pet.buff:SetScript("OnEvent", function() - pfUI.uf.pet.buff.RefreshBuffs() - end) - -pfUI.uf.pet.buff.buffs = {} -for i=1, 16 do - local id = i - local row = 0 - if i <= 8 then row = 0 else row = 1 end - local buffsize = pfUI.uf.pet.hp:GetWidth()/8 - 1 - - pfUI.uf.pet.buff.buffs[i] = CreateFrame("Button", "pfUITargetBuff" .. i, pfUI.uf.pet) - pfUI.uf.pet.buff.buffs[i].stacks = pfUI.uf.pet.buff.buffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.pet.buff.buffs[i]) - pfUI.uf.pet.buff.buffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - pfUI.uf.pet.buff.buffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.pet.buff.buffs[i], 2, -2) - pfUI.uf.pet.buff.buffs[i].stacks:SetJustifyH("LEFT") - pfUI.uf.pet.buff.buffs[i].stacks:SetShadowColor(0, 0, 0) - pfUI.uf.pet.buff.buffs[i].stacks:SetShadowOffset(0.8, -0.8) - pfUI.uf.pet.buff.buffs[i].stacks:SetTextColor(1,1,.5) - - pfUI.uf.pet.buff.buffs[i]:RegisterForClicks("RightButtonUp") - pfUI.uf.pet.buff.buffs[i]:ClearAllPoints() - pfUI.uf.pet.buff.buffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.pet.hp, "TOPLEFT", (i-8*row)*1 + (i-8*row)*buffsize - buffsize -1 , 1*row + buffsize*row +1) - pfUI.uf.pet.buff.buffs[i]:SetWidth(buffsize) - pfUI.uf.pet.buff.buffs[i]:SetHeight(buffsize) - pfUI.uf.pet.buff.buffs[i]:SetNormalTexture(nil) - pfUI.uf.pet.buff.buffs[i]:SetScript("OnEnter", function() - GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") - GameTooltip:SetUnitBuff("pet", id) + pfUI.uf.pet:RegisterForClicks('LeftButtonUp', 'RightButtonUp') + pfUI.uf.pet:SetScript("OnClick", function () + TargetUnit("pet") end) - pfUI.uf.pet.buff.buffs[i]:SetScript("OnLeave", function() - GameTooltip:Hide() - end) -end + pfUI.uf.pet:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.uf.pet:RegisterEvent("UNIT_PET") + pfUI.uf.pet:RegisterEvent("UNIT_COMBAT"); + pfUI.uf.pet:RegisterEvent("UNIT_AURA"); + pfUI.uf.pet:RegisterEvent("PET_ATTACK_START"); + pfUI.uf.pet:RegisterEvent("PET_ATTACK_STOP"); + pfUI.uf.pet:RegisterEvent("UNIT_HAPPINESS"); -function pfUI.uf.pet.buff.RefreshBuffs() - local buffsize = pfUI.uf.pet.hp:GetWidth()/8 - 1 - for i=1, 16 do - local texture, stacks = UnitBuff("pet",i) - pfUI.uf.pet.buff.buffs[i]:SetBackdrop( - { bgFile = texture, tile = false, tileSize = buffsize, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, - insets = { left = 0, right = 0, top = 0, bottom = 0} - }) + pfUI.uf.pet:RegisterEvent("UNIT_HEALTH") + pfUI.uf.pet:RegisterEvent("UNIT_MAXHEALTH") + pfUI.uf.pet:RegisterEvent("UNIT_MANA") + pfUI.uf.pet:RegisterEvent("UNIT_MAXMANA") + pfUI.uf.pet:RegisterEvent("UNIT_RAGE") + pfUI.uf.pet:RegisterEvent("UNIT_MAXRAGE") + pfUI.uf.pet:RegisterEvent("UNIT_ENERGY") + pfUI.uf.pet:RegisterEvent("UNIT_MAXENERGY") + pfUI.uf.pet:RegisterEvent("UNIT_FOCUS") + pfUI.uf.pet:RegisterEvent("UNIT_MAXFOCUS") - if texture then - pfUI.uf.pet.buff.buffs[i]:Show() - if stacks > 1 then - pfUI.uf.pet.buff.buffs[i].stacks:SetText(stacks) + pfUI.uf.pet:SetScript("OnEvent", function(arg1) + if UnitExists("pet") then pfUI.uf.pet:Show() else pfUI.uf.pet:Hide() end + local hp, hpmax = UnitHealth("pet"), UnitHealthMax("pet") + local power, powermax = UnitMana("pet"), UnitManaMax("pet") + + local happiness = GetPetHappiness() + if happiness == 1 then + color = { r = 1, g = 0, b = 0 } + elseif happiness == 2 then + color = { r = 1, g = 1, b = 0 } else - pfUI.uf.pet.buff.buffs[i].stacks:SetText("") + color = { r = 0, g = 1, b = 0 } + end + local r, g, b = (color.r + .5) * .5, (color.g + .5) * .5, (color.b + .5) * .5 + + pfUI.uf.pet.hp.bar:SetMinMaxValues(0, hpmax) + pfUI.uf.pet.hp.bar:SetStatusBarColor(r, g, b, hp / hpmax / 4 + .75) + pfUI.uf.pet.hp.text:SetTextColor(r+.3,g+.3,b+.3, 1) + pfUI.uf.pet.hp.text:SetText(UnitName("pet")) + + pfUI.uf.pet.hpReal = hp + pfUI.uf.pet.powerReal = power + + PowerColor = ManaBarColor[UnitPowerType("pet")]; + pfUI.uf.pet.power.bar:SetStatusBarColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5, 1) + pfUI.uf.pet.power.bar:SetMinMaxValues(0, UnitManaMax("pet")) + end) + + pfUI.uf.pet:SetScript("OnUpdate", function() + -- animation hp + local hpDisplay = pfUI.uf.pet.hp.bar:GetValue() + local hpReal = pfUI.uf.pet.hpReal + local hpDiff = abs(hpReal - hpDisplay) + + if hpDisplay < hpReal then + pfUI.uf.pet.hp.bar:SetValue(hpDisplay + ceil(hpDiff / pfUI_config.unitframes.animation_speed)) + elseif hpDisplay > hpReal then + pfUI.uf.pet.hp.bar:SetValue(hpDisplay - ceil(hpDiff / pfUI_config.unitframes.animation_speed)) + end + + -- animation power + local powerDisplay = pfUI.uf.pet.power.bar:GetValue() + local powerReal = pfUI.uf.pet.powerReal + local powerDiff = abs(powerReal - powerDisplay) + + if powerDisplay < powerReal then + pfUI.uf.pet.power.bar:SetValue(powerDisplay + ceil(powerDiff / pfUI_config.unitframes.animation_speed)) + elseif hpDisplay > hpReal then + pfUI.uf.pet.power.bar:SetValue(powerDisplay - ceil(powerDiff / pfUI_config.unitframes.animation_speed)) + end + end) + + pfUI.uf.pet.hp = CreateFrame("Frame",nil, pfUI.uf.pet) + pfUI.uf.pet.hp:SetBackdrop(pfUI.backdrop) + pfUI.uf.pet.hp:SetWidth(100) + pfUI.uf.pet.hp:SetHeight(20) + pfUI.uf.pet.hp:SetPoint("TOP",pfUI.uf.pet,"TOP") + pfUI.uf.pet.hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.pet.hp) + pfUI.uf.pet.hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + pfUI.uf.pet.hp.bar:ClearAllPoints() + pfUI.uf.pet.hp.bar:SetPoint("TOPLEFT", pfUI.uf.pet.hp, "TOPLEFT", 3, -3) + pfUI.uf.pet.hp.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.pet.hp, "BOTTOMRIGHT", -3, 3) + pfUI.uf.pet.hp.bar:SetMinMaxValues(0, 100) + pfUI.uf.pet.hp.bar:SetValue(100) + + pfUI.uf.pet.power = CreateFrame("Frame",nil, pfUI.uf.pet) + pfUI.uf.pet.power:SetBackdrop(pfUI.backdrop) + pfUI.uf.pet.power:SetWidth(100) + pfUI.uf.pet.power:SetHeight(8) + pfUI.uf.pet.power:SetPoint("TOPLEFT",pfUI.uf.pet.hp,"BOTTOMLEFT",0,3) + pfUI.uf.pet.power.bar = CreateFrame("StatusBar", nil, pfUI.uf.pet.power) + pfUI.uf.pet.power.bar:ClearAllPoints() + pfUI.uf.pet.power.bar:SetPoint("TOPLEFT", pfUI.uf.pet.power, "TOPLEFT", 3, -3) + pfUI.uf.pet.power.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.pet.power, "BOTTOMRIGHT", -3, 3) + pfUI.uf.pet.power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + pfUI.uf.pet.power.bar:SetBackdropColor(0,0,0,1) + pfUI.uf.pet.power.bar:SetStatusBarColor(0,0,0) + pfUI.uf.pet.power.bar:SetMinMaxValues(0, 100) + pfUI.uf.pet.power.bar:SetValue(100) + + pfUI.uf.pet.hp.text = pfUI.uf.pet.hp.bar:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.uf.pet.hp.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 8, "OUTLINE") + pfUI.uf.pet.hp.text:ClearAllPoints() + pfUI.uf.pet.hp.text:SetAllPoints(pfUI.uf.pet.hp.bar) + pfUI.uf.pet.hp.text:SetPoint("CENTER", 0, 0) + pfUI.uf.pet.hp.text:SetJustifyH("CENTER") + pfUI.uf.pet.hp.text:SetFontObject(GameFontWhite) + pfUI.uf.pet.hp.text:SetText("n/a") + + pfUI.uf.pet.buff = CreateFrame("Frame", nil) + pfUI.uf.pet.buff:RegisterEvent("PLAYER_AURAS_CHANGED") + pfUI.uf.pet.buff:RegisterEvent("PLAYER_AURAS_CHANGED") + pfUI.uf.pet.buff:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.uf.pet.buff:RegisterEvent("UNIT_AURA") + pfUI.uf.pet.buff:SetScript("OnEvent", function() + pfUI.uf.pet.buff.RefreshBuffs() + end) + + pfUI.uf.pet.buff.buffs = {} + for i=1, 16 do + local id = i + local row = 0 + if i <= 8 then row = 0 else row = 1 end + local buffsize = pfUI.uf.pet.hp:GetWidth()/8 - 1 + + pfUI.uf.pet.buff.buffs[i] = CreateFrame("Button", "pfUITargetBuff" .. i, pfUI.uf.pet) + pfUI.uf.pet.buff.buffs[i].stacks = pfUI.uf.pet.buff.buffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.pet.buff.buffs[i]) + pfUI.uf.pet.buff.buffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.pet.buff.buffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.pet.buff.buffs[i], 2, -2) + pfUI.uf.pet.buff.buffs[i].stacks:SetJustifyH("LEFT") + pfUI.uf.pet.buff.buffs[i].stacks:SetShadowColor(0, 0, 0) + pfUI.uf.pet.buff.buffs[i].stacks:SetShadowOffset(0.8, -0.8) + pfUI.uf.pet.buff.buffs[i].stacks:SetTextColor(1,1,.5) + + pfUI.uf.pet.buff.buffs[i]:RegisterForClicks("RightButtonUp") + pfUI.uf.pet.buff.buffs[i]:ClearAllPoints() + pfUI.uf.pet.buff.buffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.pet.hp, "TOPLEFT", (i-8*row)*1 + (i-8*row)*buffsize - buffsize -1 , 1*row + buffsize*row +1) + pfUI.uf.pet.buff.buffs[i]:SetWidth(buffsize) + pfUI.uf.pet.buff.buffs[i]:SetHeight(buffsize) + pfUI.uf.pet.buff.buffs[i]:SetNormalTexture(nil) + pfUI.uf.pet.buff.buffs[i]:SetScript("OnEnter", function() + GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") + GameTooltip:SetUnitBuff("pet", id) + end) + + pfUI.uf.pet.buff.buffs[i]:SetScript("OnLeave", function() + GameTooltip:Hide() + end) + end + + function pfUI.uf.pet.buff.RefreshBuffs() + local buffsize = pfUI.uf.pet.hp:GetWidth()/8 - 1 + for i=1, 16 do + local texture, stacks = UnitBuff("pet",i) + pfUI.uf.pet.buff.buffs[i]:SetBackdrop( + { bgFile = texture, tile = false, tileSize = buffsize, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) + + if texture then + pfUI.uf.pet.buff.buffs[i]:Show() + if stacks > 1 then + pfUI.uf.pet.buff.buffs[i].stacks:SetText(stacks) + else + pfUI.uf.pet.buff.buffs[i].stacks:SetText("") + end + else + pfUI.uf.pet.buff.buffs[i]:Hide() end - else - pfUI.uf.pet.buff.buffs[i]:Hide() end end -end -pfUI.uf.pet.debuff = CreateFrame("Frame", nil) -pfUI.uf.pet.debuff:RegisterEvent("PLAYER_AURAS_CHANGED") -pfUI.uf.pet.debuff:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.uf.pet.debuff:RegisterEvent("UNIT_AURA") -pfUI.uf.pet.debuff:SetScript("OnEvent", function() - pfUI.uf.pet.debuff.RefreshBuffs() - end) - -pfUI.uf.pet.debuff.debuffs = {} -for i=1, 16 do - local id = i - pfUI.uf.pet.debuff.debuffs[i] = CreateFrame("Button", "pfUITargetDebuff" .. i, pfUI.uf.pet) - pfUI.uf.pet.debuff.debuffs[i].stacks = pfUI.uf.pet.debuff.debuffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.pet.debuff.debuffs[i]) - pfUI.uf.pet.debuff.debuffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - pfUI.uf.pet.debuff.debuffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.pet.debuff.debuffs[i], 2, -2) - pfUI.uf.pet.debuff.debuffs[i].stacks:SetJustifyH("LEFT") - pfUI.uf.pet.debuff.debuffs[i].stacks:SetShadowColor(0, 0, 0) - pfUI.uf.pet.debuff.debuffs[i].stacks:SetShadowOffset(0.8, -0.8) - pfUI.uf.pet.debuff.debuffs[i].stacks:SetTextColor(1,1,.5) - pfUI.uf.pet.debuff.debuffs[i]:RegisterForClicks("RightButtonUp") - pfUI.uf.pet.debuff.debuffs[i]:ClearAllPoints() - - local row = 0; - local top = 0; - local debuffsize = pfUI.uf.pet.hp:GetWidth()/8 - 1 - if i > 8 then row = 1 end - if pfUI.uf.pet.buff.buffs[1]:IsShown() then top = top + 1 end - if pfUI.uf.pet.buff.buffs[9]:IsShown() then top = top + 1 end - - pfUI.uf.pet.debuff.debuffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.pet.hp, "TOPLEFT", - (i-8*row)*1 + (i-8*row)*debuffsize - debuffsize -1 , - 1*row + debuffsize*row +1 + (top*(debuffsize+1)) - ) - - pfUI.uf.pet.debuff.debuffs[i]:SetWidth(debuffsize) - pfUI.uf.pet.debuff.debuffs[i]:SetHeight(debuffsize) - pfUI.uf.pet.debuff.debuffs[i]:SetNormalTexture(nil) - pfUI.uf.pet.debuff.debuffs[i]:SetScript("OnEnter", function() - GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") - GameTooltip:SetUnitDebuff("pet", id) + pfUI.uf.pet.debuff = CreateFrame("Frame", nil) + pfUI.uf.pet.debuff:RegisterEvent("PLAYER_AURAS_CHANGED") + pfUI.uf.pet.debuff:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.uf.pet.debuff:RegisterEvent("UNIT_AURA") + pfUI.uf.pet.debuff:SetScript("OnEvent", function() + pfUI.uf.pet.debuff.RefreshBuffs() end) - pfUI.uf.pet.debuff.debuffs[i]:SetScript("OnLeave", function() - GameTooltip:Hide() - end) - pfUI.uf.pet.debuff.debuffs[i]:SetScript("OnClick", function() - CancelPlayerBuff(GetPlayerBuff(id-1,"HARMFUL")) - end) -end -function pfUI.uf.pet.debuff.RefreshBuffs() - local debuffsize = pfUI.uf.pet.hp:GetWidth()/8 - 1 + pfUI.uf.pet.debuff.debuffs = {} for i=1, 16 do + local id = i + pfUI.uf.pet.debuff.debuffs[i] = CreateFrame("Button", "pfUITargetDebuff" .. i, pfUI.uf.pet) + pfUI.uf.pet.debuff.debuffs[i].stacks = pfUI.uf.pet.debuff.debuffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.pet.debuff.debuffs[i]) + pfUI.uf.pet.debuff.debuffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.pet.debuff.debuffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.pet.debuff.debuffs[i], 2, -2) + pfUI.uf.pet.debuff.debuffs[i].stacks:SetJustifyH("LEFT") + pfUI.uf.pet.debuff.debuffs[i].stacks:SetShadowColor(0, 0, 0) + pfUI.uf.pet.debuff.debuffs[i].stacks:SetShadowOffset(0.8, -0.8) + pfUI.uf.pet.debuff.debuffs[i].stacks:SetTextColor(1,1,.5) + pfUI.uf.pet.debuff.debuffs[i]:RegisterForClicks("RightButtonUp") + pfUI.uf.pet.debuff.debuffs[i]:ClearAllPoints() + local row = 0; local top = 0; + local debuffsize = pfUI.uf.pet.hp:GetWidth()/8 - 1 if i > 8 then row = 1 end if pfUI.uf.pet.buff.buffs[1]:IsShown() then top = top + 1 end if pfUI.uf.pet.buff.buffs[9]:IsShown() then top = top + 1 end @@ -245,34 +217,63 @@ function pfUI.uf.pet.debuff.RefreshBuffs() (i-8*row)*1 + (i-8*row)*debuffsize - debuffsize -1 , 1*row + debuffsize*row +1 + (top*(debuffsize+1)) ) - local texture, stacks = UnitDebuff("pet",i) - pfUI.uf.pet.debuff.debuffs[i]:SetBackdrop( - { bgFile = texture, tile = false, tileSize = debuffsize, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, - insets = { left = 0, right = 0, top = 0, bottom = 0} - }) - local _,_,dtype = UnitDebuff("pet", i) - if dtype == "Magic" then - pfUI.uf.pet.debuff.debuffs[i]:SetBackdropBorderColor(0,1,1,1) - elseif dtype == "Poison" then - pfUI.uf.pet.debuff.debuffs[i]:SetBackdropBorderColor(0,1,0,1) - elseif dtype == "Curse" then - pfUI.uf.pet.debuff.debuffs[i]:SetBackdropBorderColor(1,0,1,1) - else - pfUI.uf.pet.debuff.debuffs[i]:SetBackdropBorderColor(1,0,0,1) - end + pfUI.uf.pet.debuff.debuffs[i]:SetWidth(debuffsize) + pfUI.uf.pet.debuff.debuffs[i]:SetHeight(debuffsize) + pfUI.uf.pet.debuff.debuffs[i]:SetNormalTexture(nil) + pfUI.uf.pet.debuff.debuffs[i]:SetScript("OnEnter", function() + GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") + GameTooltip:SetUnitDebuff("pet", id) + end) + pfUI.uf.pet.debuff.debuffs[i]:SetScript("OnLeave", function() + GameTooltip:Hide() + end) + pfUI.uf.pet.debuff.debuffs[i]:SetScript("OnClick", function() + CancelPlayerBuff(GetPlayerBuff(id-1,"HARMFUL")) + end) + end - if texture then - pfUI.uf.pet.debuff.debuffs[i]:Show() - if stacks > 1 then - pfUI.uf.pet.debuff.debuffs[i].stacks:SetText(stacks) + function pfUI.uf.pet.debuff.RefreshBuffs() + local debuffsize = pfUI.uf.pet.hp:GetWidth()/8 - 1 + for i=1, 16 do + local row = 0; + local top = 0; + if i > 8 then row = 1 end + if pfUI.uf.pet.buff.buffs[1]:IsShown() then top = top + 1 end + if pfUI.uf.pet.buff.buffs[9]:IsShown() then top = top + 1 end + + pfUI.uf.pet.debuff.debuffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.pet.hp, "TOPLEFT", + (i-8*row)*1 + (i-8*row)*debuffsize - debuffsize -1 , + 1*row + debuffsize*row +1 + (top*(debuffsize+1)) + ) + local texture, stacks = UnitDebuff("pet",i) + pfUI.uf.pet.debuff.debuffs[i]:SetBackdrop( + { bgFile = texture, tile = false, tileSize = debuffsize, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) + + local _,_,dtype = UnitDebuff("pet", i) + if dtype == "Magic" then + pfUI.uf.pet.debuff.debuffs[i]:SetBackdropBorderColor(0,1,1,1) + elseif dtype == "Poison" then + pfUI.uf.pet.debuff.debuffs[i]:SetBackdropBorderColor(0,1,0,1) + elseif dtype == "Curse" then + pfUI.uf.pet.debuff.debuffs[i]:SetBackdropBorderColor(1,0,1,1) else - pfUI.uf.pet.debuff.debuffs[i].stacks:SetText("") + pfUI.uf.pet.debuff.debuffs[i]:SetBackdropBorderColor(1,0,0,1) + end + + if texture then + pfUI.uf.pet.debuff.debuffs[i]:Show() + if stacks > 1 then + pfUI.uf.pet.debuff.debuffs[i].stacks:SetText(stacks) + else + pfUI.uf.pet.debuff.debuffs[i].stacks:SetText("") + end + else + pfUI.uf.pet.debuff.debuffs[i]:Hide() end - else - pfUI.uf.pet.debuff.debuffs[i]:Hide() end end -end - +end) diff --git a/modules/player.lua b/modules/player.lua index 056b4fba..633eb750 100644 --- a/modules/player.lua +++ b/modules/player.lua @@ -1,361 +1,363 @@ -PlayerFrame:Hide() -PlayerFrame:UnregisterAllEvents() +pfUI:RegisterModule("player", function () + PlayerFrame:Hide() + PlayerFrame:UnregisterAllEvents() -pfUI.uf.player = CreateFrame("Button",nil,UIParent) -pfUI.uf.player:SetWidth(pfUI_config.unitframes.player.width) -pfUI.uf.player:SetHeight(pfUI_config.unitframes.player.height+pfUI_config.unitframes.player.pheight) -pfUI.uf.player:SetPoint("BOTTOMRIGHT", UIParent, "BOTTOM", -75, 125) -pfUI.uf.player:RegisterForClicks('LeftButtonUp', 'RightButtonUp') -pfUI.uf.player:SetScript("OnClick", function () - if arg1 == "RightButton" then - ToggleDropDownMenu(1, nil, pfUI.uf.player.Dropdown,"cursor") - if UnitIsPartyLeader("player") then - UIDropDownMenu_AddButton({text = "Reset Instances", func = ResetInstances, notCheckable = 1}, 1) - end - else - TargetUnit("player") - end - end) - -pfUI.uf.player.Dropdown = getglobal("PlayerFrameDropDown") -function pfUI.uf.player.Dropdowni() - -- add reset button when alone - if not (UnitInRaid("player") or GetNumPartyMembers() > 0) then - UIDropDownMenu_AddButton({text = "Reset Instances", func = ResetInstances, notCheckable = 1}, 1) - end - UnitPopup_ShowMenu(pfUI.uf.player.Dropdown, "SELF", "player") -end -UIDropDownMenu_Initialize(pfUI.uf.player.Dropdown, pfUI.uf.player.Dropdowni, "MENU") - -pfUI.uf.player:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.uf.player:RegisterEvent("UNIT_HEALTH") -pfUI.uf.player:RegisterEvent("UNIT_MAXHEALTH") -pfUI.uf.player:RegisterEvent("UNIT_DISPLAYPOWER") -pfUI.uf.player:RegisterEvent("UNIT_MANA") -pfUI.uf.player:RegisterEvent("UNIT_MAXMANA") -pfUI.uf.player:RegisterEvent("UNIT_RAGE") -pfUI.uf.player:RegisterEvent("UNIT_MAXRAGE") -pfUI.uf.player:RegisterEvent("UNIT_ENERGY") -pfUI.uf.player:RegisterEvent("UNIT_MAXENERGY") - -pfUI.uf.player:SetScript("OnEvent", function() - if event == "UNIT_DISPLAYPOWER" or event == "PLAYER_ENTERING_WORLD" then - pfUI.uf.player.power.bar:SetValue(0) - end - - local hp, hpmax = UnitHealth("player"), UnitHealthMax("player") - local power, powermax = UnitMana("player"), UnitManaMax("player") - - local cr, cg, cb = pfUI.cache.class_r, pfUI.cache.class_g, pfUI.cache.class_b - local perc = hp / hpmax - - pfUI.uf.player.hp.bar:SetMinMaxValues(0, hpmax) - pfUI.uf.player.hp.bar:SetStatusBarColor(cr, cg, cb, hp / hpmax / 4 + .75) - - local r1, g1, b1, r2, g2, b2 - if perc <= 0.5 then - perc = perc * 2; r1, g1, b1 = .9, .5, .5; r2, g2, b2 = .9, .9, .5 - else - perc = perc * 2 - 1; r1, g1, b1 = .9, .9, .5; r2, g2, b2 = .5, .9, .5 - end - local hr, hg, hb = r1 + (r2 - r1)*perc, g1 + (g2 - g1)*perc, b1 + (b2 - b1)*perc - pfUI.uf.player.hpText:SetTextColor(hr, hg, hb,1) - - if hp ~= hpmax then - pfUI.uf.player.hpText:SetText(hp .. " - " .. ceil(hp / hpmax * 100) .. "%") - else - pfUI.uf.player.hpText:SetText(hp) - end - - PowerColor = ManaBarColor[UnitPowerType("player")]; - pfUI.uf.player.power.bar:SetStatusBarColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5, 1) - pfUI.uf.player.power.bar:SetMinMaxValues(0, UnitManaMax("player")) - - pfUI.uf.player.powerText:SetTextColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5,1) - - pfUI.uf.player.powerText:SetText( UnitMana("player") ) - - pfUI.uf.player.hpReal = hp - pfUI.uf.player.powerReal = power - end) - -pfUI.uf.player:SetScript("OnUpdate", function() - local hpDisplay = pfUI.uf.player.hp.bar:GetValue() - local hpReal = pfUI.uf.player.hpReal - local hpDiff = abs(hpReal - hpDisplay) - - if hpDisplay < hpReal then - pfUI.uf.player.hp.bar:SetValue(hpDisplay + ceil(hpDiff / pfUI_config.unitframes.animation_speed)) - elseif hpDisplay > hpReal then - pfUI.uf.player.hp.bar:SetValue(hpDisplay - ceil(hpDiff / pfUI_config.unitframes.animation_speed)) - end - - local powerDisplay = pfUI.uf.player.power.bar:GetValue() - local powerReal = pfUI.uf.player.powerReal - local powerDiff = abs(powerReal - powerDisplay) - - if powerDisplay < powerReal then - pfUI.uf.player.power.bar:SetValue(powerDisplay + ceil(powerDiff / pfUI_config.unitframes.animation_speed)) - elseif powerDisplay > powerReal then - pfUI.uf.player.power.bar:SetValue(powerDisplay - ceil(powerDiff / pfUI_config.unitframes.animation_speed)) - end - end) - -pfUI.uf.player.hp = CreateFrame("Frame",nil, pfUI.uf.player) -pfUI.uf.player.hp:SetBackdrop(pfUI.backdrop) -pfUI.uf.player.hp:SetHeight(pfUI_config.unitframes.player.height) -pfUI.uf.player.hp:SetPoint("TOPRIGHT",pfUI.uf.player,"TOPRIGHT") -pfUI.uf.player.hp:SetPoint("TOPLEFT",pfUI.uf.player,"TOPLEFT") - -pfUI.uf.player.hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.player.hp) -pfUI.uf.player.hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") - -pfUI.uf.player.hp.bar:ClearAllPoints() -pfUI.uf.player.hp.bar:SetPoint("TOPLEFT", pfUI.uf.player.hp, "TOPLEFT", 3, -3) -pfUI.uf.player.hp.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.player.hp, "BOTTOMRIGHT", -3, 3) - -pfUI.uf.player.hp.bar:SetMinMaxValues(0, 100) - -pfUI.uf.player.hp.bar.portrait = CreateFrame("PlayerModel",nil,pfUI.uf.player.hp.bar) -pfUI.uf.player.hp.bar.portrait:SetAllPoints(pfUI.uf.player.hp.bar) -pfUI.uf.player.hp.bar.portrait:RegisterEvent("UNIT_PORTRAIT_UPDATE") -pfUI.uf.player.hp.bar.portrait:RegisterEvent("UNIT_MODEL_CHANGED") -pfUI.uf.player.hp.bar.portrait:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.uf.player.hp.bar.portrait:SetScript("OnEvent", function() this:Update() end) -pfUI.uf.player.hp.bar.portrait:SetScript("OnShow", function() this:Update() end) - -function pfUI.uf.player.hp.bar.portrait.Update() - pfUI.uf.player.hp.bar.portrait:SetUnit("player"); - pfUI.uf.player.hp.bar.portrait:SetCamera(0) - pfUI.uf.player.hp.bar.portrait:SetAlpha(0.10) -end - -pfUI.uf.player.power = CreateFrame("Frame",nil, pfUI.uf.player) -pfUI.uf.player.power:SetBackdrop(pfUI.backdrop) -pfUI.uf.player.power:SetPoint("TOPLEFT",pfUI.uf.player.hp,"BOTTOMLEFT",0,3) -pfUI.uf.player.power:SetPoint("BOTTOMRIGHT",pfUI.uf.player,"BOTTOMRIGHT",0,0) - -pfUI.uf.player.power.bar = CreateFrame("StatusBar", nil, pfUI.uf.player.power) -pfUI.uf.player.power.bar:ClearAllPoints() -pfUI.uf.player.power.bar:SetPoint("TOPLEFT", pfUI.uf.player.power, "TOPLEFT", 3, -3) -pfUI.uf.player.power.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.player.power, "BOTTOMRIGHT", -3, 3) - -pfUI.uf.player.power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") - -pfUI.uf.player.power.bar:SetBackdropColor(0,0,0,1) -pfUI.uf.player.power.bar:SetStatusBarColor(0,1,0) -pfUI.uf.player.power.bar:SetMinMaxValues(0, 100) - -pfUI.uf.player.hpText = pfUI.uf.player:CreateFontString("Status", "HIGH", "GameFontNormal") -pfUI.uf.player.hpText:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") -pfUI.uf.player.hpText:ClearAllPoints() -pfUI.uf.player.hpText:SetJustifyH("RIGHT") -pfUI.uf.player.hpText:SetFontObject(GameFontWhite) -pfUI.uf.player.hpText:SetText("5000") - -pfUI.uf.player.powerText = pfUI.uf.player:CreateFontString("Status", "HIGH", "GameFontNormal") -pfUI.uf.player.powerText:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") -pfUI.uf.player.powerText:ClearAllPoints() -pfUI.uf.player.powerText:SetJustifyH("LEFT") -pfUI.uf.player.powerText:SetFontObject(GameFontWhite) -pfUI.uf.player.powerText:SetText("5000") - -pfUI.uf.player.hpText:SetParent(pfUI.uf.player.hp.bar) -pfUI.uf.player.hpText:SetPoint("RIGHT",pfUI.uf.player.hp.bar, "RIGHT", -10, 0) -pfUI.uf.player.powerText:SetParent(pfUI.uf.player.hp.bar) -pfUI.uf.player.powerText:SetPoint("LEFT",pfUI.uf.player.hp.bar, "LEFT", 10, 0) - -pfUI.uf.player.buff = CreateFrame("Frame", nil) -pfUI.uf.player.buff:RegisterEvent("PLAYER_AURAS_CHANGED") -pfUI.uf.player.buff:SetScript("OnEvent", function() - pfUI.uf.player.buff.RefreshBuffs() - end) - -pfUI.uf.player.buff.buffs = {} -for i=1, 16 do - local id = i - local row = 0 - if i <= 8 then row = 0 else row = 1 end - - pfUI.uf.player.buff.buffs[i] = CreateFrame("Button", "pfUIPlayerBuff" .. i, pfUI.uf.player) - pfUI.uf.player.buff.buffs[i].stacks = pfUI.uf.player.buff.buffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.player.buff.buffs[i]) - pfUI.uf.player.buff.buffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - pfUI.uf.player.buff.buffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.player.buff.buffs[i], 2, -2) - pfUI.uf.player.buff.buffs[i].stacks:SetJustifyH("LEFT") - pfUI.uf.player.buff.buffs[i].stacks:SetShadowColor(0, 0, 0) - pfUI.uf.player.buff.buffs[i].stacks:SetShadowOffset(0.8, -0.8) - pfUI.uf.player.buff.buffs[i].stacks:SetTextColor(1,1,.5) - pfUI.uf.player.buff.buffs[i].cd = pfUI.uf.player.buff.buffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.player.buff.buffs[i]) - pfUI.uf.player.buff.buffs[i].cd:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - pfUI.uf.player.buff.buffs[i].cd:SetPoint("CENTER", pfUI.uf.player.buff.buffs[i], 0, 0) - pfUI.uf.player.buff.buffs[i].cd:SetJustifyH("LEFT") - pfUI.uf.player.buff.buffs[i].cd:SetShadowColor(0, 0, 0) - pfUI.uf.player.buff.buffs[i].cd:SetShadowOffset(0.8, -0.8) - pfUI.uf.player.buff.buffs[i].cd:SetTextColor(1,1,1) - - pfUI.uf.player.buff.buffs[i]:RegisterForClicks("RightButtonUp") - pfUI.uf.player.buff.buffs[i]:ClearAllPoints() - pfUI.uf.player.buff.buffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.player, "TOPLEFT", (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.buff_size - pfUI_config.unitframes.buff_size -1 , 1*row + pfUI_config.unitframes.buff_size*row +1) - pfUI.uf.player.buff.buffs[i]:SetWidth(pfUI_config.unitframes.buff_size) - pfUI.uf.player.buff.buffs[i]:SetHeight(pfUI_config.unitframes.buff_size) - pfUI.uf.player.buff.buffs[i]:SetNormalTexture(nil) - pfUI.uf.player.buff.buffs[i]:SetScript("OnEnter", function() - GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") - GameTooltip:SetPlayerBuff(GetPlayerBuff(id-1,"HELPFUL")) - end) - - pfUI.uf.player.buff.buffs[i]:SetScript("OnLeave", function() - GameTooltip:Hide() - end) - - pfUI.uf.player.buff.buffs[i]:SetScript("OnClick", function() - CancelPlayerBuff(GetPlayerBuff(id-1,"HELPFUL")) - end) - pfUI.uf.player.buff.buffs[i]:SetScript("OnUpdate", function() - for i=1, 16 do - local timeleft = GetPlayerBuffTimeLeft(GetPlayerBuff(i-1,"HELPFUL")) - if timeleft ~= nil and timeleft < 99 and timeleft ~= 0 then - pfUI.uf.player.buff.buffs[i].cd:SetText(ceil(timeleft)) - else - pfUI.uf.player.buff.buffs[i].cd:SetText("") + pfUI.uf.player = CreateFrame("Button",nil,UIParent) + pfUI.uf.player:SetWidth(pfUI_config.unitframes.player.width) + pfUI.uf.player:SetHeight(pfUI_config.unitframes.player.height+pfUI_config.unitframes.player.pheight) + pfUI.uf.player:SetPoint("BOTTOMRIGHT", UIParent, "BOTTOM", -75, 125) + pfUI.uf.player:RegisterForClicks('LeftButtonUp', 'RightButtonUp') + pfUI.uf.player:SetScript("OnClick", function () + if arg1 == "RightButton" then + ToggleDropDownMenu(1, nil, pfUI.uf.player.Dropdown,"cursor") + if UnitIsPartyLeader("player") then + UIDropDownMenu_AddButton({text = "Reset Instances", func = ResetInstances, notCheckable = 1}, 1) end - end - end) - -end - -function pfUI.uf.player.buff.RefreshBuffs() - for i=1, 16 do - local stacks = GetPlayerBuffApplications(GetPlayerBuff(i-1,"HELPFUL")) - pfUI.uf.player.buff.buffs[i]:SetBackdrop( - { bgFile = GetPlayerBuffTexture(GetPlayerBuff(i-1,"HELPFUL")), tile = false, tileSize = pfUI_config.unitframes.buff_size, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, - insets = { left = 0, right = 0, top = 0, bottom = 0} - }) - - if GetPlayerBuffTexture(GetPlayerBuff(i-1,"HELPFUL")) then - pfUI.uf.player.buff.buffs[i]:Show() - local stacks = GetPlayerBuffApplications(GetPlayerBuff(i-1,"HELPFUL")) - if stacks > 1 then - pfUI.uf.player.buff.buffs[i].stacks:SetText(stacks) else - pfUI.uf.player.buff.buffs[i].stacks:SetText("") + TargetUnit("player") end - else - pfUI.uf.player.buff.buffs[i]:Hide() + end) + + pfUI.uf.player.Dropdown = getglobal("PlayerFrameDropDown") + function pfUI.uf.player.Dropdowni() + -- add reset button when alone + if not (UnitInRaid("player") or GetNumPartyMembers() > 0) then + UIDropDownMenu_AddButton({text = "Reset Instances", func = ResetInstances, notCheckable = 1}, 1) end + UnitPopup_ShowMenu(pfUI.uf.player.Dropdown, "SELF", "player") + end + UIDropDownMenu_Initialize(pfUI.uf.player.Dropdown, pfUI.uf.player.Dropdowni, "MENU") + + pfUI.uf.player:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.uf.player:RegisterEvent("UNIT_HEALTH") + pfUI.uf.player:RegisterEvent("UNIT_MAXHEALTH") + pfUI.uf.player:RegisterEvent("UNIT_DISPLAYPOWER") + pfUI.uf.player:RegisterEvent("UNIT_MANA") + pfUI.uf.player:RegisterEvent("UNIT_MAXMANA") + pfUI.uf.player:RegisterEvent("UNIT_RAGE") + pfUI.uf.player:RegisterEvent("UNIT_MAXRAGE") + pfUI.uf.player:RegisterEvent("UNIT_ENERGY") + pfUI.uf.player:RegisterEvent("UNIT_MAXENERGY") + + pfUI.uf.player:SetScript("OnEvent", function() + if event == "UNIT_DISPLAYPOWER" or event == "PLAYER_ENTERING_WORLD" then + pfUI.uf.player.power.bar:SetValue(0) + end + + local hp, hpmax = UnitHealth("player"), UnitHealthMax("player") + local power, powermax = UnitMana("player"), UnitManaMax("player") + + local cr, cg, cb = pfUI.cache.class_r, pfUI.cache.class_g, pfUI.cache.class_b + local perc = hp / hpmax + + pfUI.uf.player.hp.bar:SetMinMaxValues(0, hpmax) + pfUI.uf.player.hp.bar:SetStatusBarColor(cr, cg, cb, hp / hpmax / 4 + .75) + + local r1, g1, b1, r2, g2, b2 + if perc <= 0.5 then + perc = perc * 2; r1, g1, b1 = .9, .5, .5; r2, g2, b2 = .9, .9, .5 + else + perc = perc * 2 - 1; r1, g1, b1 = .9, .9, .5; r2, g2, b2 = .5, .9, .5 + end + local hr, hg, hb = r1 + (r2 - r1)*perc, g1 + (g2 - g1)*perc, b1 + (b2 - b1)*perc + pfUI.uf.player.hpText:SetTextColor(hr, hg, hb,1) + + if hp ~= hpmax then + pfUI.uf.player.hpText:SetText(hp .. " - " .. ceil(hp / hpmax * 100) .. "%") + else + pfUI.uf.player.hpText:SetText(hp) + end + + PowerColor = ManaBarColor[UnitPowerType("player")]; + pfUI.uf.player.power.bar:SetStatusBarColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5, 1) + pfUI.uf.player.power.bar:SetMinMaxValues(0, UnitManaMax("player")) + + pfUI.uf.player.powerText:SetTextColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5,1) + + pfUI.uf.player.powerText:SetText( UnitMana("player") ) + + pfUI.uf.player.hpReal = hp + pfUI.uf.player.powerReal = power + end) + + pfUI.uf.player:SetScript("OnUpdate", function() + local hpDisplay = pfUI.uf.player.hp.bar:GetValue() + local hpReal = pfUI.uf.player.hpReal + local hpDiff = abs(hpReal - hpDisplay) + + if hpDisplay < hpReal then + pfUI.uf.player.hp.bar:SetValue(hpDisplay + ceil(hpDiff / pfUI_config.unitframes.animation_speed)) + elseif hpDisplay > hpReal then + pfUI.uf.player.hp.bar:SetValue(hpDisplay - ceil(hpDiff / pfUI_config.unitframes.animation_speed)) + end + + local powerDisplay = pfUI.uf.player.power.bar:GetValue() + local powerReal = pfUI.uf.player.powerReal + local powerDiff = abs(powerReal - powerDisplay) + + if powerDisplay < powerReal then + pfUI.uf.player.power.bar:SetValue(powerDisplay + ceil(powerDiff / pfUI_config.unitframes.animation_speed)) + elseif powerDisplay > powerReal then + pfUI.uf.player.power.bar:SetValue(powerDisplay - ceil(powerDiff / pfUI_config.unitframes.animation_speed)) + end + end) + + pfUI.uf.player.hp = CreateFrame("Frame",nil, pfUI.uf.player) + pfUI.uf.player.hp:SetBackdrop(pfUI.backdrop) + pfUI.uf.player.hp:SetHeight(pfUI_config.unitframes.player.height) + pfUI.uf.player.hp:SetPoint("TOPRIGHT",pfUI.uf.player,"TOPRIGHT") + pfUI.uf.player.hp:SetPoint("TOPLEFT",pfUI.uf.player,"TOPLEFT") + + pfUI.uf.player.hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.player.hp) + pfUI.uf.player.hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + + pfUI.uf.player.hp.bar:ClearAllPoints() + pfUI.uf.player.hp.bar:SetPoint("TOPLEFT", pfUI.uf.player.hp, "TOPLEFT", 3, -3) + pfUI.uf.player.hp.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.player.hp, "BOTTOMRIGHT", -3, 3) + + pfUI.uf.player.hp.bar:SetMinMaxValues(0, 100) + + pfUI.uf.player.hp.bar.portrait = CreateFrame("PlayerModel",nil,pfUI.uf.player.hp.bar) + pfUI.uf.player.hp.bar.portrait:SetAllPoints(pfUI.uf.player.hp.bar) + pfUI.uf.player.hp.bar.portrait:RegisterEvent("UNIT_PORTRAIT_UPDATE") + pfUI.uf.player.hp.bar.portrait:RegisterEvent("UNIT_MODEL_CHANGED") + pfUI.uf.player.hp.bar.portrait:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.uf.player.hp.bar.portrait:SetScript("OnEvent", function() this:Update() end) + pfUI.uf.player.hp.bar.portrait:SetScript("OnShow", function() this:Update() end) + + function pfUI.uf.player.hp.bar.portrait.Update() + pfUI.uf.player.hp.bar.portrait:SetUnit("player"); + pfUI.uf.player.hp.bar.portrait:SetCamera(0) + pfUI.uf.player.hp.bar.portrait:SetAlpha(0.10) + end + + pfUI.uf.player.power = CreateFrame("Frame",nil, pfUI.uf.player) + pfUI.uf.player.power:SetBackdrop(pfUI.backdrop) + pfUI.uf.player.power:SetPoint("TOPLEFT",pfUI.uf.player.hp,"BOTTOMLEFT",0,3) + pfUI.uf.player.power:SetPoint("BOTTOMRIGHT",pfUI.uf.player,"BOTTOMRIGHT",0,0) + + pfUI.uf.player.power.bar = CreateFrame("StatusBar", nil, pfUI.uf.player.power) + pfUI.uf.player.power.bar:ClearAllPoints() + pfUI.uf.player.power.bar:SetPoint("TOPLEFT", pfUI.uf.player.power, "TOPLEFT", 3, -3) + pfUI.uf.player.power.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.player.power, "BOTTOMRIGHT", -3, 3) + + pfUI.uf.player.power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + + pfUI.uf.player.power.bar:SetBackdropColor(0,0,0,1) + pfUI.uf.player.power.bar:SetStatusBarColor(0,1,0) + pfUI.uf.player.power.bar:SetMinMaxValues(0, 100) + + pfUI.uf.player.hpText = pfUI.uf.player:CreateFontString("Status", "HIGH", "GameFontNormal") + pfUI.uf.player.hpText:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.player.hpText:ClearAllPoints() + pfUI.uf.player.hpText:SetJustifyH("RIGHT") + pfUI.uf.player.hpText:SetFontObject(GameFontWhite) + pfUI.uf.player.hpText:SetText("5000") + + pfUI.uf.player.powerText = pfUI.uf.player:CreateFontString("Status", "HIGH", "GameFontNormal") + pfUI.uf.player.powerText:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.player.powerText:ClearAllPoints() + pfUI.uf.player.powerText:SetJustifyH("LEFT") + pfUI.uf.player.powerText:SetFontObject(GameFontWhite) + pfUI.uf.player.powerText:SetText("5000") + + pfUI.uf.player.hpText:SetParent(pfUI.uf.player.hp.bar) + pfUI.uf.player.hpText:SetPoint("RIGHT",pfUI.uf.player.hp.bar, "RIGHT", -10, 0) + pfUI.uf.player.powerText:SetParent(pfUI.uf.player.hp.bar) + pfUI.uf.player.powerText:SetPoint("LEFT",pfUI.uf.player.hp.bar, "LEFT", 10, 0) + + pfUI.uf.player.buff = CreateFrame("Frame", nil) + pfUI.uf.player.buff:RegisterEvent("PLAYER_AURAS_CHANGED") + pfUI.uf.player.buff:SetScript("OnEvent", function() + pfUI.uf.player.buff.RefreshBuffs() + end) + + pfUI.uf.player.buff.buffs = {} + for i=1, 16 do + local id = i + local row = 0 + if i <= 8 then row = 0 else row = 1 end + + pfUI.uf.player.buff.buffs[i] = CreateFrame("Button", "pfUIPlayerBuff" .. i, pfUI.uf.player) + pfUI.uf.player.buff.buffs[i].stacks = pfUI.uf.player.buff.buffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.player.buff.buffs[i]) + pfUI.uf.player.buff.buffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.player.buff.buffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.player.buff.buffs[i], 2, -2) + pfUI.uf.player.buff.buffs[i].stacks:SetJustifyH("LEFT") + pfUI.uf.player.buff.buffs[i].stacks:SetShadowColor(0, 0, 0) + pfUI.uf.player.buff.buffs[i].stacks:SetShadowOffset(0.8, -0.8) + pfUI.uf.player.buff.buffs[i].stacks:SetTextColor(1,1,.5) + pfUI.uf.player.buff.buffs[i].cd = pfUI.uf.player.buff.buffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.player.buff.buffs[i]) + pfUI.uf.player.buff.buffs[i].cd:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.player.buff.buffs[i].cd:SetPoint("CENTER", pfUI.uf.player.buff.buffs[i], 0, 0) + pfUI.uf.player.buff.buffs[i].cd:SetJustifyH("LEFT") + pfUI.uf.player.buff.buffs[i].cd:SetShadowColor(0, 0, 0) + pfUI.uf.player.buff.buffs[i].cd:SetShadowOffset(0.8, -0.8) + pfUI.uf.player.buff.buffs[i].cd:SetTextColor(1,1,1) + + pfUI.uf.player.buff.buffs[i]:RegisterForClicks("RightButtonUp") + pfUI.uf.player.buff.buffs[i]:ClearAllPoints() + pfUI.uf.player.buff.buffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.player, "TOPLEFT", (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.buff_size - pfUI_config.unitframes.buff_size -1 , 1*row + pfUI_config.unitframes.buff_size*row +1) + pfUI.uf.player.buff.buffs[i]:SetWidth(pfUI_config.unitframes.buff_size) + pfUI.uf.player.buff.buffs[i]:SetHeight(pfUI_config.unitframes.buff_size) + pfUI.uf.player.buff.buffs[i]:SetNormalTexture(nil) + pfUI.uf.player.buff.buffs[i]:SetScript("OnEnter", function() + GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") + GameTooltip:SetPlayerBuff(GetPlayerBuff(id-1,"HELPFUL")) + end) + + pfUI.uf.player.buff.buffs[i]:SetScript("OnLeave", function() + GameTooltip:Hide() + end) + + pfUI.uf.player.buff.buffs[i]:SetScript("OnClick", function() + CancelPlayerBuff(GetPlayerBuff(id-1,"HELPFUL")) + end) + pfUI.uf.player.buff.buffs[i]:SetScript("OnUpdate", function() + for i=1, 16 do + local timeleft = GetPlayerBuffTimeLeft(GetPlayerBuff(i-1,"HELPFUL")) + if timeleft ~= nil and timeleft < 99 and timeleft ~= 0 then + pfUI.uf.player.buff.buffs[i].cd:SetText(ceil(timeleft)) + else + pfUI.uf.player.buff.buffs[i].cd:SetText("") + end + end + end) end -end -pfUI.uf.player.debuff = CreateFrame("Frame", nil) -pfUI.uf.player.debuff:RegisterEvent("PLAYER_AURAS_CHANGED") -pfUI.uf.player.debuff:SetScript("OnEvent", function() - pfUI.uf.player.debuff.RefreshBuffs() - end) + function pfUI.uf.player.buff.RefreshBuffs() + for i=1, 16 do + local stacks = GetPlayerBuffApplications(GetPlayerBuff(i-1,"HELPFUL")) + pfUI.uf.player.buff.buffs[i]:SetBackdrop( + { bgFile = GetPlayerBuffTexture(GetPlayerBuff(i-1,"HELPFUL")), tile = false, tileSize = pfUI_config.unitframes.buff_size, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) -pfUI.uf.player.debuff.debuffs = {} -for i=1, 16 do - local id = i - pfUI.uf.player.debuff.debuffs[i] = CreateFrame("Button", "pfUIPlayerDebuff" .. i, pfUI.uf.player) - pfUI.uf.player.debuff.debuffs[i].stacks = pfUI.uf.player.debuff.debuffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.player.debuff.debuffs[i]) - pfUI.uf.player.debuff.debuffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - pfUI.uf.player.debuff.debuffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.player.debuff.debuffs[i], 2, -2) - pfUI.uf.player.debuff.debuffs[i].stacks:SetJustifyH("LEFT") - pfUI.uf.player.debuff.debuffs[i].stacks:SetShadowColor(0, 0, 0) - pfUI.uf.player.debuff.debuffs[i].stacks:SetShadowOffset(0.8, -0.8) - pfUI.uf.player.debuff.debuffs[i].stacks:SetTextColor(1,1,.5) - pfUI.uf.player.debuff.debuffs[i].cd = pfUI.uf.player.debuff.debuffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.player.debuff.debuffs[i]) - pfUI.uf.player.debuff.debuffs[i].cd:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - pfUI.uf.player.debuff.debuffs[i].cd:SetPoint("CENTER", pfUI.uf.player.debuff.debuffs[i], 0, 0) - pfUI.uf.player.debuff.debuffs[i].cd:SetJustifyH("LEFT") - pfUI.uf.player.debuff.debuffs[i].cd:SetShadowColor(0, 0, 0) - pfUI.uf.player.debuff.debuffs[i].cd:SetShadowOffset(0.8, -0.8) - pfUI.uf.player.debuff.debuffs[i].cd:SetTextColor(1,1,1) - - pfUI.uf.player.debuff.debuffs[i]:RegisterForClicks("RightButtonUp") - pfUI.uf.player.debuff.debuffs[i]:ClearAllPoints() - - local row = 0; - local top = 0; - if i > 8 then row = 1 end - if pfUI.uf.player.buff.buffs[1]:IsShown() then top = top + 1 end - if pfUI.uf.player.buff.buffs[9]:IsShown() then top = top + 1 end - - pfUI.uf.player.debuff.debuffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.player, "TOPLEFT", (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.debuff_size - pfUI_config.unitframes.debuff_size -1 , 1*row + pfUI_config.unitframes.debuff_size*row +1) - - pfUI.uf.player.debuff.debuffs[i]:SetWidth(pfUI_config.unitframes.debuff_size) - pfUI.uf.player.debuff.debuffs[i]:SetHeight(pfUI_config.unitframes.debuff_size) - pfUI.uf.player.debuff.debuffs[i]:SetNormalTexture(nil) - pfUI.uf.player.debuff.debuffs[i]:SetScript("OnEnter", function() - GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") - GameTooltip:SetPlayerBuff(GetPlayerBuff(id-1,"HARMFUL")) - end) - - pfUI.uf.player.debuff.debuffs[i]:SetScript("OnLeave", function() - GameTooltip:Hide() - end) - - pfUI.uf.player.debuff.debuffs[i]:SetScript("OnClick", function() - CancelPlayerBuff(GetPlayerBuff(id-1,"HARMFUL")) - end) - pfUI.uf.player.debuff.debuffs[i]:SetScript("OnUpdate", function() - for i=1, 16 do - local timeleft = GetPlayerBuffTimeLeft(GetPlayerBuff(i-1,"HARMFUL")) - if timeleft ~= nil and timeleft < 99 and timeleft ~= 0 then - pfUI.uf.player.debuff.debuffs[i].cd:SetText(ceil(timeleft)) + if GetPlayerBuffTexture(GetPlayerBuff(i-1,"HELPFUL")) then + pfUI.uf.player.buff.buffs[i]:Show() + local stacks = GetPlayerBuffApplications(GetPlayerBuff(i-1,"HELPFUL")) + if stacks > 1 then + pfUI.uf.player.buff.buffs[i].stacks:SetText(stacks) else - pfUI.uf.player.debuff.debuffs[i].cd:SetText("") + pfUI.uf.player.buff.buffs[i].stacks:SetText("") end + else + pfUI.uf.player.buff.buffs[i]:Hide() end + + end + end + + pfUI.uf.player.debuff = CreateFrame("Frame", nil) + pfUI.uf.player.debuff:RegisterEvent("PLAYER_AURAS_CHANGED") + pfUI.uf.player.debuff:SetScript("OnEvent", function() + pfUI.uf.player.debuff.RefreshBuffs() end) -end - -function pfUI.uf.player.debuff.RefreshBuffs() + pfUI.uf.player.debuff.debuffs = {} for i=1, 16 do + local id = i + pfUI.uf.player.debuff.debuffs[i] = CreateFrame("Button", "pfUIPlayerDebuff" .. i, pfUI.uf.player) + pfUI.uf.player.debuff.debuffs[i].stacks = pfUI.uf.player.debuff.debuffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.player.debuff.debuffs[i]) + pfUI.uf.player.debuff.debuffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.player.debuff.debuffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.player.debuff.debuffs[i], 2, -2) + pfUI.uf.player.debuff.debuffs[i].stacks:SetJustifyH("LEFT") + pfUI.uf.player.debuff.debuffs[i].stacks:SetShadowColor(0, 0, 0) + pfUI.uf.player.debuff.debuffs[i].stacks:SetShadowOffset(0.8, -0.8) + pfUI.uf.player.debuff.debuffs[i].stacks:SetTextColor(1,1,.5) + pfUI.uf.player.debuff.debuffs[i].cd = pfUI.uf.player.debuff.debuffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.player.debuff.debuffs[i]) + pfUI.uf.player.debuff.debuffs[i].cd:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.player.debuff.debuffs[i].cd:SetPoint("CENTER", pfUI.uf.player.debuff.debuffs[i], 0, 0) + pfUI.uf.player.debuff.debuffs[i].cd:SetJustifyH("LEFT") + pfUI.uf.player.debuff.debuffs[i].cd:SetShadowColor(0, 0, 0) + pfUI.uf.player.debuff.debuffs[i].cd:SetShadowOffset(0.8, -0.8) + pfUI.uf.player.debuff.debuffs[i].cd:SetTextColor(1,1,1) + + pfUI.uf.player.debuff.debuffs[i]:RegisterForClicks("RightButtonUp") + pfUI.uf.player.debuff.debuffs[i]:ClearAllPoints() + local row = 0; local top = 0; if i > 8 then row = 1 end if pfUI.uf.player.buff.buffs[1]:IsShown() then top = top + 1 end if pfUI.uf.player.buff.buffs[9]:IsShown() then top = top + 1 end - pfUI.uf.player.debuff.debuffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.player, "TOPLEFT", - (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.debuff_size - pfUI_config.unitframes.debuff_size -1 , - 1*row + pfUI_config.unitframes.debuff_size*row +1 + (top*(pfUI_config.unitframes.debuff_size+1)) - ) + pfUI.uf.player.debuff.debuffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.player, "TOPLEFT", (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.debuff_size - pfUI_config.unitframes.debuff_size -1 , 1*row + pfUI_config.unitframes.debuff_size*row +1) - local stacks = GetPlayerBuffApplications(GetPlayerBuff(i-1,"HARMFUL")) - pfUI.uf.player.debuff.debuffs[i]:SetBackdrop( - { bgFile = GetPlayerBuffTexture(GetPlayerBuff(i-1,"HARMFUL")), tile = false, tileSize = pfUI_config.unitframes.debuff_size, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, - insets = { left = 0, right = 0, top = 0, bottom = 0} - }) + pfUI.uf.player.debuff.debuffs[i]:SetWidth(pfUI_config.unitframes.debuff_size) + pfUI.uf.player.debuff.debuffs[i]:SetHeight(pfUI_config.unitframes.debuff_size) + pfUI.uf.player.debuff.debuffs[i]:SetNormalTexture(nil) + pfUI.uf.player.debuff.debuffs[i]:SetScript("OnEnter", function() + GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") + GameTooltip:SetPlayerBuff(GetPlayerBuff(id-1,"HARMFUL")) + end) - local _,_,dtype = UnitDebuff("player", i) - if dtype == "Magic" then - pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(0,1,1,1) - elseif dtype == "Poison" then - pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(0,1,0,1) - elseif dtype == "Curse" then - pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(1,0,1,1) - elseif dtype == "Disease" then - pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(1,1,0,1) + pfUI.uf.player.debuff.debuffs[i]:SetScript("OnLeave", function() + GameTooltip:Hide() + end) - else - pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(1,0,0,1) - end + pfUI.uf.player.debuff.debuffs[i]:SetScript("OnClick", function() + CancelPlayerBuff(GetPlayerBuff(id-1,"HARMFUL")) + end) + pfUI.uf.player.debuff.debuffs[i]:SetScript("OnUpdate", function() + for i=1, 16 do + local timeleft = GetPlayerBuffTimeLeft(GetPlayerBuff(i-1,"HARMFUL")) + if timeleft ~= nil and timeleft < 99 and timeleft ~= 0 then + pfUI.uf.player.debuff.debuffs[i].cd:SetText(ceil(timeleft)) + else + pfUI.uf.player.debuff.debuffs[i].cd:SetText("") + end + end + end) + + end + + function pfUI.uf.player.debuff.RefreshBuffs() + for i=1, 16 do + local row = 0; + local top = 0; + if i > 8 then row = 1 end + if pfUI.uf.player.buff.buffs[1]:IsShown() then top = top + 1 end + if pfUI.uf.player.buff.buffs[9]:IsShown() then top = top + 1 end + + pfUI.uf.player.debuff.debuffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.player, "TOPLEFT", + (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.debuff_size - pfUI_config.unitframes.debuff_size -1 , + 1*row + pfUI_config.unitframes.debuff_size*row +1 + (top*(pfUI_config.unitframes.debuff_size+1)) + ) - if GetPlayerBuffTexture(GetPlayerBuff(i-1,"HARMFUL")) then - pfUI.uf.player.debuff.debuffs[i]:Show() local stacks = GetPlayerBuffApplications(GetPlayerBuff(i-1,"HARMFUL")) - if stacks > 1 then - pfUI.uf.player.debuff.debuffs[i].stacks:SetText(stacks) + pfUI.uf.player.debuff.debuffs[i]:SetBackdrop( + { bgFile = GetPlayerBuffTexture(GetPlayerBuff(i-1,"HARMFUL")), tile = false, tileSize = pfUI_config.unitframes.debuff_size, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) + + local _,_,dtype = UnitDebuff("player", i) + if dtype == "Magic" then + pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(0,1,1,1) + elseif dtype == "Poison" then + pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(0,1,0,1) + elseif dtype == "Curse" then + pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(1,0,1,1) + elseif dtype == "Disease" then + pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(1,1,0,1) + else - pfUI.uf.player.debuff.debuffs[i].stacks:SetText("") + pfUI.uf.player.debuff.debuffs[i]:SetBackdropBorderColor(1,0,0,1) + end + + if GetPlayerBuffTexture(GetPlayerBuff(i-1,"HARMFUL")) then + pfUI.uf.player.debuff.debuffs[i]:Show() + local stacks = GetPlayerBuffApplications(GetPlayerBuff(i-1,"HARMFUL")) + if stacks > 1 then + pfUI.uf.player.debuff.debuffs[i].stacks:SetText(stacks) + else + pfUI.uf.player.debuff.debuffs[i].stacks:SetText("") + end + else + pfUI.uf.player.debuff.debuffs[i]:Hide() end - else - pfUI.uf.player.debuff.debuffs[i]:Hide() end end -end +end) diff --git a/modules/skin.lua b/modules/skin.lua index 531f5839..e49bccfe 100644 --- a/modules/skin.lua +++ b/modules/skin.lua @@ -1,63 +1,65 @@ -GameMenuFrameHeader:SetTexture(nil) -GameMenuFrame:SetHeight(GameMenuFrame:GetHeight()-20) -GameMenuFrame:SetWidth(GameMenuFrame:GetWidth()-30) +pfUI:RegisterModule("skin", function () + GameMenuFrameHeader:SetTexture(nil) + GameMenuFrame:SetHeight(GameMenuFrame:GetHeight()-20) + GameMenuFrame:SetWidth(GameMenuFrame:GetWidth()-30) -_, class = UnitClass("player") -local color = RAID_CLASS_COLORS[class] -local cr, cg, cb = color.r , color.g, color.b + _, class = UnitClass("player") + local color = RAID_CLASS_COLORS[class] + local cr, cg, cb = color.r , color.g, color.b -local buttons = { - "GameMenuButtonOptions", - "GameMenuButtonSoundOptions", - "GameMenuButtonUIOptions", - "GameMenuButtonKeybindings", - "GameMenuButtonMacros", - "GameMenuButtonLogout", - "GameMenuButtonQuit", - "GameMenuButtonContinue", - "StaticPopup1Button1", - "StaticPopup1Button2", - "StaticPopup2Button1", - "StaticPopup2Button2", -} -local boxes = { - "StaticPopup1", - "StaticPopup2", - "GameMenuFrame", - "DropDownList1MenuBackdrop", - "DropDownList2MenuBackdrop", - "DropDownList1Backdrop", - "DropDownList2Backdrop", -} + local buttons = { + "GameMenuButtonOptions", + "GameMenuButtonSoundOptions", + "GameMenuButtonUIOptions", + "GameMenuButtonKeybindings", + "GameMenuButtonMacros", + "GameMenuButtonLogout", + "GameMenuButtonQuit", + "GameMenuButtonContinue", + "StaticPopup1Button1", + "StaticPopup1Button2", + "StaticPopup2Button1", + "StaticPopup2Button2", + } + local boxes = { + "StaticPopup1", + "StaticPopup2", + "GameMenuFrame", + "DropDownList1MenuBackdrop", + "DropDownList2MenuBackdrop", + "DropDownList1Backdrop", + "DropDownList2Backdrop", + } -for _, button in pairs(buttons) do - local b = getglobal(button) - b:SetBackdrop(pfUI.backdrop) - b:SetNormalTexture(nil) - b:SetHighlightTexture(nil) - b:SetPushedTexture(nil) - b:SetDisabledTexture(nil) - b:SetScript("OnEnter", function() - b:SetBackdrop(pfUI.backdrop_col) - b:SetBackdropBorderColor(cr,cg,cb,1) - end) - b:SetScript("OnLeave", function() - b:SetBackdrop(pfUI.backdrop) - b:SetBackdropBorderColor(1,1,1,1) - end) - b:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") -end - -for _, box in pairs(boxes) do - local b = getglobal(box) - b:SetBackdrop(pfUI.backdrop) - b:SetBackdropColor(0,0,0,.5) -end - -for i,v in ipairs({GameMenuFrame:GetRegions()}) do - if v.SetTextColor then - v:SetTextColor(1,1,1,.5) - v:SetPoint("TOP", GameMenuFrame, "TOP", 0, -6) - v:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") + for _, button in pairs(buttons) do + local b = getglobal(button) + b:SetBackdrop(pfUI.backdrop) + b:SetNormalTexture(nil) + b:SetHighlightTexture(nil) + b:SetPushedTexture(nil) + b:SetDisabledTexture(nil) + b:SetScript("OnEnter", function() + b:SetBackdrop(pfUI.backdrop_col) + b:SetBackdropBorderColor(cr,cg,cb,1) + end) + b:SetScript("OnLeave", function() + b:SetBackdrop(pfUI.backdrop) + b:SetBackdropBorderColor(1,1,1,1) + end) + b:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") end -end + + for _, box in pairs(boxes) do + local b = getglobal(box) + b:SetBackdrop(pfUI.backdrop) + b:SetBackdropColor(0,0,0,.5) + end + + for i,v in ipairs({GameMenuFrame:GetRegions()}) do + if v.SetTextColor then + v:SetTextColor(1,1,1,.5) + v:SetPoint("TOP", GameMenuFrame, "TOP", 0, -6) + v:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 10, "OUTLINE") + end + end +end) diff --git a/modules/target.lua b/modules/target.lua index c9a256e1..8250952f 100644 --- a/modules/target.lua +++ b/modules/target.lua @@ -1,380 +1,353 @@ -TargetFrame:Hide() -TargetFrame:UnregisterAllEvents() +pfUI:RegisterModule("target", function () + TargetFrame:Hide() + TargetFrame:UnregisterAllEvents() -pfUI.uf.target = CreateFrame("Button",nil,UIParent) -pfUI.uf.target:Hide() -pfUI.uf.target:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.uf.target:SetScript("OnEvent", function() - if UnitExists("target") then - pfUI.uf.target:Show() - else - pfUI.uf.target:Hide() - end - end) -pfUI.uf.target:SetWidth(pfUI_config.unitframes.target.width) -pfUI.uf.target:SetHeight(pfUI_config.unitframes.target.height+pfUI_config.unitframes.target.pheight) -pfUI.uf.target:SetPoint("BOTTOMLEFT", UIParent, "BOTTOM", 75, 125) - -pfUI.uf.target:RegisterForClicks('LeftButtonUp', 'RightButtonUp') -pfUI.uf.target:SetScript("OnClick", function () - if arg1 == "RightButton" then - ToggleDropDownMenu(1, nil, TargetFrameDropDown, "cursor") - end - end) - -pfUI.uf.target:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.uf.target:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.uf.target:RegisterEvent("UNIT_HEALTH") -pfUI.uf.target:RegisterEvent("UNIT_MAXHEALTH") -pfUI.uf.target:RegisterEvent("UNIT_DISPLAYPOWER") -pfUI.uf.target:RegisterEvent("UNIT_MANA") -pfUI.uf.target:RegisterEvent("UNIT_MAXMANA") -pfUI.uf.target:RegisterEvent("UNIT_RAGE") -pfUI.uf.target:RegisterEvent("UNIT_MAXRAGE") -pfUI.uf.target:RegisterEvent("UNIT_ENERGY") -pfUI.uf.target:RegisterEvent("UNIT_MAXENERGY") - -pfUI.uf.target:SetScript("OnEvent", function() - if UnitExists("target") then pfUI.uf.target:Show() else - pfUI.uf.target:Hide() - return - end - - if event == "PLAYER_TARGET_CHANGED" or event == "PLAYER_ENTERING_WORLD" then - pfUI.uf.target.power.bar:SetValue(0) - pfUI.uf.target.hp.bar:SetValue(0) - end - - local hp, hpmax - if MobHealth3 then - hp, hpmax = MobHealth3:GetUnitHealth("target") - else - hp, hpmax = UnitHealth("target"), UnitHealthMax("target") - end - local power, powermax = UnitMana("target"), UnitManaMax("target") - - if hp ~= hpmax and hpmax ~= 100 then - pfUI.uf.target.hpText:SetText( hp .. " - " .. ceil(hp / hpmax * 100) .. "%") - else - pfUI.uf.target.hpText:SetText( hp) - end - - local color - if UnitIsPlayer("target") then - _, class = UnitClass("target") - color = RAID_CLASS_COLORS[class] - else - color = UnitReactionColor[UnitReaction("target", "player")] - end - local r, g, b = (color.r + .5) * .5, (color.g + .5) * .5, (color.b + .5) * .5 - - pfUI.uf.target.hp.bar:SetMinMaxValues(0, hpmax) - pfUI.uf.target.hp.bar:SetStatusBarColor(r, g, b, hp / hpmax / 4 + .75) - pfUI.uf.target.powerText:SetTextColor(r, g, b, 1) - - local perc = hp / hpmax - local r1, g1, b1, r2, g2, b2 - if perc <= 0.5 then - perc = perc * 2; r1, g1, b1 = .9, .5, .5; r2, g2, b2 = .9, .9, .5 - else - perc = perc * 2 - 1; r1, g1, b1 = .9, .9, .5; r2, g2, b2 = .5, .9, .5 - end - local r, g, b = r1 + (r2 - r1)*perc, g1 + (g2 - g1)*perc, b1 + (b2 - b1)*perc - pfUI.uf.target.hpText:SetTextColor(r, g, b,1) - - local leveldiff = UnitLevel("player") - UnitLevel("target") - local levelcolor - if leveldiff >= 9 then - levelcolor = "555555" - elseif leveldiff >= 3 then - levelcolor = "55ff55" - elseif leveldiff >= -2 then - levelcolor = "aaff55" - elseif leveldiff >= -4 then - levelcolor = "ffaa55" - else - levelcolor = "ff5555" - end - - local name = string.sub(UnitName("target"),1,25) - if strlen(UnitName("target")) > 25 then - name = name .. "..." - end - - local level = UnitLevel("target") - if level == -1 then level = "??" end - - if UnitClassification("target") == "worldboss" then - level = level .. "B" - elseif UnitClassification("target") == "rareelite" then - level = level .. "R+" - elseif UnitClassification("target") == "elite" then - level = level .. "+" - elseif UnitClassification("target") == "rare" then - level = level .. "R" - end - - pfUI.uf.target.powerText:SetText( "|cff" .. levelcolor .. level .. "|r " .. name) - - PowerColor = ManaBarColor[UnitPowerType("target")]; - pfUI.uf.target.power.bar:SetStatusBarColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5, 1) - pfUI.uf.target.power.bar:SetMinMaxValues(0, UnitManaMax("target")) - - pfUI.uf.target.hpReal = hp - pfUI.uf.target.powerReal = power - end) - -pfUI.uf.target:SetScript("OnUpdate", function() - if not UnitExists("target") then return end - - local hpDisplay = pfUI.uf.target.hp.bar:GetValue() - local hpReal = pfUI.uf.target.hpReal - local hpDiff = abs(hpReal - hpDisplay) - - if hpDisplay < hpReal then - pfUI.uf.target.hp.bar:SetValue(hpDisplay + ceil(hpDiff / pfUI_config.unitframes.animation_speed)) - elseif hpDisplay > hpReal then - pfUI.uf.target.hp.bar:SetValue(hpDisplay - ceil(hpDiff / pfUI_config.unitframes.animation_speed)) - end - - local powerDisplay = pfUI.uf.target.power.bar:GetValue() - local powerReal = pfUI.uf.target.powerReal - local powerDiff = abs(powerReal - powerDisplay) - - if powerDisplay < powerReal then - pfUI.uf.target.power.bar:SetValue(powerDisplay + ceil(powerDiff / pfUI_config.unitframes.animation_speed)) - elseif powerDisplay > powerReal then - pfUI.uf.target.power.bar:SetValue(powerDisplay - ceil(powerDiff / pfUI_config.unitframes.animation_speed)) - end - end) - -pfUI.uf.target.hp = CreateFrame("Frame",nil, pfUI.uf.target) -pfUI.uf.target.hp:SetBackdrop(pfUI.backdrop) -pfUI.uf.target.hp:SetHeight(pfUI_config.unitframes.target.height) -pfUI.uf.target.hp:SetPoint("TOPLEFT",pfUI.uf.target,"TOPLEFT") -pfUI.uf.target.hp:SetPoint("TOPRIGHT",pfUI.uf.target,"TOPRIGHT") - -pfUI.uf.target.hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.target.hp) -pfUI.uf.target.hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") - -pfUI.uf.target.hp.bar:ClearAllPoints() -pfUI.uf.target.hp.bar:SetPoint("TOPLEFT", pfUI.uf.target.hp, "TOPLEFT", 3, -3) -pfUI.uf.target.hp.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.target.hp, "BOTTOMRIGHT", -3, 3) - -pfUI.uf.target.hp.bar:SetMinMaxValues(0, 100) -pfUI.uf.target.hp.bar:SetValue(100) - -pfUI.uf.target.hp.bar.portrait = CreateFrame("PlayerModel",nil,pfUI.uf.target.hp.bar) -pfUI.uf.target.hp.bar.portrait:SetAllPoints(pfUI.uf.target.hp.bar) -pfUI.uf.target.hp.bar.portrait:RegisterEvent("UNIT_PORTRAIT_UPDATE") -pfUI.uf.target.hp.bar.portrait:RegisterEvent("UNIT_MODEL_CHANGED") -pfUI.uf.target.hp.bar.portrait:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.uf.target.hp.bar.portrait:RegisterEvent("PLAYER_TARGET_CHANGED") - -pfUI.uf.target.hp.bar.portrait:SetScript("OnEvent", function() this:Update() end) -pfUI.uf.target.hp.bar.portrait:SetScript("OnShow", function() this:Update() end) - -function pfUI.uf.target.hp.bar.portrait.Update() - pfUI.uf.target.hp.bar.portrait:SetUnit("target"); - pfUI.uf.target.hp.bar.portrait:SetCamera(0) - pfUI.uf.target.hp.bar.portrait:SetAlpha(0.10) -end - -pfUI.uf.target.power = CreateFrame("Frame",nil, pfUI.uf.target) - -pfUI.uf.target.power:SetBackdrop(pfUI.backdrop) -pfUI.uf.target.power:SetPoint("TOPLEFT",pfUI.uf.target.hp,"BOTTOMLEFT",0,3) -pfUI.uf.target.power:SetPoint("BOTTOMRIGHT",pfUI.uf.target,"BOTTOMRIGHT",0,0) - -pfUI.uf.target.power.bar = CreateFrame("StatusBar", nil, pfUI.uf.target.power) -pfUI.uf.target.power.bar:ClearAllPoints() -pfUI.uf.target.power.bar:SetPoint("TOPLEFT", pfUI.uf.target.power, "TOPLEFT", 3, -3) -pfUI.uf.target.power.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.target.power, "BOTTOMRIGHT", -3, 3) -pfUI.uf.target.power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") - -pfUI.uf.target.power.bar:SetBackdropColor(0,0,0,1) -pfUI.uf.target.power.bar:SetStatusBarColor(0,0,0) -pfUI.uf.target.power.bar:SetMinMaxValues(0, 100) -pfUI.uf.target.power.bar:SetValue(100) - -pfUI.uf.target.hpText = pfUI.uf.target:CreateFontString("Status", "HIGH", "GameFontNormal") -pfUI.uf.target.hpText:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") -pfUI.uf.target.hpText:ClearAllPoints() -pfUI.uf.target.hpText:SetParent(pfUI.uf.target.hp.bar) -pfUI.uf.target.hpText:SetPoint("RIGHT",pfUI.uf.target.hp.bar, "RIGHT", -10, 0) -pfUI.uf.target.hpText:SetJustifyH("RIGHT") -pfUI.uf.target.hpText:SetFontObject(GameFontWhite) -pfUI.uf.target.hpText:SetText("5000") - -pfUI.uf.target.powerText = pfUI.uf.target:CreateFontString("Status", "HIGH", "GameFontNormal") -pfUI.uf.target.powerText:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") -pfUI.uf.target.powerText:ClearAllPoints() -pfUI.uf.target.powerText:SetParent(pfUI.uf.target.hp.bar) -pfUI.uf.target.powerText:SetPoint("LEFT",pfUI.uf.target.hp.bar, "LEFT", 10, 0) -pfUI.uf.target.powerText:SetJustifyH("LEFT") -pfUI.uf.target.powerText:SetFontObject(GameFontWhite) -pfUI.uf.target.powerText:SetText("5000") - -pfUI.uf.target.combopoints = CreateFrame("Frame") - -pfUI.uf.target.combopoints:RegisterEvent("UNIT_COMBO_POINTS") -pfUI.uf.target.combopoints:RegisterEvent("PLAYER_COMBO_POINTS") -pfUI.uf.target.combopoints:RegisterEvent("UNIT_DISPLAYPOWER") -pfUI.uf.target.combopoints:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.uf.target.combopoints:RegisterEvent('UNIT_ENERGY'); -pfUI.uf.target.combopoints:RegisterEvent("PLAYER_ENTERING_WORLD") - -pfUI.uf.target.combopoint1 = CreateFrame("Frame") -pfUI.uf.target.combopoint2 = CreateFrame("Frame") -pfUI.uf.target.combopoint3 = CreateFrame("Frame") -pfUI.uf.target.combopoint4 = CreateFrame("Frame") -pfUI.uf.target.combopoint5 = CreateFrame("Frame") - -pfUI.uf.target.combopoints:SetScript("OnEvent", function() - if event == "PLAYER_ENTERING_WORLD" then - for point=1, 5 do - pfUI.uf.target["combopoint" .. point]:SetFrameStrata("HIGH") - pfUI.uf.target["combopoint" .. point]:SetWidth(12) - pfUI.uf.target["combopoint" .. point]:SetHeight(12) - pfUI.uf.target["combopoint" .. point]:SetBackdrop({ - bgFile = "Interface\\AddOns\\pfUI\\img\\bar", tile = true, tileSize = 8, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, - insets = {left = 0, right = 0, top = 0, bottom = 0}, - }) - pfUI.uf.target["combopoint" .. point]:SetPoint("TOPLEFT", pfUI.uf.target, "TOPRIGHT", 3, -(point - 1) * 13) - - if point < 3 then - pfUI.uf.target["combopoint" .. point]:SetBackdropColor(1, .3, .3, .75) - elseif point < 4 then - pfUI.uf.target["combopoint" .. point]:SetBackdropColor(1, 1, .3, .75) - else - pfUI.uf.target["combopoint" .. point]:SetBackdropColor(.3, 1, .3, .75) - end - pfUI.uf.target["combopoint" .. point]:Hide() - end - else - local combopoints = GetComboPoints("target") - for point=1, 5 do - pfUI.uf.target["combopoint" .. point]:Hide() - end - for point=1, combopoints do - pfUI.uf.target["combopoint" .. point]:Show() - end - end - end) - -pfUI.uf.target.buff = CreateFrame("Frame", nil) -pfUI.uf.target.buff:RegisterEvent("PLAYER_AURAS_CHANGED") -pfUI.uf.target.buff:RegisterEvent("PLAYER_AURAS_CHANGED") -pfUI.uf.target.buff:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.uf.target.buff:RegisterEvent("UNIT_AURA") -pfUI.uf.target.buff:SetScript("OnEvent", function() - pfUI.uf.target.buff.RefreshBuffs() - end) - -pfUI.uf.target.buff.buffs = {} -for i=1, 16 do - local id = i - local row = 0 - if i <= 8 then row = 0 else row = 1 end - - pfUI.uf.target.buff.buffs[i] = CreateFrame("Button", "pfUITargetBuff" .. i, pfUI.uf.target) - pfUI.uf.target.buff.buffs[i].stacks = pfUI.uf.target.buff.buffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.target.buff.buffs[i]) - pfUI.uf.target.buff.buffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - pfUI.uf.target.buff.buffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.target.buff.buffs[i], 2, -2) - pfUI.uf.target.buff.buffs[i].stacks:SetJustifyH("LEFT") - pfUI.uf.target.buff.buffs[i].stacks:SetShadowColor(0, 0, 0) - pfUI.uf.target.buff.buffs[i].stacks:SetShadowOffset(0.8, -0.8) - pfUI.uf.target.buff.buffs[i].stacks:SetTextColor(1,1,.5) - - pfUI.uf.target.buff.buffs[i]:RegisterForClicks("RightButtonUp") - pfUI.uf.target.buff.buffs[i]:ClearAllPoints() - pfUI.uf.target.buff.buffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.target, "TOPLEFT", (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.buff_size - pfUI_config.unitframes.buff_size -1 , 1*row + pfUI_config.unitframes.buff_size*row +1) - pfUI.uf.target.buff.buffs[i]:SetWidth(pfUI_config.unitframes.buff_size) - pfUI.uf.target.buff.buffs[i]:SetHeight(pfUI_config.unitframes.buff_size) - pfUI.uf.target.buff.buffs[i]:SetNormalTexture(nil) - pfUI.uf.target.buff.buffs[i]:SetScript("OnEnter", function() - GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") - GameTooltip:SetUnitBuff("target", id) - end) - - pfUI.uf.target.buff.buffs[i]:SetScript("OnLeave", function() - GameTooltip:Hide() - end) -end - -function pfUI.uf.target.buff.RefreshBuffs() - for i=1, 16 do - local texture, stacks = UnitBuff("target",i) - pfUI.uf.target.buff.buffs[i]:SetBackdrop( - { bgFile = texture, tile = false, tileSize = pfUI_config.unitframes.buff_size, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, - insets = { left = 0, right = 0, top = 0, bottom = 0} - }) - - if texture then - pfUI.uf.target.buff.buffs[i]:Show() - if stacks > 1 then - pfUI.uf.target.buff.buffs[i].stacks:SetText(stacks) + pfUI.uf.target = CreateFrame("Button",nil,UIParent) + pfUI.uf.target:Hide() + pfUI.uf.target:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.uf.target:SetScript("OnEvent", function() + if UnitExists("target") then + pfUI.uf.target:Show() else - pfUI.uf.target.buff.buffs[i].stacks:SetText("") + pfUI.uf.target:Hide() + end + end) + pfUI.uf.target:SetWidth(pfUI_config.unitframes.target.width) + pfUI.uf.target:SetHeight(pfUI_config.unitframes.target.height+pfUI_config.unitframes.target.pheight) + pfUI.uf.target:SetPoint("BOTTOMLEFT", UIParent, "BOTTOM", 75, 125) + + pfUI.uf.target:RegisterForClicks('LeftButtonUp', 'RightButtonUp') + pfUI.uf.target:SetScript("OnClick", function () + if arg1 == "RightButton" then + ToggleDropDownMenu(1, nil, TargetFrameDropDown, "cursor") + end + end) + + pfUI.uf.target:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.uf.target:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.uf.target:RegisterEvent("UNIT_HEALTH") + pfUI.uf.target:RegisterEvent("UNIT_MAXHEALTH") + pfUI.uf.target:RegisterEvent("UNIT_DISPLAYPOWER") + pfUI.uf.target:RegisterEvent("UNIT_MANA") + pfUI.uf.target:RegisterEvent("UNIT_MAXMANA") + pfUI.uf.target:RegisterEvent("UNIT_RAGE") + pfUI.uf.target:RegisterEvent("UNIT_MAXRAGE") + pfUI.uf.target:RegisterEvent("UNIT_ENERGY") + pfUI.uf.target:RegisterEvent("UNIT_MAXENERGY") + + pfUI.uf.target:SetScript("OnEvent", function() + if UnitExists("target") then pfUI.uf.target:Show() else + pfUI.uf.target:Hide() + return + end + + if event == "PLAYER_TARGET_CHANGED" or event == "PLAYER_ENTERING_WORLD" then + pfUI.uf.target.power.bar:SetValue(0) + pfUI.uf.target.hp.bar:SetValue(0) + end + + local hp, hpmax + if MobHealth3 then + hp, hpmax = MobHealth3:GetUnitHealth("target") + else + hp, hpmax = UnitHealth("target"), UnitHealthMax("target") + end + local power, powermax = UnitMana("target"), UnitManaMax("target") + + if hp ~= hpmax and hpmax ~= 100 then + pfUI.uf.target.hpText:SetText( hp .. " - " .. ceil(hp / hpmax * 100) .. "%") + else + pfUI.uf.target.hpText:SetText( hp) + end + + local color + if UnitIsPlayer("target") then + _, class = UnitClass("target") + color = RAID_CLASS_COLORS[class] + else + color = UnitReactionColor[UnitReaction("target", "player")] + end + local r, g, b = (color.r + .5) * .5, (color.g + .5) * .5, (color.b + .5) * .5 + + pfUI.uf.target.hp.bar:SetMinMaxValues(0, hpmax) + pfUI.uf.target.hp.bar:SetStatusBarColor(r, g, b, hp / hpmax / 4 + .75) + pfUI.uf.target.powerText:SetTextColor(r, g, b, 1) + + local perc = hp / hpmax + local r1, g1, b1, r2, g2, b2 + if perc <= 0.5 then + perc = perc * 2; r1, g1, b1 = .9, .5, .5; r2, g2, b2 = .9, .9, .5 + else + perc = perc * 2 - 1; r1, g1, b1 = .9, .9, .5; r2, g2, b2 = .5, .9, .5 + end + local r, g, b = r1 + (r2 - r1)*perc, g1 + (g2 - g1)*perc, b1 + (b2 - b1)*perc + pfUI.uf.target.hpText:SetTextColor(r, g, b,1) + + local leveldiff = UnitLevel("player") - UnitLevel("target") + local levelcolor + if leveldiff >= 9 then + levelcolor = "555555" + elseif leveldiff >= 3 then + levelcolor = "55ff55" + elseif leveldiff >= -2 then + levelcolor = "aaff55" + elseif leveldiff >= -4 then + levelcolor = "ffaa55" + else + levelcolor = "ff5555" + end + + local name = string.sub(UnitName("target"),1,25) + if strlen(UnitName("target")) > 25 then + name = name .. "..." + end + + local level = UnitLevel("target") + if level == -1 then level = "??" end + + if UnitClassification("target") == "worldboss" then + level = level .. "B" + elseif UnitClassification("target") == "rareelite" then + level = level .. "R+" + elseif UnitClassification("target") == "elite" then + level = level .. "+" + elseif UnitClassification("target") == "rare" then + level = level .. "R" + end + + pfUI.uf.target.powerText:SetText( "|cff" .. levelcolor .. level .. "|r " .. name) + + PowerColor = ManaBarColor[UnitPowerType("target")]; + pfUI.uf.target.power.bar:SetStatusBarColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5, 1) + pfUI.uf.target.power.bar:SetMinMaxValues(0, UnitManaMax("target")) + + pfUI.uf.target.hpReal = hp + pfUI.uf.target.powerReal = power + end) + + pfUI.uf.target:SetScript("OnUpdate", function() + if not UnitExists("target") then return end + + local hpDisplay = pfUI.uf.target.hp.bar:GetValue() + local hpReal = pfUI.uf.target.hpReal + local hpDiff = abs(hpReal - hpDisplay) + + if hpDisplay < hpReal then + pfUI.uf.target.hp.bar:SetValue(hpDisplay + ceil(hpDiff / pfUI_config.unitframes.animation_speed)) + elseif hpDisplay > hpReal then + pfUI.uf.target.hp.bar:SetValue(hpDisplay - ceil(hpDiff / pfUI_config.unitframes.animation_speed)) + end + + local powerDisplay = pfUI.uf.target.power.bar:GetValue() + local powerReal = pfUI.uf.target.powerReal + local powerDiff = abs(powerReal - powerDisplay) + + if powerDisplay < powerReal then + pfUI.uf.target.power.bar:SetValue(powerDisplay + ceil(powerDiff / pfUI_config.unitframes.animation_speed)) + elseif powerDisplay > powerReal then + pfUI.uf.target.power.bar:SetValue(powerDisplay - ceil(powerDiff / pfUI_config.unitframes.animation_speed)) + end + end) + + pfUI.uf.target.hp = CreateFrame("Frame",nil, pfUI.uf.target) + pfUI.uf.target.hp:SetBackdrop(pfUI.backdrop) + pfUI.uf.target.hp:SetHeight(pfUI_config.unitframes.target.height) + pfUI.uf.target.hp:SetPoint("TOPLEFT",pfUI.uf.target,"TOPLEFT") + pfUI.uf.target.hp:SetPoint("TOPRIGHT",pfUI.uf.target,"TOPRIGHT") + + pfUI.uf.target.hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.target.hp) + pfUI.uf.target.hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + + pfUI.uf.target.hp.bar:ClearAllPoints() + pfUI.uf.target.hp.bar:SetPoint("TOPLEFT", pfUI.uf.target.hp, "TOPLEFT", 3, -3) + pfUI.uf.target.hp.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.target.hp, "BOTTOMRIGHT", -3, 3) + + pfUI.uf.target.hp.bar:SetMinMaxValues(0, 100) + pfUI.uf.target.hp.bar:SetValue(100) + + pfUI.uf.target.hp.bar.portrait = CreateFrame("PlayerModel",nil,pfUI.uf.target.hp.bar) + pfUI.uf.target.hp.bar.portrait:SetAllPoints(pfUI.uf.target.hp.bar) + pfUI.uf.target.hp.bar.portrait:RegisterEvent("UNIT_PORTRAIT_UPDATE") + pfUI.uf.target.hp.bar.portrait:RegisterEvent("UNIT_MODEL_CHANGED") + pfUI.uf.target.hp.bar.portrait:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.uf.target.hp.bar.portrait:RegisterEvent("PLAYER_TARGET_CHANGED") + + pfUI.uf.target.hp.bar.portrait:SetScript("OnEvent", function() this:Update() end) + pfUI.uf.target.hp.bar.portrait:SetScript("OnShow", function() this:Update() end) + + function pfUI.uf.target.hp.bar.portrait.Update() + pfUI.uf.target.hp.bar.portrait:SetUnit("target"); + pfUI.uf.target.hp.bar.portrait:SetCamera(0) + pfUI.uf.target.hp.bar.portrait:SetAlpha(0.10) + end + + pfUI.uf.target.power = CreateFrame("Frame",nil, pfUI.uf.target) + + pfUI.uf.target.power:SetBackdrop(pfUI.backdrop) + pfUI.uf.target.power:SetPoint("TOPLEFT",pfUI.uf.target.hp,"BOTTOMLEFT",0,3) + pfUI.uf.target.power:SetPoint("BOTTOMRIGHT",pfUI.uf.target,"BOTTOMRIGHT",0,0) + + pfUI.uf.target.power.bar = CreateFrame("StatusBar", nil, pfUI.uf.target.power) + pfUI.uf.target.power.bar:ClearAllPoints() + pfUI.uf.target.power.bar:SetPoint("TOPLEFT", pfUI.uf.target.power, "TOPLEFT", 3, -3) + pfUI.uf.target.power.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.target.power, "BOTTOMRIGHT", -3, 3) + pfUI.uf.target.power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + + pfUI.uf.target.power.bar:SetBackdropColor(0,0,0,1) + pfUI.uf.target.power.bar:SetStatusBarColor(0,0,0) + pfUI.uf.target.power.bar:SetMinMaxValues(0, 100) + pfUI.uf.target.power.bar:SetValue(100) + + pfUI.uf.target.hpText = pfUI.uf.target:CreateFontString("Status", "HIGH", "GameFontNormal") + pfUI.uf.target.hpText:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.target.hpText:ClearAllPoints() + pfUI.uf.target.hpText:SetParent(pfUI.uf.target.hp.bar) + pfUI.uf.target.hpText:SetPoint("RIGHT",pfUI.uf.target.hp.bar, "RIGHT", -10, 0) + pfUI.uf.target.hpText:SetJustifyH("RIGHT") + pfUI.uf.target.hpText:SetFontObject(GameFontWhite) + pfUI.uf.target.hpText:SetText("5000") + + pfUI.uf.target.powerText = pfUI.uf.target:CreateFontString("Status", "HIGH", "GameFontNormal") + pfUI.uf.target.powerText:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.target.powerText:ClearAllPoints() + pfUI.uf.target.powerText:SetParent(pfUI.uf.target.hp.bar) + pfUI.uf.target.powerText:SetPoint("LEFT",pfUI.uf.target.hp.bar, "LEFT", 10, 0) + pfUI.uf.target.powerText:SetJustifyH("LEFT") + pfUI.uf.target.powerText:SetFontObject(GameFontWhite) + pfUI.uf.target.powerText:SetText("5000") + + pfUI.uf.target.combopoints = CreateFrame("Frame") + + pfUI.uf.target.combopoints:RegisterEvent("UNIT_COMBO_POINTS") + pfUI.uf.target.combopoints:RegisterEvent("PLAYER_COMBO_POINTS") + pfUI.uf.target.combopoints:RegisterEvent("UNIT_DISPLAYPOWER") + pfUI.uf.target.combopoints:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.uf.target.combopoints:RegisterEvent('UNIT_ENERGY'); + pfUI.uf.target.combopoints:RegisterEvent("PLAYER_ENTERING_WORLD") + + pfUI.uf.target.combopoint1 = CreateFrame("Frame") + pfUI.uf.target.combopoint2 = CreateFrame("Frame") + pfUI.uf.target.combopoint3 = CreateFrame("Frame") + pfUI.uf.target.combopoint4 = CreateFrame("Frame") + pfUI.uf.target.combopoint5 = CreateFrame("Frame") + + pfUI.uf.target.combopoints:SetScript("OnEvent", function() + if event == "PLAYER_ENTERING_WORLD" then + for point=1, 5 do + pfUI.uf.target["combopoint" .. point]:SetFrameStrata("HIGH") + pfUI.uf.target["combopoint" .. point]:SetWidth(12) + pfUI.uf.target["combopoint" .. point]:SetHeight(12) + pfUI.uf.target["combopoint" .. point]:SetBackdrop({ + bgFile = "Interface\\AddOns\\pfUI\\img\\bar", tile = true, tileSize = 8, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, + insets = {left = 0, right = 0, top = 0, bottom = 0}, + }) + pfUI.uf.target["combopoint" .. point]:SetPoint("TOPLEFT", pfUI.uf.target, "TOPRIGHT", 3, -(point - 1) * 13) + + if point < 3 then + pfUI.uf.target["combopoint" .. point]:SetBackdropColor(1, .3, .3, .75) + elseif point < 4 then + pfUI.uf.target["combopoint" .. point]:SetBackdropColor(1, 1, .3, .75) + else + pfUI.uf.target["combopoint" .. point]:SetBackdropColor(.3, 1, .3, .75) + end + pfUI.uf.target["combopoint" .. point]:Hide() + end + else + local combopoints = GetComboPoints("target") + for point=1, 5 do + pfUI.uf.target["combopoint" .. point]:Hide() + end + for point=1, combopoints do + pfUI.uf.target["combopoint" .. point]:Show() + end + end + end) + + pfUI.uf.target.buff = CreateFrame("Frame", nil) + pfUI.uf.target.buff:RegisterEvent("PLAYER_AURAS_CHANGED") + pfUI.uf.target.buff:RegisterEvent("PLAYER_AURAS_CHANGED") + pfUI.uf.target.buff:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.uf.target.buff:RegisterEvent("UNIT_AURA") + pfUI.uf.target.buff:SetScript("OnEvent", function() + pfUI.uf.target.buff.RefreshBuffs() + end) + + pfUI.uf.target.buff.buffs = {} + for i=1, 16 do + local id = i + local row = 0 + if i <= 8 then row = 0 else row = 1 end + + pfUI.uf.target.buff.buffs[i] = CreateFrame("Button", "pfUITargetBuff" .. i, pfUI.uf.target) + pfUI.uf.target.buff.buffs[i].stacks = pfUI.uf.target.buff.buffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.target.buff.buffs[i]) + pfUI.uf.target.buff.buffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.target.buff.buffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.target.buff.buffs[i], 2, -2) + pfUI.uf.target.buff.buffs[i].stacks:SetJustifyH("LEFT") + pfUI.uf.target.buff.buffs[i].stacks:SetShadowColor(0, 0, 0) + pfUI.uf.target.buff.buffs[i].stacks:SetShadowOffset(0.8, -0.8) + pfUI.uf.target.buff.buffs[i].stacks:SetTextColor(1,1,.5) + + pfUI.uf.target.buff.buffs[i]:RegisterForClicks("RightButtonUp") + pfUI.uf.target.buff.buffs[i]:ClearAllPoints() + pfUI.uf.target.buff.buffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.target, "TOPLEFT", (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.buff_size - pfUI_config.unitframes.buff_size -1 , 1*row + pfUI_config.unitframes.buff_size*row +1) + pfUI.uf.target.buff.buffs[i]:SetWidth(pfUI_config.unitframes.buff_size) + pfUI.uf.target.buff.buffs[i]:SetHeight(pfUI_config.unitframes.buff_size) + pfUI.uf.target.buff.buffs[i]:SetNormalTexture(nil) + pfUI.uf.target.buff.buffs[i]:SetScript("OnEnter", function() + GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") + GameTooltip:SetUnitBuff("target", id) + end) + + pfUI.uf.target.buff.buffs[i]:SetScript("OnLeave", function() + GameTooltip:Hide() + end) + end + + function pfUI.uf.target.buff.RefreshBuffs() + for i=1, 16 do + local texture, stacks = UnitBuff("target",i) + pfUI.uf.target.buff.buffs[i]:SetBackdrop( + { bgFile = texture, tile = false, tileSize = pfUI_config.unitframes.buff_size, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) + + if texture then + pfUI.uf.target.buff.buffs[i]:Show() + if stacks > 1 then + pfUI.uf.target.buff.buffs[i].stacks:SetText(stacks) + else + pfUI.uf.target.buff.buffs[i].stacks:SetText("") + end + else + pfUI.uf.target.buff.buffs[i]:Hide() end - else - pfUI.uf.target.buff.buffs[i]:Hide() end end -end -pfUI.uf.target.debuff = CreateFrame("Frame", nil) -pfUI.uf.target.debuff:RegisterEvent("PLAYER_AURAS_CHANGED") -pfUI.uf.target.debuff:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.uf.target.debuff:RegisterEvent("UNIT_AURA") -pfUI.uf.target.debuff:SetScript("OnEvent", function() - pfUI.uf.target.debuff.RefreshBuffs() - end) - -pfUI.uf.target.debuff.debuffs = {} -for i=1, 16 do - local id = i - pfUI.uf.target.debuff.debuffs[i] = CreateFrame("Button", "pfUITargetDebuff" .. i, pfUI.uf.target) - pfUI.uf.target.debuff.debuffs[i].stacks = pfUI.uf.target.debuff.debuffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.target.debuff.debuffs[i]) - pfUI.uf.target.debuff.debuffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") - pfUI.uf.target.debuff.debuffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.target.debuff.debuffs[i], 2, -2) - pfUI.uf.target.debuff.debuffs[i].stacks:SetJustifyH("LEFT") - pfUI.uf.target.debuff.debuffs[i].stacks:SetShadowColor(0, 0, 0) - pfUI.uf.target.debuff.debuffs[i].stacks:SetShadowOffset(0.8, -0.8) - pfUI.uf.target.debuff.debuffs[i].stacks:SetTextColor(1,1,.5) - pfUI.uf.target.debuff.debuffs[i]:RegisterForClicks("RightButtonUp") - pfUI.uf.target.debuff.debuffs[i]:ClearAllPoints() - - local row = 0; - local top = 0; - if i > 8 then row = 1 end - if pfUI.uf.target.buff.buffs[1]:IsShown() then top = top + 1 end - if pfUI.uf.target.buff.buffs[9]:IsShown() then top = top + 1 end - - pfUI.uf.target.debuff.debuffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.target, "TOPLEFT", - (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.debuff_size - pfUI_config.unitframes.debuff_size -1 , - 1*row + pfUI_config.unitframes.debuff_size*row +1 + (top*(pfUI_config.unitframes.debuff_size+1)) - ) - - pfUI.uf.target.debuff.debuffs[i]:SetWidth(pfUI_config.unitframes.debuff_size) - pfUI.uf.target.debuff.debuffs[i]:SetHeight(pfUI_config.unitframes.debuff_size) - pfUI.uf.target.debuff.debuffs[i]:SetNormalTexture(nil) - pfUI.uf.target.debuff.debuffs[i]:SetScript("OnEnter", function() - GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") - GameTooltip:SetUnitDebuff("target", id) + pfUI.uf.target.debuff = CreateFrame("Frame", nil) + pfUI.uf.target.debuff:RegisterEvent("PLAYER_AURAS_CHANGED") + pfUI.uf.target.debuff:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.uf.target.debuff:RegisterEvent("UNIT_AURA") + pfUI.uf.target.debuff:SetScript("OnEvent", function() + pfUI.uf.target.debuff.RefreshBuffs() end) - pfUI.uf.target.debuff.debuffs[i]:SetScript("OnLeave", function() - GameTooltip:Hide() - end) - pfUI.uf.target.debuff.debuffs[i]:SetScript("OnClick", function() - CancelPlayerBuff(GetPlayerBuff(id-1,"HARMFUL")) - end) -end -function pfUI.uf.target.debuff.RefreshBuffs() + pfUI.uf.target.debuff.debuffs = {} for i=1, 16 do + local id = i + pfUI.uf.target.debuff.debuffs[i] = CreateFrame("Button", "pfUITargetDebuff" .. i, pfUI.uf.target) + pfUI.uf.target.debuff.debuffs[i].stacks = pfUI.uf.target.debuff.debuffs[i]:CreateFontString(nil, "OVERLAY", pfUI.uf.target.debuff.debuffs[i]) + pfUI.uf.target.debuff.debuffs[i].stacks:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 10, "OUTLINE") + pfUI.uf.target.debuff.debuffs[i].stacks:SetPoint("BOTTOMRIGHT", pfUI.uf.target.debuff.debuffs[i], 2, -2) + pfUI.uf.target.debuff.debuffs[i].stacks:SetJustifyH("LEFT") + pfUI.uf.target.debuff.debuffs[i].stacks:SetShadowColor(0, 0, 0) + pfUI.uf.target.debuff.debuffs[i].stacks:SetShadowOffset(0.8, -0.8) + pfUI.uf.target.debuff.debuffs[i].stacks:SetTextColor(1,1,.5) + pfUI.uf.target.debuff.debuffs[i]:RegisterForClicks("RightButtonUp") + pfUI.uf.target.debuff.debuffs[i]:ClearAllPoints() + local row = 0; local top = 0; if i > 8 then row = 1 end @@ -385,33 +358,62 @@ function pfUI.uf.target.debuff.RefreshBuffs() (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.debuff_size - pfUI_config.unitframes.debuff_size -1 , 1*row + pfUI_config.unitframes.debuff_size*row +1 + (top*(pfUI_config.unitframes.debuff_size+1)) ) - local texture, stacks = UnitDebuff("target",i) - pfUI.uf.target.debuff.debuffs[i]:SetBackdrop( - { bgFile = texture, tile = false, tileSize = pfUI_config.unitframes.debuff_size, - edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, - insets = { left = 0, right = 0, top = 0, bottom = 0} - }) - local _,_,dtype = UnitDebuff("target", i) - if dtype == "Magic" then - pfUI.uf.target.debuff.debuffs[i]:SetBackdropBorderColor(0,1,1,1) - elseif dtype == "Poison" then - pfUI.uf.target.debuff.debuffs[i]:SetBackdropBorderColor(0,1,0,1) - elseif dtype == "Curse" then - pfUI.uf.target.debuff.debuffs[i]:SetBackdropBorderColor(1,0,1,1) - else - pfUI.uf.target.debuff.debuffs[i]:SetBackdropBorderColor(1,0,0,1) - end + pfUI.uf.target.debuff.debuffs[i]:SetWidth(pfUI_config.unitframes.debuff_size) + pfUI.uf.target.debuff.debuffs[i]:SetHeight(pfUI_config.unitframes.debuff_size) + pfUI.uf.target.debuff.debuffs[i]:SetNormalTexture(nil) + pfUI.uf.target.debuff.debuffs[i]:SetScript("OnEnter", function() + GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT") + GameTooltip:SetUnitDebuff("target", id) + end) + pfUI.uf.target.debuff.debuffs[i]:SetScript("OnLeave", function() + GameTooltip:Hide() + end) + pfUI.uf.target.debuff.debuffs[i]:SetScript("OnClick", function() + CancelPlayerBuff(GetPlayerBuff(id-1,"HARMFUL")) + end) + end - if texture then - pfUI.uf.target.debuff.debuffs[i]:Show() - if stacks > 1 then - pfUI.uf.target.debuff.debuffs[i].stacks:SetText(stacks) + function pfUI.uf.target.debuff.RefreshBuffs() + for i=1, 16 do + local row = 0; + local top = 0; + if i > 8 then row = 1 end + if pfUI.uf.target.buff.buffs[1]:IsShown() then top = top + 1 end + if pfUI.uf.target.buff.buffs[9]:IsShown() then top = top + 1 end + + pfUI.uf.target.debuff.debuffs[i]:SetPoint("BOTTOMLEFT", pfUI.uf.target, "TOPLEFT", + (i-8*row)*1 + (i-8*row)*pfUI_config.unitframes.debuff_size - pfUI_config.unitframes.debuff_size -1 , + 1*row + pfUI_config.unitframes.debuff_size*row +1 + (top*(pfUI_config.unitframes.debuff_size+1)) + ) + local texture, stacks = UnitDebuff("target",i) + pfUI.uf.target.debuff.debuffs[i]:SetBackdrop( + { bgFile = texture, tile = false, tileSize = pfUI_config.unitframes.debuff_size, + edgeFile = "Interface\\AddOns\\pfUI\\img\\border_col", edgeSize = 8, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) + + local _,_,dtype = UnitDebuff("target", i) + if dtype == "Magic" then + pfUI.uf.target.debuff.debuffs[i]:SetBackdropBorderColor(0,1,1,1) + elseif dtype == "Poison" then + pfUI.uf.target.debuff.debuffs[i]:SetBackdropBorderColor(0,1,0,1) + elseif dtype == "Curse" then + pfUI.uf.target.debuff.debuffs[i]:SetBackdropBorderColor(1,0,1,1) else - pfUI.uf.target.debuff.debuffs[i].stacks:SetText("") + pfUI.uf.target.debuff.debuffs[i]:SetBackdropBorderColor(1,0,0,1) + end + + if texture then + pfUI.uf.target.debuff.debuffs[i]:Show() + if stacks > 1 then + pfUI.uf.target.debuff.debuffs[i].stacks:SetText(stacks) + else + pfUI.uf.target.debuff.debuffs[i].stacks:SetText("") + end + else + pfUI.uf.target.debuff.debuffs[i]:Hide() end - else - pfUI.uf.target.debuff.debuffs[i]:Hide() end end -end +end) diff --git a/modules/targettarget.lua b/modules/targettarget.lua index d9f67f89..207e995c 100644 --- a/modules/targettarget.lua +++ b/modules/targettarget.lua @@ -1,118 +1,120 @@ -pfUI.uf.targettargetNotify = CreateFrame("Button",nil,UIParent) -pfUI.uf.targettargetNotify:SetScript("OnUpdate", function() - if UnitExists("targettarget") then pfUI.uf.targettarget:Show() else pfUI.uf.targettarget:Hide() end - end) +pfUI:RegisterModule("targettarget", function () + pfUI.uf.targettargetNotify = CreateFrame("Button",nil,UIParent) + pfUI.uf.targettargetNotify:SetScript("OnUpdate", function() + if UnitExists("targettarget") then pfUI.uf.targettarget:Show() else pfUI.uf.targettarget:Hide() end + end) -pfUI.uf.targettarget = CreateFrame("Button",nil,UIParent) -pfUI.uf.targettarget:Hide() + pfUI.uf.targettarget = CreateFrame("Button",nil,UIParent) + pfUI.uf.targettarget:Hide() -pfUI.uf.targettarget:SetWidth(100) -pfUI.uf.targettarget:SetHeight(25) -pfUI.uf.targettarget:SetPoint("BOTTOM", UIParent , "BOTTOM", 0, 125) -pfUI.uf.targettarget:SetBackdrop(pfUI.backdrop) + pfUI.uf.targettarget:SetWidth(100) + pfUI.uf.targettarget:SetHeight(25) + pfUI.uf.targettarget:SetPoint("BOTTOM", UIParent , "BOTTOM", 0, 125) + pfUI.uf.targettarget:SetBackdrop(pfUI.backdrop) -pfUI.uf.targettarget:RegisterForClicks('LeftButtonUp', 'RightButtonUp') -pfUI.uf.targettarget:SetScript("OnClick", function () - TargetUnit("targettarget") - end) -pfUI.uf.targettarget.bg = CreateFrame("Frame",nil,pfUI.uf.targettarget) -pfUI.uf.targettarget.bg = pfUI.uf.targettarget:CreateTexture(nil,"BACKGROUND") -pfUI.uf.targettarget.bg:SetAllPoints(pfUI.uf.targettarget) + pfUI.uf.targettarget:RegisterForClicks('LeftButtonUp', 'RightButtonUp') + pfUI.uf.targettarget:SetScript("OnClick", function () + TargetUnit("targettarget") + end) + pfUI.uf.targettarget.bg = CreateFrame("Frame",nil,pfUI.uf.targettarget) + pfUI.uf.targettarget.bg = pfUI.uf.targettarget:CreateTexture(nil,"BACKGROUND") + pfUI.uf.targettarget.bg:SetAllPoints(pfUI.uf.targettarget) -pfUI.uf.targettarget:SetScript("OnUpdate", function() - if not UnitExists("targettarget") then pfUI.uf.targettarget:Hide(); return end + pfUI.uf.targettarget:SetScript("OnUpdate", function() + if not UnitExists("targettarget") then pfUI.uf.targettarget:Hide(); return end - local color - if UnitIsPlayer("targettarget") then - _, class = UnitClass("targettarget") - color = RAID_CLASS_COLORS[class] - else - color = UnitReactionColor[UnitReaction("targettarget", "player")] - end + local color + if UnitIsPlayer("targettarget") then + _, class = UnitClass("targettarget") + color = RAID_CLASS_COLORS[class] + else + color = UnitReactionColor[UnitReaction("targettarget", "player")] + end - pfUI.uf.targettarget.hp.bar:SetMinMaxValues(0, UnitHealthMax("targettarget")) + pfUI.uf.targettarget.hp.bar:SetMinMaxValues(0, UnitHealthMax("targettarget")) - local r, g, b = (color.r + .5) * .5, (color.g + .5) * .5, (color.b + .5) * .5 + local r, g, b = (color.r + .5) * .5, (color.g + .5) * .5, (color.b + .5) * .5 - pfUI.uf.targettarget.hp.bar:SetStatusBarColor(r, g, b, UnitHealth("targettarget") / UnitHealthMax("targettarget") / 4 + .75) - pfUI.uf.targettarget.hp.text:SetTextColor(r+.3,g+.3,b+.3, 1) - pfUI.uf.targettarget.hp.text:SetText( UnitName("targettarget")) + pfUI.uf.targettarget.hp.bar:SetStatusBarColor(r, g, b, UnitHealth("targettarget") / UnitHealthMax("targettarget") / 4 + .75) + pfUI.uf.targettarget.hp.text:SetTextColor(r+.3,g+.3,b+.3, 1) + pfUI.uf.targettarget.hp.text:SetText( UnitName("targettarget")) - local display, real - display = pfUI.uf.targettarget.hp.bar:GetValue() - real = UnitHealth("targettarget") - diff = abs(real - display) - if display < real then - pfUI.uf.targettarget.hp.bar:SetValue(display + ceil(diff / pfUI_config.unitframes.animation_speed)) - elseif display > real then - pfUI.uf.targettarget.hp.bar:SetValue(display - ceil(diff / pfUI_config.unitframes.animation_speed)) - end + local display, real + display = pfUI.uf.targettarget.hp.bar:GetValue() + real = UnitHealth("targettarget") + diff = abs(real - display) + if display < real then + pfUI.uf.targettarget.hp.bar:SetValue(display + ceil(diff / pfUI_config.unitframes.animation_speed)) + elseif display > real then + pfUI.uf.targettarget.hp.bar:SetValue(display - ceil(diff / pfUI_config.unitframes.animation_speed)) + end - PowerColor = ManaBarColor[UnitPowerType("targettarget")]; - pfUI.uf.targettarget.power.bar:SetStatusBarColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5, 1) - pfUI.uf.targettarget.power.bar:SetMinMaxValues(0, UnitManaMax("targettarget")) + PowerColor = ManaBarColor[UnitPowerType("targettarget")]; + pfUI.uf.targettarget.power.bar:SetStatusBarColor(PowerColor.r + .5, PowerColor.g +.5, PowerColor.b +.5, 1) + pfUI.uf.targettarget.power.bar:SetMinMaxValues(0, UnitManaMax("targettarget")) - local display, real - display = pfUI.uf.targettarget.power.bar:GetValue() - real = UnitMana("targettarget") - diff = abs(real - display) - if display < real then - pfUI.uf.targettarget.power.bar:SetValue(display + ceil(diff / pfUI_config.unitframes.animation_speed)) - elseif display > real then - pfUI.uf.targettarget.power.bar:SetValue(display - ceil(diff / pfUI_config.unitframes.animation_speed)) - end - end) + local display, real + display = pfUI.uf.targettarget.power.bar:GetValue() + real = UnitMana("targettarget") + diff = abs(real - display) + if display < real then + pfUI.uf.targettarget.power.bar:SetValue(display + ceil(diff / pfUI_config.unitframes.animation_speed)) + elseif display > real then + pfUI.uf.targettarget.power.bar:SetValue(display - ceil(diff / pfUI_config.unitframes.animation_speed)) + end + end) -pfUI.uf.targettarget.hp = CreateFrame("Frame",nil, pfUI.uf.targettarget) -pfUI.uf.targettarget.hp:SetBackdrop(pfUI.backdrop) -pfUI.uf.targettarget.hp:SetPoint("TOPLEFT", pfUI.uf.targettarget, "TOPLEFT", 0, 0) -pfUI.uf.targettarget.hp:SetPoint("BOTTOMRIGHT", pfUI.uf.targettarget, "BOTTOMRIGHT", 0, 0) -pfUI.uf.targettarget.hp:SetPoint("TOP",pfUI.uf.targettarget,"TOP") -pfUI.uf.targettarget.hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.targettarget.hp) -pfUI.uf.targettarget.hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") -pfUI.uf.targettarget.hp.bar:ClearAllPoints() -pfUI.uf.targettarget.hp.bar:SetPoint("TOPLEFT", pfUI.uf.targettarget.hp, "TOPLEFT", 3, -3) -pfUI.uf.targettarget.hp.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.targettarget.hp, "BOTTOMRIGHT", -3, 3) -pfUI.uf.targettarget.hp.bar:SetMinMaxValues(0, 100) -pfUI.uf.targettarget.hp.bar:SetValue(100) + pfUI.uf.targettarget.hp = CreateFrame("Frame",nil, pfUI.uf.targettarget) + pfUI.uf.targettarget.hp:SetBackdrop(pfUI.backdrop) + pfUI.uf.targettarget.hp:SetPoint("TOPLEFT", pfUI.uf.targettarget, "TOPLEFT", 0, 0) + pfUI.uf.targettarget.hp:SetPoint("BOTTOMRIGHT", pfUI.uf.targettarget, "BOTTOMRIGHT", 0, 0) + pfUI.uf.targettarget.hp:SetPoint("TOP",pfUI.uf.targettarget,"TOP") + pfUI.uf.targettarget.hp.bar = CreateFrame("StatusBar", nil, pfUI.uf.targettarget.hp) + pfUI.uf.targettarget.hp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + pfUI.uf.targettarget.hp.bar:ClearAllPoints() + pfUI.uf.targettarget.hp.bar:SetPoint("TOPLEFT", pfUI.uf.targettarget.hp, "TOPLEFT", 3, -3) + pfUI.uf.targettarget.hp.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.targettarget.hp, "BOTTOMRIGHT", -3, 3) + pfUI.uf.targettarget.hp.bar:SetMinMaxValues(0, 100) + pfUI.uf.targettarget.hp.bar:SetValue(100) -pfUI.uf.targettarget.hp.bar.portrait = CreateFrame("PlayerModel",nil,pfUI.uf.targettarget.hp.bar) -pfUI.uf.targettarget.hp.bar.portrait:SetAllPoints(pfUI.uf.targettarget.hp.bar) -pfUI.uf.targettarget.hp.bar.portrait:RegisterEvent("UNIT_PORTRAIT_UPDATE") -pfUI.uf.targettarget.hp.bar.portrait:RegisterEvent("UNIT_MODEL_CHANGED") -pfUI.uf.targettarget.hp.bar.portrait:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.uf.targettarget.hp.bar.portrait:RegisterEvent("PLAYER_TARGET_CHANGED") + pfUI.uf.targettarget.hp.bar.portrait = CreateFrame("PlayerModel",nil,pfUI.uf.targettarget.hp.bar) + pfUI.uf.targettarget.hp.bar.portrait:SetAllPoints(pfUI.uf.targettarget.hp.bar) + pfUI.uf.targettarget.hp.bar.portrait:RegisterEvent("UNIT_PORTRAIT_UPDATE") + pfUI.uf.targettarget.hp.bar.portrait:RegisterEvent("UNIT_MODEL_CHANGED") + pfUI.uf.targettarget.hp.bar.portrait:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.uf.targettarget.hp.bar.portrait:RegisterEvent("PLAYER_TARGET_CHANGED") -pfUI.uf.targettarget.hp.bar.portrait:SetScript("OnEvent", function() this.Update() end) -pfUI.uf.targettarget.hp.bar.portrait:SetScript("OnShow", function() this.Update() end) + pfUI.uf.targettarget.hp.bar.portrait:SetScript("OnEvent", function() this.Update() end) + pfUI.uf.targettarget.hp.bar.portrait:SetScript("OnShow", function() this.Update() end) -function pfUI.uf.targettarget.hp.bar.portrait.Update() - pfUI.uf.targettarget.hp.bar.portrait:SetUnit("targettarget"); - pfUI.uf.targettarget.hp.bar.portrait:SetCamera(0) - pfUI.uf.targettarget.hp.bar.portrait:SetAlpha(0.10) -end + function pfUI.uf.targettarget.hp.bar.portrait.Update() + pfUI.uf.targettarget.hp.bar.portrait:SetUnit("targettarget"); + pfUI.uf.targettarget.hp.bar.portrait:SetCamera(0) + pfUI.uf.targettarget.hp.bar.portrait:SetAlpha(0.10) + end -pfUI.uf.targettarget.power = CreateFrame("Frame",nil, pfUI.uf.targettarget) -pfUI.uf.targettarget.power:SetBackdrop(pfUI.backdrop) -pfUI.uf.targettarget.power:SetPoint("TOPLEFT", pfUI.uf.targettarget.hp, "BOTTOMLEFT", 0, -3) -pfUI.uf.targettarget.power:SetPoint("TOPRIGHT", pfUI.uf.targettarget.hp, "BOTTOMRIGHT", 0, -3) -pfUI.uf.targettarget.power:SetHeight(8) -pfUI.uf.targettarget.power:SetPoint("TOPLEFT",pfUI.uf.targettarget.hp,"BOTTOMLEFT",0,3) -pfUI.uf.targettarget.power.bar = CreateFrame("StatusBar", nil, pfUI.uf.targettarget.power) -pfUI.uf.targettarget.power.bar:ClearAllPoints() -pfUI.uf.targettarget.power.bar:SetPoint("TOPLEFT", pfUI.uf.targettarget.power, "TOPLEFT", 3, -3) -pfUI.uf.targettarget.power.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.targettarget.power, "BOTTOMRIGHT", -3, 3) -pfUI.uf.targettarget.power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") -pfUI.uf.targettarget.power.bar:SetBackdropColor(0,0,0,1) -pfUI.uf.targettarget.power.bar:SetStatusBarColor(0,0,0) -pfUI.uf.targettarget.power.bar:SetMinMaxValues(0, 100) -pfUI.uf.targettarget.power.bar:SetValue(100) + pfUI.uf.targettarget.power = CreateFrame("Frame",nil, pfUI.uf.targettarget) + pfUI.uf.targettarget.power:SetBackdrop(pfUI.backdrop) + pfUI.uf.targettarget.power:SetPoint("TOPLEFT", pfUI.uf.targettarget.hp, "BOTTOMLEFT", 0, -3) + pfUI.uf.targettarget.power:SetPoint("TOPRIGHT", pfUI.uf.targettarget.hp, "BOTTOMRIGHT", 0, -3) + pfUI.uf.targettarget.power:SetHeight(8) + pfUI.uf.targettarget.power:SetPoint("TOPLEFT",pfUI.uf.targettarget.hp,"BOTTOMLEFT",0,3) + pfUI.uf.targettarget.power.bar = CreateFrame("StatusBar", nil, pfUI.uf.targettarget.power) + pfUI.uf.targettarget.power.bar:ClearAllPoints() + pfUI.uf.targettarget.power.bar:SetPoint("TOPLEFT", pfUI.uf.targettarget.power, "TOPLEFT", 3, -3) + pfUI.uf.targettarget.power.bar:SetPoint("BOTTOMRIGHT", pfUI.uf.targettarget.power, "BOTTOMRIGHT", -3, 3) + pfUI.uf.targettarget.power.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + pfUI.uf.targettarget.power.bar:SetBackdropColor(0,0,0,1) + pfUI.uf.targettarget.power.bar:SetStatusBarColor(0,0,0) + pfUI.uf.targettarget.power.bar:SetMinMaxValues(0, 100) + pfUI.uf.targettarget.power.bar:SetValue(100) -pfUI.uf.targettarget.hp.text = pfUI.uf.targettarget.hp.bar:CreateFontString("Status", "LOW", "GameFontNormal") -pfUI.uf.targettarget.hp.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 8, "OUTLINE") -pfUI.uf.targettarget.hp.text:ClearAllPoints() -pfUI.uf.targettarget.hp.text:SetAllPoints(pfUI.uf.targettarget.hp.bar) -pfUI.uf.targettarget.hp.text:SetPoint("CENTER", 0, 0) -pfUI.uf.targettarget.hp.text:SetJustifyH("CENTER") -pfUI.uf.targettarget.hp.text:SetFontObject(GameFontWhite) -pfUI.uf.targettarget.hp.text:SetText("n/a") + pfUI.uf.targettarget.hp.text = pfUI.uf.targettarget.hp.bar:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.uf.targettarget.hp.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\homespun.ttf", 8, "OUTLINE") + pfUI.uf.targettarget.hp.text:ClearAllPoints() + pfUI.uf.targettarget.hp.text:SetAllPoints(pfUI.uf.targettarget.hp.bar) + pfUI.uf.targettarget.hp.text:SetPoint("CENTER", 0, 0) + pfUI.uf.targettarget.hp.text:SetJustifyH("CENTER") + pfUI.uf.targettarget.hp.text:SetFontObject(GameFontWhite) + pfUI.uf.targettarget.hp.text:SetText("n/a") +end) diff --git a/modules/uf_tukui.lua b/modules/uf_tukui.lua index 78b82524..37e06f40 100644 --- a/modules/uf_tukui.lua +++ b/modules/uf_tukui.lua @@ -1,25 +1,27 @@ -if pfUI_config.unitframes.layout == "tukui" then - pfUI.uf.player.caption = CreateFrame("Frame",nil, pfUI.uf.player) - pfUI.uf.player.caption:SetBackdrop(pfUI.backdrop) - pfUI.uf.player.caption:SetHeight(18) - pfUI.uf.player.caption:SetPoint("TOPRIGHT",pfUI.uf.player,"BOTTOMRIGHT",0,-1) - pfUI.uf.player.caption:SetPoint("TOPLEFT",pfUI.uf.player,"BOTTOMLEFT",0,-1) +pfUI:RegisterModule("uf_tukui", function () + if pfUI_config.unitframes.layout == "tukui" then + pfUI.uf.player.caption = CreateFrame("Frame",nil, pfUI.uf.player) + pfUI.uf.player.caption:SetBackdrop(pfUI.backdrop) + pfUI.uf.player.caption:SetHeight(18) + pfUI.uf.player.caption:SetPoint("TOPRIGHT",pfUI.uf.player,"BOTTOMRIGHT",0,-1) + pfUI.uf.player.caption:SetPoint("TOPLEFT",pfUI.uf.player,"BOTTOMLEFT",0,-1) - pfUI.uf.player.hpText:SetParent(pfUI.uf.player.caption) - pfUI.uf.player.hpText:SetPoint("RIGHT",pfUI.uf.player.caption, "RIGHT", -3, 0) + pfUI.uf.player.hpText:SetParent(pfUI.uf.player.caption) + pfUI.uf.player.hpText:SetPoint("RIGHT",pfUI.uf.player.caption, "RIGHT", -3, 0) - pfUI.uf.player.powerText:SetParent(pfUI.uf.player.caption) - pfUI.uf.player.powerText:SetPoint("LEFT",pfUI.uf.player.caption, "LEFT", 5, 0) + pfUI.uf.player.powerText:SetParent(pfUI.uf.player.caption) + pfUI.uf.player.powerText:SetPoint("LEFT",pfUI.uf.player.caption, "LEFT", 5, 0) - pfUI.uf.target.caption = CreateFrame("Frame",nil, pfUI.uf.target) - pfUI.uf.target.caption:SetBackdrop(pfUI.backdrop) - pfUI.uf.target.caption:SetHeight(18) - pfUI.uf.target.caption:SetPoint("TOPRIGHT",pfUI.uf.target,"BOTTOMRIGHT",0,-1) - pfUI.uf.target.caption:SetPoint("TOPLEFT",pfUI.uf.target,"BOTTOMLEFT",0,-1) + pfUI.uf.target.caption = CreateFrame("Frame",nil, pfUI.uf.target) + pfUI.uf.target.caption:SetBackdrop(pfUI.backdrop) + pfUI.uf.target.caption:SetHeight(18) + pfUI.uf.target.caption:SetPoint("TOPRIGHT",pfUI.uf.target,"BOTTOMRIGHT",0,-1) + pfUI.uf.target.caption:SetPoint("TOPLEFT",pfUI.uf.target,"BOTTOMLEFT",0,-1) - pfUI.uf.target.hpText:SetParent(pfUI.uf.target.caption) - pfUI.uf.target.hpText:SetPoint("RIGHT",pfUI.uf.target.caption, "RIGHT", -3, 0) + pfUI.uf.target.hpText:SetParent(pfUI.uf.target.caption) + pfUI.uf.target.hpText:SetPoint("RIGHT",pfUI.uf.target.caption, "RIGHT", -3, 0) - pfUI.uf.target.powerText:SetParent(pfUI.uf.target.caption) - pfUI.uf.target.powerText:SetPoint("LEFT",pfUI.uf.target.caption, "LEFT", 5, 0) -end + pfUI.uf.target.powerText:SetParent(pfUI.uf.target.caption) + pfUI.uf.target.powerText:SetPoint("LEFT",pfUI.uf.target.caption, "LEFT", 5, 0) + end +end) diff --git a/modules/xpbar.lua b/modules/xpbar.lua index bda00dc3..2d6e2d9b 100644 --- a/modules/xpbar.lua +++ b/modules/xpbar.lua @@ -1,137 +1,139 @@ -pfUI.xp = CreateFrame("Frame",nil, pfUI.bars.bottom) -pfUI.xp:SetWidth(10) -pfUI.xp:SetPoint("TOPLEFT",pfUI.chat.left,"TOPRIGHT", 1, 0) -pfUI.xp:SetPoint("BOTTOMLEFT",pfUI.chat.left,"BOTTOMRIGHT",1, 0) -pfUI.xp:SetFrameStrata("BACKGROUND") -pfUI.xp:SetBackdrop(pfUI.backdrop) -pfUI.xp:RegisterEvent("PLAYER_LEVEL_UP") -pfUI.xp:RegisterEvent("PLAYER_XP_UPDATE") -pfUI.xp:RegisterEvent("PLAYER_ENTERING_WORLD") +pfUI:RegisterModule("xpbar", function () + pfUI.xp = CreateFrame("Frame",nil, pfUI.bars.bottom) + pfUI.xp:SetWidth(10) + pfUI.xp:SetPoint("TOPLEFT",pfUI.chat.left,"TOPRIGHT", 1, 0) + pfUI.xp:SetPoint("BOTTOMLEFT",pfUI.chat.left,"BOTTOMRIGHT",1, 0) + pfUI.xp:SetFrameStrata("BACKGROUND") + pfUI.xp:SetBackdrop(pfUI.backdrop) + pfUI.xp:RegisterEvent("PLAYER_LEVEL_UP") + pfUI.xp:RegisterEvent("PLAYER_XP_UPDATE") + pfUI.xp:RegisterEvent("PLAYER_ENTERING_WORLD") + + pfUI.xp:SetScript("OnEvent", function() + if UnitXPMax("player") ~= 0 then + pfUI.xp.bar:SetMinMaxValues(0, UnitXPMax("player")) + pfUI.xp.bar:SetValue(UnitXP("player")) + if GetXPExhaustion() then + pfUI.xp.restedbar:Show() + pfUI.xp.restedbar:SetMinMaxValues(0, UnitXPMax("player")) + pfUI.xp.restedbar:SetValue(UnitXP("player") + GetXPExhaustion()) + pfUI.xp.restedbar:SetAlpha(pfUI.xp:GetAlpha()/2) + else + pfUI.xp.restedbar:Hide() + end + pfUI.xp:SetAlpha(1) + pfUI.xp.tick = GetTime() + 3.00 -pfUI.xp:SetScript("OnEvent", function() - if UnitXPMax("player") ~= 0 then - pfUI.xp.bar:SetMinMaxValues(0, UnitXPMax("player")) - pfUI.xp.bar:SetValue(UnitXP("player")) - if GetXPExhaustion() then - pfUI.xp.restedbar:Show() - pfUI.xp.restedbar:SetMinMaxValues(0, UnitXPMax("player")) - pfUI.xp.restedbar:SetValue(UnitXP("player") + GetXPExhaustion()) - pfUI.xp.restedbar:SetAlpha(pfUI.xp:GetAlpha()/2) else - pfUI.xp.restedbar:Hide() + pfUI.xp:Hide(0) end + end) + + pfUI.xp:SetScript("OnUpdate",function() + if pfUI.xp:GetAlpha() == 0 or pfUI.xp.mouseover == true then return end + if not pfUI.xp.tick then + pfUI.xp.tick = GetTime() + 0.01 + end + + if GetTime() >= pfUI.xp.tick then + pfUI.xp.tick = nil + pfUI.xp:SetAlpha(pfUI.xp:GetAlpha() - .05) + pfUI.xp.restedbar:SetAlpha(pfUI.xp:GetAlpha()/2) + end + end); + + pfUI.xp:EnableMouse() + pfUI.xp:SetScript("OnEnter", function() + pfUI.xp.mouseover = true pfUI.xp:SetAlpha(1) - pfUI.xp.tick = GetTime() + 3.00 - - else - pfUI.xp:Hide(0) - end - end) - -pfUI.xp:SetScript("OnUpdate",function() - if pfUI.xp:GetAlpha() == 0 or pfUI.xp.mouseover == true then return end - if not pfUI.xp.tick then - pfUI.xp.tick = GetTime() + 0.01 - end - - if GetTime() >= pfUI.xp.tick then - pfUI.xp.tick = nil - pfUI.xp:SetAlpha(pfUI.xp:GetAlpha() - .05) pfUI.xp.restedbar:SetAlpha(pfUI.xp:GetAlpha()/2) - end - end); -pfUI.xp:EnableMouse() -pfUI.xp:SetScript("OnEnter", function() - pfUI.xp.mouseover = true - pfUI.xp:SetAlpha(1) - pfUI.xp.restedbar:SetAlpha(pfUI.xp:GetAlpha()/2) + end) - end) + pfUI.xp:SetScript("OnLeave", function() + pfUI.xp.mouseover = false + pfUI.xp.tick = GetTime() + 3.00 + end) -pfUI.xp:SetScript("OnLeave", function() - pfUI.xp.mouseover = false - pfUI.xp.tick = GetTime() + 3.00 - end) + pfUI.xp.bar = CreateFrame("StatusBar", nil, pfUI.xp) + pfUI.xp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + pfUI.xp.bar:ClearAllPoints() + pfUI.xp.bar:SetPoint("TOPLEFT", pfUI.xp, "TOPLEFT", 3, -3) + pfUI.xp.bar:SetPoint("BOTTOMRIGHT", pfUI.xp, "BOTTOMRIGHT", -3, 3) + pfUI.xp.bar:SetStatusBarColor(.25,.25,1,1) + pfUI.xp.bar:SetMinMaxValues(0, 100) + pfUI.xp.bar:SetOrientation("VERTICAL") + pfUI.xp.bar:SetValue(59) -pfUI.xp.bar = CreateFrame("StatusBar", nil, pfUI.xp) -pfUI.xp.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") -pfUI.xp.bar:ClearAllPoints() -pfUI.xp.bar:SetPoint("TOPLEFT", pfUI.xp, "TOPLEFT", 3, -3) -pfUI.xp.bar:SetPoint("BOTTOMRIGHT", pfUI.xp, "BOTTOMRIGHT", -3, 3) -pfUI.xp.bar:SetStatusBarColor(.25,.25,1,1) -pfUI.xp.bar:SetMinMaxValues(0, 100) -pfUI.xp.bar:SetOrientation("VERTICAL") -pfUI.xp.bar:SetValue(59) + pfUI.xp.restedbar = CreateFrame("StatusBar", nil, pfUI.xp) + pfUI.xp.restedbar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + pfUI.xp.restedbar:ClearAllPoints() + pfUI.xp.restedbar:SetPoint("TOPLEFT", pfUI.xp, "TOPLEFT", 3, -3) + pfUI.xp.restedbar:SetPoint("BOTTOMRIGHT", pfUI.xp, "BOTTOMRIGHT", -3, 3) + pfUI.xp.restedbar:SetFrameStrata("HIGH") + pfUI.xp.restedbar:SetStatusBarColor(1,.25,1,1) + pfUI.xp.restedbar:SetMinMaxValues(0, 100) + pfUI.xp.restedbar:SetOrientation("VERTICAL") -pfUI.xp.restedbar = CreateFrame("StatusBar", nil, pfUI.xp) -pfUI.xp.restedbar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") -pfUI.xp.restedbar:ClearAllPoints() -pfUI.xp.restedbar:SetPoint("TOPLEFT", pfUI.xp, "TOPLEFT", 3, -3) -pfUI.xp.restedbar:SetPoint("BOTTOMRIGHT", pfUI.xp, "BOTTOMRIGHT", -3, 3) -pfUI.xp.restedbar:SetFrameStrata("HIGH") -pfUI.xp.restedbar:SetStatusBarColor(1,.25,1,1) -pfUI.xp.restedbar:SetMinMaxValues(0, 100) -pfUI.xp.restedbar:SetOrientation("VERTICAL") + pfUI.rep = CreateFrame("Frame",nil, pfUI.bars.bottom) + pfUI.rep:SetWidth(10) + pfUI.rep:SetPoint("TOPRIGHT",pfUI.chat.right,"TOPLEFT", -1, 0) + pfUI.rep:SetPoint("BOTTOMRIGHT",pfUI.chat.right,"BOTTOMLEFT",-1, 0) + pfUI.rep:SetFrameStrata("BACKGROUND") + pfUI.rep:SetBackdrop(pfUI.backdrop) -pfUI.rep = CreateFrame("Frame",nil, pfUI.bars.bottom) -pfUI.rep:SetWidth(10) -pfUI.rep:SetPoint("TOPRIGHT",pfUI.chat.right,"TOPLEFT", -1, 0) -pfUI.rep:SetPoint("BOTTOMRIGHT",pfUI.chat.right,"BOTTOMLEFT",-1, 0) -pfUI.rep:SetFrameStrata("BACKGROUND") -pfUI.rep:SetBackdrop(pfUI.backdrop) + pfUI.rep.bar = CreateFrame("StatusBar", nil, pfUI.rep) + pfUI.rep.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") + pfUI.rep.bar:ClearAllPoints() + pfUI.rep.bar:SetPoint("TOPLEFT", pfUI.rep, "TOPLEFT", 3, -3) + pfUI.rep.bar:SetPoint("BOTTOMRIGHT", pfUI.rep, "BOTTOMRIGHT", -3, 3) + pfUI.rep.bar:SetMinMaxValues(0, 100) + pfUI.rep.bar:SetOrientation("VERTICAL") + pfUI.rep.bar:SetValue(59) -pfUI.rep.bar = CreateFrame("StatusBar", nil, pfUI.rep) -pfUI.rep.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar") -pfUI.rep.bar:ClearAllPoints() -pfUI.rep.bar:SetPoint("TOPLEFT", pfUI.rep, "TOPLEFT", 3, -3) -pfUI.rep.bar:SetPoint("BOTTOMRIGHT", pfUI.rep, "BOTTOMRIGHT", -3, 3) -pfUI.rep.bar:SetMinMaxValues(0, 100) -pfUI.rep.bar:SetOrientation("VERTICAL") -pfUI.rep.bar:SetValue(59) + pfUI.rep:RegisterEvent("UPDATE_FACTION") + pfUI.rep:RegisterEvent("PLAYER_ENTERING_WORLD") -pfUI.rep:RegisterEvent("UPDATE_FACTION") -pfUI.rep:RegisterEvent("PLAYER_ENTERING_WORLD") + pfUI.rep:SetScript("OnEvent", function() + pfUI.rep:SetAlpha(0) + for i=1, GetNumFactions() do + local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, isWatched = GetFactionInfo(i); + if isWatched then + barMax = barMax - barMin; + barValue = barValue - barMin; + barMin = 0; -pfUI.rep:SetScript("OnEvent", function() - pfUI.rep:SetAlpha(0) - for i=1, GetNumFactions() do - local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, isWatched = GetFactionInfo(i); - if isWatched then - barMax = barMax - barMin; - barValue = barValue - barMin; - barMin = 0; - - pfUI.rep.bar:SetMinMaxValues(barMin, barMax) - pfUI.rep.bar:SetValue(barValue) - local color = FACTION_BAR_COLORS[standingID]; - pfUI.rep.bar:SetStatusBarColor((color.r + .5) * .5, (color.g + .5) * .5, (color.b + .5) * .5, 1) - pfUI.rep:SetAlpha(1) - pfUI.rep.tick = GetTime() + 3.00 + pfUI.rep.bar:SetMinMaxValues(barMin, barMax) + pfUI.rep.bar:SetValue(barValue) + local color = FACTION_BAR_COLORS[standingID]; + pfUI.rep.bar:SetStatusBarColor((color.r + .5) * .5, (color.g + .5) * .5, (color.b + .5) * .5, 1) + pfUI.rep:SetAlpha(1) + pfUI.rep.tick = GetTime() + 3.00 + end end - end - end) + end) -pfUI.rep:SetScript("OnUpdate",function() - if pfUI.rep:GetAlpha() == 0 or pfUI.rep.mouseover == true then return end - if not pfUI.rep.tick then - pfUI.rep.tick = GetTime() + 0.01 - end + pfUI.rep:SetScript("OnUpdate",function() + if pfUI.rep:GetAlpha() == 0 or pfUI.rep.mouseover == true then return end + if not pfUI.rep.tick then + pfUI.rep.tick = GetTime() + 0.01 + end - if GetTime() >= pfUI.rep.tick then - pfUI.rep.tick = nil - pfUI.rep:SetAlpha(pfUI.rep:GetAlpha() - .05) - end - end) + if GetTime() >= pfUI.rep.tick then + pfUI.rep.tick = nil + pfUI.rep:SetAlpha(pfUI.rep:GetAlpha() - .05) + end + end) -pfUI.rep:EnableMouse() -pfUI.rep:SetScript("OnEnter", function() - pfUI.rep.mouseover = true - pfUI.rep:SetAlpha(1) - end) + pfUI.rep:EnableMouse() + pfUI.rep:SetScript("OnEnter", function() + pfUI.rep.mouseover = true + pfUI.rep:SetAlpha(1) + end) -pfUI.rep:SetScript("OnLeave", function() - pfUI.rep.mouseover = false - pfUI.rep.tick = GetTime() + 3.00 - end) + pfUI.rep:SetScript("OnLeave", function() + pfUI.rep.mouseover = false + pfUI.rep.tick = GetTime() + 3.00 + end) +end) diff --git a/pfUI.lua b/pfUI.lua index 643b76e4..6789cd94 100644 --- a/pfUI.lua +++ b/pfUI.lua @@ -13,6 +13,31 @@ function SlashCmdList.PFUI(msg, editbox) end pfUI = CreateFrame("Frame",nil,UIParent) +pfUI:RegisterEvent("ADDON_LOADED") +pfUI:SetScript("OnEvent", function() + if arg1 == "pfUI" then + pfUI:Debug("pfUI module loader:") + for i,m in pairs(this.modules) do + pfUI:Debug("=> " .. m) + pfUI.module[m]() + end + end +end) + +pfUI.module = {} +pfUI.modules = {} + +function pfUI:RegisterModule(n, f) + pfUI.module[n] = f + table.insert(pfUI.modules, n) +end + +function pfUI:Debug(msg) + if pfUI_config.debug == 1 then + DEFAULT_CHAT_FRAME:AddMessage(msg) + end +end + pfUI.backdrop = { bgFile = "Interface\\AddOns\\pfUI\\img\\bg", tile = true, tileSize = 8, edgeFile = "Interface\\AddOns\\pfUI\\img\\border", edgeSize = 8, @@ -35,8 +60,8 @@ pfUI.backdrop_underline = { } pfUI.playerDB = {} - pfUI_config = { + debug = 1, ["unitframes"] = { animation_speed = 1, buff_size = "22", diff --git a/pfUI.toc b/pfUI.toc index f5064349..5bfd2ef8 100644 --- a/pfUI.toc +++ b/pfUI.toc @@ -3,7 +3,7 @@ ## Author: Eric (Shagu) Mauser, 2016 ## Notes: An User Intface written completely from scratch ## Version: 0.1 BETA -## SavedVariables: pfUI_config, pfUI_playerDB +## SavedVariables: pfUI_config, pfUI_playerDB, pfUI_modules # main pfUI.lua @@ -26,4 +26,4 @@ modules\xpbar.lua modules\autoshift.lua modules\bags.lua modules\cooldown.lua -modules\uf_tukui.lua \ No newline at end of file +modules\uf_tukui.lua