Advertisement
Guest User

Untitled

a guest
Jul 9th, 2012
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.45 KB | None | 0 0
  1. --get the addon namespace
  2. local addon, ns = ...
  3. --get the config values
  4. local cfg = ns.cfg
  5. -- get the library
  6. local lib = ns.lib
  7.  
  8. if lib.getClass("player") ~= "WARLOCK" then return end
  9. local pp = lib.scale
  10.  
  11. local MAX_POWER_PER_EMBER = 10
  12. local SPELL_POWER_DEMONIC_FURY = SPELL_POWER_DEMONIC_FURY
  13. local SPELL_POWER_BURNING_EMBERS = SPELL_POWER_BURNING_EMBERS
  14. local SPELL_POWER_SOUL_SHARDS = SPELL_POWER_SOUL_SHARDS
  15. local destro = SPEC_WARLOCK_DESTRUCTION
  16. local affli = SPEC_WARLOCK_AFFLICTION
  17. local demo = SPEC_WARLOCK_DEMONOLOGY
  18.  
  19. local shardc = {139/255, 51/255, 188/255}
  20. local emberc = {189/255, 171/255, 58/255}
  21. local furyc  = {189/255, 48/255, 248/255}
  22.  
  23. local bars   = {}
  24. local shardnum
  25.  
  26. local lockbar = CreateFrame("Frame", "ColdLockBar", ColdPlayer)
  27. lockbar:SetSize(200, 8)
  28. lockbar:SetPoint("BOTTOM", ColdPlayer, "TOP", 0, 7)
  29. lockbar:SetFrameStrata("LOW")
  30. lockbar:SetFrameLevel(2)
  31.  
  32. local function updateBars()
  33.     local spec = GetSpecialization()
  34.    
  35.     if spec then
  36.         if spec == affli then
  37.             local numShards = UnitPower("player", SPELL_POWER_SOUL_SHARDS)
  38.             local maxShards = UnitPowerMax("player", SPELL_POWER_SOUL_SHARDS)
  39.             --check for affli glyph
  40.             if shardnum ~= maxShards and maxShards == 3 then
  41.                 for i = 1, 3 do
  42.                     bars[i]:SetSize(pp(64),pp(8))
  43.                 end
  44.                 bars[4]:Hide()
  45.             else
  46.                 for i = 1, 4 do
  47.                     bars[i]:SetSize(pp(46),pp(8))
  48.                 end
  49.                 bars[4]:Show()             
  50.             end
  51.            
  52.             for i = 1, maxShards do
  53.                 if i <= numShards then
  54.                     bars[i]:SetAlpha(1)
  55.                 else
  56.                     bars[i]:SetAlpha(.2)
  57.                 end
  58.                 bars[i]:SetStatusBarColor(unpack(shardc))
  59.             end
  60.            
  61.         elseif spec == destro then
  62.             local maxPower = UnitPowerMax("player", SPELL_POWER_BURNING_EMBERS, true)
  63.             local power = UnitPower("player", SPELL_POWER_BURNING_EMBERS, true)
  64.             local numEmbers = power / MAX_POWER_PER_EMBER
  65.             local numBars = floor(maxPower / MAX_POWER_PER_EMBER)
  66.             --check for destro glyph
  67.             if shardnum ~= numBars and numBars == 3 then
  68.                 for i = 1, 3 do
  69.                     bars[i]:SetSize(pp(64),pp(8))
  70.                 end
  71.                 bars[4]:Hide()
  72.             else
  73.                 for i = 1, 4 do
  74.                     bars[i]:SetSize(pp(46),pp(8))
  75.                 end
  76.                 bars[4]:Show()         
  77.             end
  78.            
  79.             for i = 1, numBars do
  80.                 bars[i]:SetMinMaxValues((MAX_POWER_PER_EMBER * i) - MAX_POWER_PER_EMBER, MAX_POWER_PER_EMBER * i)
  81.                 bars[i]:SetValue(power)
  82.                 bars[i]:SetStatusBarColor(unpack(emberc))
  83.             end
  84.            
  85.        
  86.         elseif spec == demo then
  87.             local power = UnitPower("player", SPELL_POWER_DEMONIC_FURY)
  88.             local maxPower = UnitPowerMax("player", SPELL_POWER_DEMONIC_FURY)
  89.         end
  90.     end
  91. end
  92.  
  93. local function createBars()
  94.     lockbar:RegisterEvent('UNIT_POWER')
  95.     lockbar:RegisterEvent("PLAYER_TALENT_UPDATE")
  96.     lockbar:SetScript("OnEvent", updateBars)
  97.    
  98.     for i = 1,4 do
  99.         bars[i] = CreateFrame("StatusBar", "ColdLockBar"..i, lockbar)
  100.         bars[i]:SetStatusBarTexture(cfg.tex)
  101.         if i == 1 then
  102.             bars[i]:SetPoint("LEFT", lockbar)
  103.         else
  104.             bars[i]:SetPoint("LEFT", bars[i-1], "RIGHT", pp(4), 0)
  105.         end
  106.        
  107.         local shadow = CreateFrame("Frame", nil, bars[i])
  108.         shadow:SetBackdrop(backdrop)
  109.         shadow:SetBackdropColor(.2,.2,.2,.6)
  110.         shadow:SetBackdropBorderColor(0,0,0)
  111.         shadow:SetPoint('TOPLEFT', -1, 1)
  112.         shadow:SetPoint('BOTTOMRIGHT', 1, -1)
  113.         shadow:SetFrameLevel(1)
  114.         bars[i].sh = shadow
  115.        
  116.     end
  117.     shardnum = 4
  118.     updateBars()
  119. end
  120.  
  121. lockbar:RegisterEvent("PLAYER_ENTERING_WORLD")
  122. lockbar:SetScript("OnEvent",function(self,event)
  123.     if event == "PLAYER_ENTERING_WORLD" then
  124.         createBars()
  125.         updateBars()
  126.     end
  127. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement