-- Tribal Experience Bar
-- By: Othgar
-- Copyleft All Rights Reversed
-- Default state
-- Only set a value if the variable is nil, else you're overwriting every time.
TXPVisible = TXPVisible or true;
TXPLocked = TXPLocked or true;
TXPTexture = TXPTexture or "simple"
-- Constants
local ThousandSeparator = ","
local TipTitle = "Tribal XP"
local _, class = UnitClass("player")
local r,g,b = RAID_CLASS_COLORS[class].r, RAID_CLASS_COLORS[class].g, RAID_CLASS_COLORS[class].b
local TEXTURES = {
curve = [[Interface\AddOns\TXP\media\curve]],
simple = [[Interface\AddOns\TXP\media\simple]],
split = [[Interface\AddOns\TXP\media\split]],
}
local function FmtBigNum(n)
local left, num, right = string.match(n .. "", '^([^%d]*%d)(%d*)(.-)')
return left..(num:reverse():gsub('(%d%d%d)', '%1'.. ","):reverse())..right
end
local TribalExperienceBar = CreateFrame("StatusBar","TribalExperienceBar",UIParent)
TribalExperienceBar:SetSize(675, 150)
TribalExperienceBar:SetPoint("CENTER", UIParent, "CENTER", 0, 0);
TribalExperienceBar:SetFrameStrata("MEDIUM");
TribalExperienceBar:SetClampedToScreen(1);
TribalExperienceBar:SetBackdrop({bgFile="Interface\\Tooltips\\UI-Tooltip-Background", edgeFile="", tile=1, tileSize=10, edgeSize=10, insets={left=2, right=2, top=2, bottom=2}});
TribalExperienceBar:SetBackdropColor(r,g,b,0)
TribalExperienceBar:SetMovable(1);
TribalExperienceBar:EnableMouse(1);
-- Use the variable, not a string representation of its name
TribalExperienceBar:SetStatusBarTexture(TEXTURES[TXPTexture])
TribalExperienceBar:SetStatusBarColor(r,g,b)
TribalExperienceBar:SetAlpha(.75)
local TXPBarText = TribalExperienceBar:CreateFontString("TXPBarText","OVERLAY");
TXPBarText:SetFontObject(GameFontNormal)
TXPBarText:SetTextColor(r,g,b)
TXPBarText:SetPoint("CENTER", TribalExperienceBar, "BOTTOM", 0, 0);
TXPBarText:SetJustifyH("CENTER");
TXPBarText:SetJustifyV("CENTER");
--Register Events
TribalExperienceBar:RegisterEvent("PLAYER_ENTERING_WORLD");
TribalExperienceBar:RegisterEvent("PLAYER_XP_UPDATE");
TribalExperienceBar:RegisterEvent("PLAYER_LOGIN");
TribalExperienceBar:RegisterEvent("PLAYER_LEVEL_UP");
--Event handling
TribalExperienceBar:SetScript("OnEvent", function(self, event, ...)
local curxp = UnitXP("player")
local levelmax = UnitXPMax("player")
local perc = string.format("%.1f%%", (100*(curxp/levelmax)))
local perbox = levelmax / 20
local mystr = string.format("%.1fb - %.1fb tnl | %s", curxp / perbox, (levelmax - curxp) / perbox, perc)
TXPBarText:SetText(mystr)
TribalExperienceBar:SetMinMaxValues(0, levelmax)
TribalExperienceBar:SetValue(curxp)
if TXPVisible then
TribalExperienceBar:Show()
else
TribalExperienceBar:Hide()
end
end)
-- move me
TribalExperienceBar:SetScript("OnMouseDown", function()
if not TXPLocked then
TribalExperienceBar:StartMoving()
else
TribalExperienceBar:StopMovingOrSizing()
end
end)
TribalExperienceBar:SetScript("OnMouseUp", function() TribalExperienceBar:StopMovingOrSizing() end)
-- register slash commands
SLASH_TXP1 = '/TXP';
local COMMAND_PARAMS = {
hide = function()
if TXPVisible then
TXPVisible=false
TribalExperienceBar:Hide()
print("Experience hidden, type /TXP show to show.")
end
end,
show = function()
if not TXPVisible then
TXPVisible=true
TribalExperienceBar:Show()
print("Experience displayed, type /TXP hide to hide.")
end
end,
rested = function()
if not GetXPExhaustion() then
print("You have no rested EXP.")
else
print("You have "..GetXPExhaustion().." rested EXP remaining.")
end
end,
lock = function()
if TXPLocked then
TXPLocked = false
print("TXP UNlocked")
else
TXPLocked = true
print("TXP Locked")
end
end,
}
local function slashcmdhandler(param)
param = param:lower()
if TEXTURES[param] then
if TXPTexture == param then
print(("Texture already set to %s"):format(param))
return
end
TXPTexture = param
TribalExperienceBar:SetStatusBarTexture(TEXTURES[param])
print(("Texture set to %s"):format(param))
return
end
if COMMAND_PARAMS[param] then
COMMAND_PARAMS[param]()
return
end
print("Valid commands are:");
print("/TXP show (Show the experience bar.)");
print("/TXP hide (Hide the experience bar.)");
print("/TXP rested (Shows the amount of rested XP.)");
print("/TXP Lock (Locks the experience bar if it is unlocked, Unlocks it if it is locked.")
print("/TXP Curve (Sets the status bar texture to Curve.")
print("/TXP Simple (Sets the bar texture to Simple")
print("/TXP Split (Sets the Bar texture to Split")
end
SlashCmdList["TXP"] = slashcmdhandler;
--Tooltip
local function OnEnter(self)
GameTooltip:Show()
end
local function OnLeave(self)
GameTooltip:Hide()
end
--hide @ 85
if UnitLevel("player") >= 85 then
TribalExperienceBar:Hide() print("Experience bar hidden, type /TXP show to show.")
TXPVisible = false
end