View Single Post
09-02-12, 01:22 PM   #12
zork
A Pyroguard Emberseer
 
zork's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2008
Posts: 1,740
HOLYPOWER

Result: http://imgur.com/a/lrtJj

Lua Code:
  1. local SPELL_POWER_HOLY_POWER = SPELL_POWER_HOLY_POWER
  2.  
  3.   --update holy power
  4.   local updateHolyPower = function(self, event, unit, powerType)
  5.     if(self.unit ~= unit or (powerType and powerType ~= "HOLY_POWER")) then return end
  6.     local bar = self.HolyPowerBar
  7.     local num = UnitPower("player", SPELL_POWER_HOLY_POWER)
  8.     local maxHolyPower = UnitPowerMax("player", SPELL_POWER_HOLY_POWER)
  9.     if num < 1 then
  10.       if bar:IsShown() then bar:Hide() end
  11.       return
  12.     else
  13.       if not bar:IsShown() then bar:Show() end
  14.     end
  15.     --adjust the width of the holy power frame
  16.     local w = 64*(maxHolyPower+2)
  17.     bar:SetWidth(w)
  18.     for i = 1, bar.maxOrbs do
  19.       local orb = self.HolyPower[i]
  20.       if i > maxHolyPower then
  21.          if orb:IsShown() then orb:Hide() end
  22.       else
  23.         if not orb:IsShown() then orb:Show() end
  24.       end
  25.     end
  26.     for i = 1, maxHolyPower do
  27.       local orb = self.HolyPower[i]
  28.       local full = num/maxHolyPower
  29.       if(i <= num) then
  30.         if full == 1 then
  31.           orb.fill:SetVertexColor(1,0,0)
  32.           orb.glow:SetVertexColor(1,0,0)
  33.         else
  34.           orb.fill:SetVertexColor(bar.color.r,bar.color.g,bar.color.b)
  35.           orb.glow:SetVertexColor(bar.color.r,bar.color.g,bar.color.b)
  36.         end
  37.         orb.fill:Show()
  38.         orb.glow:Show()
  39.         orb.highlight:Show()
  40.       else
  41.         orb.fill:Hide()
  42.         orb.glow:Hide()
  43.         orb.highlight:Hide()
  44.       end
  45.     end
  46.   end
  47.  
  48.   --create holy power bar
  49.   local createHolyPowerBar = function(self)
  50.  
  51.     self.HolyPower = {}
  52.  
  53.     local t
  54.     local bar = CreateFrame("Frame","oUF_DiabloHolyPower",self)
  55.     bar.maxOrbs = 5
  56.     local w = 64*(bar.maxOrbs+2) --create the bar for
  57.     local h = 64
  58.     --bar:SetPoint("CENTER", UIParent, "CENTER", 0, 0)
  59.     bar:SetPoint(self.cfg.holypower.pos.a1,self.cfg.holypower.pos.af,self.cfg.holypower.pos.a2,self.cfg.holypower.pos.x,self.cfg.holypower.pos.y)
  60.     bar:SetWidth(w)
  61.     bar:SetHeight(h)
  62.  
  63.     --color
  64.     bar.color = self.cfg.holypower.color
  65.  
  66.     --left edge
  67.     t = bar:CreateTexture(nil,"BACKGROUND",nil,-8)
  68.     t:SetSize(64,64)
  69.     t:SetPoint("LEFT",0,0)
  70.     t:SetTexture("Interface\\AddOns\\oUF_Diablo\\media\\combo_left")
  71.     bar.leftEdge = t
  72.  
  73.     --right edge
  74.     t = bar:CreateTexture(nil,"BACKGROUND",nil,-8)
  75.     t:SetSize(64,64)
  76.     t:SetPoint("RIGHT",0,0)
  77.     t:SetTexture("Interface\\AddOns\\oUF_Diablo\\media\\combo_right")
  78.     bar.rightEdge = t
  79.  
  80.     for i = 1, bar.maxOrbs do
  81.  
  82.       local orb = CreateFrame("Frame",nil,bar)
  83.       self.HolyPower[i] = orb
  84.  
  85.       orb:SetSize(64,64)
  86.       orb:SetPoint("LEFT",i*64,0)
  87.  
  88.       local orbSizeMultiplier = 0.85
  89.  
  90.       --bar background
  91.       orb.barBg = orb:CreateTexture(nil,"BACKGROUND",nil,-8)
  92.       orb.barBg:SetSize(64,64)
  93.       orb.barBg:SetPoint("CENTER")
  94.       orb.barBg:SetTexture("Interface\\AddOns\\oUF_Diablo\\media\\combo_bar_bg")
  95.  
  96.       --orb background
  97.       orb.bg = orb:CreateTexture(nil,"BACKGROUND",nil,-7)
  98.       orb.bg:SetSize(128*orbSizeMultiplier,128*orbSizeMultiplier)
  99.       orb.bg:SetPoint("CENTER")
  100.       orb.bg:SetTexture("Interface\\AddOns\\oUF_Diablo\\media\\combo_orb_bg")
  101.  
  102.       --orb filling
  103.       orb.fill = orb:CreateTexture(nil,"BACKGROUND",nil,-6)
  104.       orb.fill:SetSize(128*orbSizeMultiplier,128*orbSizeMultiplier)
  105.       orb.fill:SetPoint("CENTER")
  106.       orb.fill:SetTexture("Interface\\AddOns\\oUF_Diablo\\media\\combo_orb_fill1")
  107.       orb.fill:SetVertexColor(self.cfg.holypower.color.r,self.cfg.holypower.color.g,self.cfg.holypower.color.b)
  108.       --orb.fill:SetBlendMode("ADD")
  109.  
  110.       --orb border
  111.       orb.border = orb:CreateTexture(nil,"BACKGROUND",nil,-5)
  112.       orb.border:SetSize(128*orbSizeMultiplier,128*orbSizeMultiplier)
  113.       orb.border:SetPoint("CENTER")
  114.       orb.border:SetTexture("Interface\\AddOns\\oUF_Diablo\\media\\combo_orb_border")
  115.  
  116.       --orb glow
  117.       orb.glow = orb:CreateTexture(nil,"BACKGROUND",nil,-4)
  118.       orb.glow:SetSize(128*orbSizeMultiplier,128*orbSizeMultiplier)
  119.       orb.glow:SetPoint("CENTER")
  120.       orb.glow:SetTexture("Interface\\AddOns\\oUF_Diablo\\media\\combo_orb_glow")
  121.       orb.glow:SetVertexColor(self.cfg.holypower.color.r,self.cfg.holypower.color.g,self.cfg.holypower.color.b)
  122.       orb.glow:SetBlendMode("BLEND")
  123.  
  124.       --orb highlight
  125.       orb.highlight = orb:CreateTexture(nil,"BACKGROUND",nil,-3)
  126.       orb.highlight:SetSize(128*orbSizeMultiplier,128*orbSizeMultiplier)
  127.       orb.highlight:SetPoint("CENTER")
  128.       orb.highlight:SetTexture("Interface\\AddOns\\oUF_Diablo\\media\\combo_orb_highlight")
  129.  
  130.     end
  131.  
  132.     bar:SetScale(self.cfg.holypower.scale)
  133.     func.applyDragFunctionality(bar)
  134.  
  135.     self.HolyPowerBar = bar
  136.  
  137.   end
  138.  
  139.     --holypower
  140.     if cfg.playerclass == "PALADIN" and self.cfg.holypower.show then
  141.       createHolyPowerBar(self)
  142.       self.HolyPower.Override = updateHolyPower
  143.     end
__________________
| Simple is beautiful.
| WoWI AddOns | GitHub | Zork (WoW)

"I wonder what the non-pathetic people are doing tonight?" - Rajesh Koothrappali (The Big Bang Theory)
  Reply With Quote