View Single Post
10-03-16, 09:40 AM   #7
flow0284
A Cyclonian
Join Date: Jan 2015
Posts: 40
Thank you for the small demo.

I have to ask, could you held me to integrade your demo into my litte addon? I am new in Lua programming. everytime a have time I read tutorial and try to learn but time for that is rare.

In the ArtifactFrame I would see how many Artifactpower was assigned to my weapon, because i like statistics

I would animate the assigned artifactpower text when new power was added and the frame was visible. Like the default available artifactpower text.

Lua Code:
  1. AssignedArtifactPower = LibStub("AceAddon-3.0"):NewAddon("Assigned Artifact Power", "AceEvent-3.0")
  2.  
  3. --Make a 'Comma/Point' Value
  4. function AssignedArtifactPower:comma_value(n)
  5.    local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
  6.    return left..(num:reverse():gsub('(%d%d%d)','%1.'):reverse())..right
  7. end
  8.  
  9. function AssignedArtifactPower:calc_ap()
  10.    local c, ge, gc, xp, ps, n, _ = _G.C_ArtifactUI
  11.    _, _, n, _, xp, ps = c.GetEquippedArtifactInfo()
  12.    for i=1,ps-1 do
  13.       xp = xp + c.GetCostForPointAtRank(i)
  14.    end
  15.    AP = self:comma_value(xp)
  16. end
  17.    
  18. function AssignedArtifactPower:OnEnable()
  19.     self:RegisterEvent("ARTIFACT_UPDATE")
  20.     self:RegisterEvent("ARTIFACT_XP_UPDATE")
  21.     self:RegisterEvent("ARTIFACT_MAX_RANKS_UPDATE")
  22.     self:Refresh()
  23. end
  24.  
  25. function AssignedArtifactPower:ARTIFACT_UPDATE()
  26.     self:Refresh()
  27. end
  28.  
  29. function AssignedArtifactPower:ARTIFACT_XP_UPDATE()
  30.     self:Refresh()
  31. end
  32.  
  33. function AssignedArtifactPower:ARTIFACT_MAX_RANKS_UPDATE()
  34.     self:Refresh()
  35. end
  36.  
  37. function AssignedArtifactPower:Overlay()
  38.     AFP = ArtifactFrame.PerksTab
  39.     if not AFP.AssignedArtifactPower then
  40.         AF = AFP.TitleContainer
  41.         AFPoints = AF.PointsRemainingLabel
  42.         AFLabel = AF.ArtifactPower
  43.         --New Frame for available Artifactpower
  44.         AFP.ArtifactPower = CreateFrame("Frame", "ArtifactPower", AFP)
  45.         AFP.ArtifactPower:SetPoint("TOP", -75, -120, "CENTER")
  46.         AFP.ArtifactPower:SetWidth(150)
  47.         AFP.ArtifactPower:SetHeight(40)
  48.        
  49.         AFLabel:ClearAllPoints()
  50.         AFLabel:SetPoint("TOP", AFP.ArtifactPower, 0, 0, "CENTER")
  51.         AFPoints:ClearAllPoints()
  52.         AFPoints:SetPoint("BOTTOM", AFLabel, 0, -15, "CENTER")
  53.  
  54.         --New Frame for assigned Artifactpower
  55.         AFP.AssignedArtifactPower = CreateFrame("Frame", "AssignedArtifactPower", AFP)
  56.         AFP.AssignedArtifactPower:SetPoint("TOP", 75, -120, "CENTER")
  57.         AFP.AssignedArtifactPower:SetWidth(150)
  58.         AFP.AssignedArtifactPower:SetHeight(40)
  59.  
  60.         tAPL = AFP.AssignedArtifactPower:CreateFontString("ArtifactPowerLabel", "ARTWORK")
  61.         tAPL:SetFont(AFLabel:GetFont())
  62.         tAPL:SetPoint("TOP", AFP.AssignedArtifactPower, 0, 0, "CENTER")
  63.         tAPL:SetTextColor(AFLabel:GetTextColor())
  64.         tAPL:SetText("Assigned")
  65.  
  66.         tAP = AFP.AssignedArtifactPower:CreateFontString("ArtifactPowerPoints", "ARTWORK")
  67.         tAP:SetFont(AFPoints:GetFont())
  68.         tAP:SetPoint("BOTTOM", tAPL, 0, -15, "CENTER")
  69.         tAP:SetTextColor(AFPoints:GetTextColor())
  70.         self:calc_ap()
  71.         tAP:SetText(AP)
  72.        
  73.         AFP.AssignedArtifactPower:SetScript("OnEnter", function(self, motion)
  74.             GameTooltip:SetOwner(self, "ANCHOR_CURSOR")
  75.             GameTooltip:ClearLines()
  76.             GameTooltip:SetText("Total assigned artifact power")
  77.             GameTooltip:AddLine("Resetting your weapons artifact power will reset this counter!", 1, 1, 1)
  78.             GameTooltip:Show()
  79.         end)
  80.  
  81.         AFP.AssignedArtifactPower:SetScript("OnLeave", function(self, motion)
  82.             GameTooltip:Hide()
  83.         end)
  84.  
  85.     else
  86.         self:calc_ap()
  87.         tAP:SetText(AP)
  88.     end
  89. end
  90.  
  91. function AssignedArtifactPower:Refresh()
  92.     if not ArtifactFrame or not ArtifactFrame.PerksTab then return end
  93.     self:Overlay()
  94. end

Of course my code is a bit dirty but it works
  Reply With Quote