Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Initialize the AddOn and Saved Variables
- local healthNumbers
- local powerNumbers
- local frame = CreateFrame("Frame")
- frame:RegisterEvent("ADDON_LOADED")
- frame:RegisterEvent("NAME_PLATE_UNIT_ADDED")
- frame:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
- frame:SetScript("OnEvent", function(self, event, ...) self[event](self,...) end)
- function frame.round(num, idp)
- return tonumber(string.format("%." .. (idp or 0) .. "f", num))
- end
- function frame.formatPlayerNumbers(amount)
- local formatted, k = amount
- while true do
- formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
- if (k==0) then
- break
- end
- end
- if string.len(formatted) >= 7 and string.len(formatted) < 11 then
- formatted = string.sub(formatted, 0, (string.len(formatted) - 4)) .. "k"
- elseif string.len(formatted) >= 11 then
- formatted = string.sub(formatted, 0, (string.len(formatted) - 8)) .. "m"
- end
- return formatted
- end
- function frame:NAME_PLATE_UNIT_ADDED(unitID) --for health numbers
- if not UnitIsUnit(unitID, "player") then return end
- self:RegisterUnitEvent("UNIT_HEALTH_FREQUENT", "player")
- self:RegisterUnitEvent("UNIT_POWER_FREQUENT", "player")
- local playernameplate = C_NamePlate.GetNamePlateForUnit(unitID)--returns table
- local playernameplatename = playernameplate:GetName()
- if not healthNumbers then
- healthNumbers = CreateFrame("Frame", nil, NamePlatePlayerResourceFrame) -- Setting up health display
- healthNumbers.text = healthNumbers:CreateFontString(nil, "OVERLAY")
- healthNumbers.text:SetAllPoints(true)
- healthNumbers:SetFrameStrata("HIGH")
- healthNumbers.text:SetFont("FONTS\\FRIZQT__.TTF", 11, "OUTLINE")
- healthNumbers.text:SetVertexColor(1, 1, 1)
- end
- if healthNumbers.attachedto ~= playernameplatename then --playernameplate switches
- healthNumbers:SetAllPoints(_G[playernameplatename.."UnitFrame"].healthBar)
- healthNumbers.attachedto = playernameplatename
- end
- self:UNIT_HEALTH_FREQUENT("player") -- for the case that the player regend health or ressources(mana, energy etc.)to full while the nameplate wasn't shown
- self:UNIT_POWER_FREQUENT("player")
- end
- function frame:NAME_PLATE_UNIT_REMOVED(unitID)
- if not UnitIsUnit(unitID, "player") then return end
- self:UnregisterEvent("UNIT_HEALTH_FREQUENT")
- self:UnregisterEvent("UNIT_POWER_FREQUENT")
- end
- function frame:UNIT_POWER_FREQUENT(unit)
- if InterfaceOptionsNamesPanelUnitNameplatesMakeLarger:GetValue() == "1" then
- local powerPercentage = self.round((UnitPower(unit) / UnitPowerMax(unit) * 100), 0)
- if not powerNumbers then
- powerNumbers = CreateFrame("Frame", nil, ClassNameplateManaBarFrame) -- Setting up resource display
- powerNumbers:SetAllPoints(true)
- powerNumbers.text = powerNumbers:CreateFontString(nil, "OVERLAY")
- powerNumbers.text:SetAllPoints(true)
- powerNumbers:SetFrameStrata("HIGH")
- powerNumbers.text:SetFont("FONTS\\FRIZQT__.TTF", 11, "OUTLINE")
- powerNumbers.text:SetVertexColor(1, 1, 1)
- end
- if PersonalResourceDisplayNumbersDB.numbersDisplay == "Numeric Value" then
- powerNumbers.text:SetText(self.formatPlayerNumbers(UnitPower(unit)) .. "/" .. self.formatPlayerNumbers(UnitPowerMax("player"))) -- Update resource numbers
- elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Current" then
- powerNumbers.text:SetText(self.formatPlayerNumbers(UnitPower(unit))) -- Update resource numbers
- elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Percentage" then
- powerNumbers.text:SetText(powerPercentage .. "%") -- Update resource percentages
- elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Both" then
- powerNumbers.text:SetText(self.formatPlayerNumbers(UnitPower(unit)) .. "/" .. self.formatPlayerNumbers(UnitPowerMax("player")) .. " - " .. powerPercentage .. "%") -- Update resource numbers + percentage
- elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Hide" then
- powerNumbers.text:SetText()
- end
- end
- end
- function frame:UNIT_HEALTH_FREQUENT(unit)
- if InterfaceOptionsNamesPanelUnitNameplatesMakeLarger:GetValue() == "1" then
- local healthPercentage = self.round((UnitHealth(unit) / UnitHealthMax(unit) * 100), 0)
- if PersonalResourceDisplayNumbersDB.numbersDisplay == "Numeric Value" then
- healthNumbers.text:SetText(self.formatPlayerNumbers(UnitHealth("player")) .. "/" .. self.formatPlayerNumbers(UnitHealthMax("player"))) -- Update health numbers
- elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Current" then
- healthNumbers.text:SetText(self.formatPlayerNumbers(UnitHealth("player"))) -- Update health numbers (only show current)
- elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Percentage" then
- healthNumbers.text:SetText(healthPercentage .. "%") -- Update health percentages
- elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Both" then
- healthNumbers.text:SetText(self.formatPlayerNumbers(UnitHealth("player")) .. "/" .. self.formatPlayerNumbers(UnitHealthMax("player")) .. " - " .. healthPercentage .. "%") -- Update health numbers + percentages
- elseif PersonalResourceDisplayNumbersDB.numbersDisplay == "Hide" then
- healthNumbers.text:SetText()
- end
- end
- end
- function frame:ADDON_LOADED(addon)
- if addon == "PersonalResourceDisplayNumbers" then
- -- Our saved variables, if they exist, have been loaded at this point.
- if PersonalResourceDisplayNumbersDB == nil then
- -- This is the first time this addon is loaded; set SVs to default values
- PersonalResourceDisplayNumbersDB = {
- numbersDisplay = "Numeric Value"
- }
- end
- end
- end
- -- Set up /slash commands
- SLASH_PRDN1 = '/resourcedisplay'
- function SlashCmdList.PRDN(msg, editbox)
- --local command, rest = msg:match("^(%S*)%s*(.-)$")
- -- Any leading non-whitespace is captured into command
- -- the rest (minus leading whitespace) is captured into rest.
- if msg == "numbers" then
- PersonalResourceDisplayNumbersDB.numbersDisplay = "Numeric Value"
- print("Now displaying Personal Resource Display numbers as Numeric Value.")
- elseif msg == "current" then
- PersonalResourceDisplayNumbersDB.numbersDisplay = "Current"
- print("Now displaying Personal Resource Display numbers as Numeric Value (only current amount.)")
- elseif msg == "percentages" then
- PersonalResourceDisplayNumbersDB.numbersDisplay = "Percentage"
- print("Now displaying Personal Resource Display numbers as Percentage.")
- elseif msg == "both" then
- PersonalResourceDisplayNumbersDB.numbersDisplay = "Both"
- print("Now displaying Personal Resource Display numbers as Both.")
- elseif msg == "hide" then
- PersonalResourceDisplayNumbersDB.numbersDisplay = "Hide"
- print("Now hiding Personal Resource Display numbers.")
- elseif msg == "help" then
- print("Personal Resource Display Numbers setup:")
- print("\"/resourcedisplay numbers\" : Display numbers as Numeric Values.")
- print("\"/resourcedisplay current\" : Display numbers as Numeric Values (only current value.)")
- print("\"/resourcedisplay percentages\" : Display numbers as Percentages.")
- print("\"/resourcedisplay both\" : Display both Percentages and Numeric Values.")
- print("\"/resourcedisplay hide\" : Hide the number display.")
- else
- print("Invalid syntax, please see /resourcedisplay help")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement