comparison KBF.lua @ 54:c4324144d380

start adding configuration - options to toggle consolidated buff support. pkgmeta and embeds updates for the extra libs
author Chris Mellon <arkanes@gmail.com>
date Wed, 13 Jul 2011 21:30:32 -0500
parents 7d961c698b71
children 4d359ee4649c
comparison
equal deleted inserted replaced
53:c67355a1ec40 54:c4324144d380
4 4
5 local kbf = LibStub("AceAddon-3.0"):NewAddon(kbf, "KBF", "AceEvent-3.0", "AceConsole-3.0") 5 local kbf = LibStub("AceAddon-3.0"):NewAddon(kbf, "KBF", "AceEvent-3.0", "AceConsole-3.0")
6 6
7 7
8 function kbf:OnInitialize() 8 function kbf:OnInitialize()
9 -- config settings - account wide shared profile by default
10 self.db = LibStub("AceDB-3.0"):New("KBFSavedVars", self.defaultConfig, true)
9 -- create frames here so that they will be correctly stored in location cache by 11 -- create frames here so that they will be correctly stored in location cache by
10 -- the UI. 12 -- the UI.
11 self.anchor, self.secureHeader, self.consolidateHeader, self.consolidateProxy = self:CreateCoreFrames() 13 self.anchor, self.secureHeader, self.consolidateHeader, self.consolidateProxy = self:CreateCoreFrames()
12 self.debuffFrames = {} 14 self.debuffFrames = {}
13 local defaultSettings = {
14 -- global bar settings
15 -- overrides for buffs
16 -- overrides for debuffs
17 }
18 self:RegisterEvent("UNIT_AURA") 15 self:RegisterEvent("UNIT_AURA")
19 self:RegisterEvent("UNIT_ENTERING_VEHICLE", "PollForVehicleChange") 16 self:RegisterEvent("UNIT_ENTERING_VEHICLE", "PollForVehicleChange")
20 self:RegisterEvent("UNIT_EXITING_VEHICLE", "PollForVehicleChange") 17 self:RegisterEvent("UNIT_EXITING_VEHICLE", "PollForVehicleChange")
21 self:RegisterChatCommand("kbf", "ToggleAnchor") 18 self:RegisterChatCommand("kbf", "ToggleAnchor")
22 19
389 -- creates a icon + statusbar bar 386 -- creates a icon + statusbar bar
390 function kbf:ConstructBar(frame, r, g, b) 387 function kbf:ConstructBar(frame, r, g, b)
391 local texture = "Interface\\TargetingFrame\\UI-StatusBar" 388 local texture = "Interface\\TargetingFrame\\UI-StatusBar"
392 -- Because of secureframe suckiness, these height & width numbers 389 -- Because of secureframe suckiness, these height & width numbers
393 -- have to be consistent with the stuff in KBF.xml 390 -- have to be consistent with the stuff in KBF.xml
394 local height = 16 391 local height = self.staticConfig.BAR_HEIGHT
395 local width = 200 -- this is the width *without* the icon 392 local width = self.staticConfig.BAR_WIDTH -- this is the width *without* the icon
396 local font, _, style = GameFontHighlight:GetFont() 393 local font, _, style = GameFontHighlight:GetFont()
397 local r = r or 0 394 local r = r or 0
398 local g = g or 1 395 local g = g or 1
399 local b = b or 0 396 local b = b or 0
400 local bgcolor = {r, g, b, 0.5} 397 local bgcolor = {r, g, b, 0.5}
403 local timertextwidth = fontsize * 3.6 400 local timertextwidth = fontsize * 3.6
404 local textcolor = {1, 1, 1, 1} 401 local textcolor = {1, 1, 1, 1}
405 local timertextcolor = {1, 1, 1, 1} 402 local timertextcolor = {1, 1, 1, 1}
406 if not frame then 403 if not frame then
407 frame = CreateFrame("Button", nil, UIParent) -- the "top level" frame that represents the bar as a whole 404 frame = CreateFrame("Button", nil, UIParent) -- the "top level" frame that represents the bar as a whole
408 frame:SetHeight(16) 405 frame:SetHeight(height)
409 frame:SetWidth(200 + 16) 406 frame:SetWidth(width + height)
410 end 407 end
411 local bar = frame 408 local bar = frame
412 bar.icon = CreateFrame("Button", nil, bar) -- the icon 409 bar.icon = CreateFrame("Button", nil, bar) -- the icon
413 bar.statusbarbg = CreateFrame("StatusBar", nil, bar) -- the bars background 410 bar.statusbarbg = CreateFrame("StatusBar", nil, bar) -- the bars background
414 bar.statusbar = CreateFrame("StatusBar", nil, bar) -- and the bars foreground 411 bar.statusbar = CreateFrame("StatusBar", nil, bar) -- and the bars foreground
462 end 459 end
463 460
464 function kbf:CreateCoreFrames() 461 function kbf:CreateCoreFrames()
465 -- this is the visible anchor frame that the user interacts with 462 -- this is the visible anchor frame that the user interacts with
466 -- to move the buffs around 463 -- to move the buffs around
464 local height = self.staticConfig.BAR_HEIGHT
465 local width = self.staticConfig.BAR_WIDTH -- this is the width *without* the icon
467 local anchor = CreateFrame("FRAME", "KBFAnchorFrame", UIParent) 466 local anchor = CreateFrame("FRAME", "KBFAnchorFrame", UIParent)
468 anchor:SetClampedToScreen(true) 467 anchor:SetClampedToScreen(true)
469 anchor:SetBackdrop({bgFile = "Interface/Tooltips/UI-Tooltip-Background", 468 anchor:SetBackdrop({bgFile = "Interface/Tooltips/UI-Tooltip-Background",
470 edgeFile = "Interface/Tooltips/UI-Tooltip-Border", 469 edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
471 tile = true, tileSize = 16, edgeSize = 12, 470 tile = true, tileSize = height, edgeSize = 12,
472 insets = { left = 4, right = 4, top = 4, bottom = 4 }, 471 insets = { left = 4, right = 4, top = 4, bottom = 4 },
473 }) 472 })
474 local text = anchor:CreateFontString(nil, "OVERLAY") -- the label text 473 local text = anchor:CreateFontString(nil, "OVERLAY") -- the label text
475 text:SetFontObject(GameFontHighlight) 474 text:SetFontObject(GameFontHighlight)
476 text:SetFont(GameFontHighlight:GetFont()) 475 text:SetFont(GameFontHighlight:GetFont())
477 text:SetPoint("TOPLEFT", anchor, "TOPLEFT", 0, 0) 476 text:SetPoint("TOPLEFT", anchor, "TOPLEFT", 0, 0)
478 text:SetPoint("BOTTOMRIGHT", anchor, "BOTTOMRIGHT", 0, 0) 477 text:SetPoint("BOTTOMRIGHT", anchor, "BOTTOMRIGHT", 0, 0)
479 text:SetText("KBF ANCHOR") 478 text:SetText("KBF ANCHOR")
480 anchor:SetWidth(200 +16) 479 anchor:SetWidth(height + width)
481 anchor:SetHeight(16) 480 anchor:SetHeight(height)
482 -- movability 481 -- movability
483 anchor:EnableMouse(true) 482 anchor:EnableMouse(true)
484 anchor:SetMovable(true) 483 anchor:SetMovable(true)
485 anchor:RegisterForDrag("LeftButton") 484 anchor:RegisterForDrag("LeftButton")
486 anchor:SetScript("OnDragStart", anchor.StartMoving) 485 anchor:SetScript("OnDragStart", anchor.StartMoving)
490 anchor:Hide() 489 anchor:Hide()
491 -- this is the parent & host for the secure aura buttons. 490 -- this is the parent & host for the secure aura buttons.
492 491
493 local secureHeader = CreateFrame("FRAME", "KBFBuffFrame", UIParent, "SecureAuraHeaderTemplate") 492 local secureHeader = CreateFrame("FRAME", "KBFBuffFrame", UIParent, "SecureAuraHeaderTemplate")
494 self:SetCommonSecureHeaderAttributes(secureHeader) 493 self:SetCommonSecureHeaderAttributes(secureHeader)
495 secureHeader:SetAttribute("consolidateTo", 99) 494 if self.db.profile.consolidateBuffs then
495 secureHeader:SetAttribute("consolidateTo", 99)
496 end
496 secureHeader:SetPoint("TOP", anchor, "TOP", 0, 0) 497 secureHeader:SetPoint("TOP", anchor, "TOP", 0, 0)
497 498
498 -- this is the "button" in the aura flow that represents the consolidated buffs. 499 -- this is the "button" in the aura flow that represents the consolidated buffs.
499 -- pre-creating it here in order to perform customization 500 -- pre-creating it here in order to perform customization
500 local consolidateProxy = CreateFrame("BUTTON", nil, UIParent, "SecureHandlerClickTemplate") 501 local consolidateProxy = CreateFrame("BUTTON", nil, UIParent, "SecureHandlerClickTemplate")
520 consolidateProxy:EnableMouse(true) 521 consolidateProxy:EnableMouse(true)
521 consolidateProxy:RegisterForClicks("AnyUp") 522 consolidateProxy:RegisterForClicks("AnyUp")
522 523
523 -- position it relative to the proxy, so it can appear where we want it 524 -- position it relative to the proxy, so it can appear where we want it
524 consolidateHeader:SetPoint("TOPRIGHT", anchor, "TOPLEFT", 0, 0) 525 consolidateHeader:SetPoint("TOPRIGHT", anchor, "TOPLEFT", 0, 0)
525 consolidateHeader:SetWidth(200 +16) 526 consolidateHeader:SetWidth(height + width)
526 consolidateHeader:SetHeight(16) 527 consolidateHeader:SetHeight(height)
527 consolidateHeader:Show() 528 consolidateHeader:Show()
528 529
529 return anchor, secureHeader, consolidateHeader, consolidateProxy 530 return anchor, secureHeader, consolidateHeader, consolidateProxy
530 end 531 end
531 532