Files
pfUI/modules/panel.lua
T
2016-05-21 12:59:11 +02:00

316 lines
14 KiB
Lua

pfUI:RegisterModule("panel", function ()
pfUI.panel = CreateFrame("Frame",nil,UIParent)
pfUI.panel:RegisterEvent("PLAYER_ENTERING_WORLD")
pfUI.panel:RegisterEvent("UNIT_AURA")
pfUI.panel:RegisterEvent("PLAYER_MONEY")
pfUI.panel:RegisterEvent("PLAYER_XP_UPDATE")
pfUI.panel:RegisterEvent("FRIENDLIST_UPDATE")
pfUI.panel:RegisterEvent("GUILD_ROSTER_UPDATE")
pfUI.panel:RegisterEvent("PLAYER_GUILD_UPDATE")
pfUI.panel:RegisterEvent("PLAYER_REGEN_ENABLED")
pfUI.panel:RegisterEvent("PLAYER_DEAD")
pfUI.panel:RegisterEvent("MINIMAP_ZONE_CHANGED")
pfUI.panel:SetScript("OnEvent", function()
if event == "PLAYER_ENTERING_WORLD" then
pfUI.panel:UpdateGold()
pfUI.panel:UpdateRepair();
pfUI.panel:UpdateExp()
pfUI.panel:UpdateFriend()
pfUI.panel:UpdateGuild();
pfUI.panel:UpdateRepair();
pfUI.panel:UpdateZone();
elseif event == "PLAYER_MONEY" then
pfUI.panel:UpdateGold()
pfUI.panel:UpdateRepair();
elseif event == "PLAYER_XP_UPDATE" then
pfUI.panel:UpdateExp()
elseif event == "FRIENDLIST_UPDATE" then
pfUI.panel:UpdateFriend()
elseif event == "GUILD_ROSTER_UPDATE" or event == "PLAYER_GUILD_UPDATE" then
pfUI.panel:UpdateGuild();
elseif event == "PLAYER_REGEN_ENABLED" or event == "PLAYER_DEAD" then
pfUI.panel:UpdateRepair();
elseif event == "MINIMAP_ZONE_CHANGED" then
pfUI.panel:UpdateZone()
end
end)
pfUI.panel.clock = CreateFrame("Frame",nil,UIParent)
pfUI.panel.clock:SetScript("OnUpdate",function(s,e)
if not pfUI.panel.clock.tick then pfUI.panel.clock.tick = GetTime() - 1 end
if GetTime() >= pfUI.panel.clock.tick + 1 then
pfUI.panel.clock.tick = GetTime()
pfUI.panel:OutputPanel("time", date("%H:%M:%S"))
local _, _, lag = GetNetStats();
local fps = floor(GetFramerate());
pfUI.panel:OutputPanel("fps", floor(GetFramerate()) .. " fps & " .. lag .. " ms")
end
end);
-- Update "exp"
function pfUI.panel:UpdateExp ()
if UnitLevel("player") ~= 60 then
curexp = UnitXP("player")
if oldexp ~= nil then
difexp = curexp - oldexp
maxexp = UnitXPMax("player")
remexp = floor((maxexp - curexp)/difexp)
remstring = "|cff555555 [" .. remexp .. "]|r"
end
oldexp = curexp
local a=UnitXP("player")
local b=UnitXPMax("player")
local xprested = tonumber(GetXPExhaustion())
if remstring == nil then remstring = "" end
if xprested ~= nil then
pfUI.panel:OutputPanel("exp", "Exp:|cffaaaaff "..floor((a/b)*100).."%"..remstring)
else
pfUI.panel:OutputPanel("exp", "Exp: " .. floor((a/b)*100) .. "%" .. remstring)
end
else
pfUI.panel:OutputPanel("exp", "Exp: N/A")
end
end
-- Update "gold"
function pfUI.panel:UpdateGold ()
local gold = floor(GetMoney()/ 100 / 100);
local silver = floor(mod((GetMoney()/100),100));
local copper = floor(mod(GetMoney(),100));
pfUI.panel:OutputPanel("gold", gold .. "|cffffd700g|r " .. silver .. "|cffc7c7cfs|r " .. copper .. "|cffeda55fc|r")
end
-- Update "friends"
function pfUI.panel:UpdateFriend ()
local online = 0;
local all = GetNumFriends();
for friendIndex=1, all do
friend_name, friend_level, friend_class, friend_area, friend_connected = GetFriendInfo(friendIndex);
if ( friend_connected ) then
online = online + 1;
end
end
pfUI.panel:OutputPanel("friends", "Friends: " .. online)
end
-- Update "guild"
function pfUI.panel:UpdateGuild ()
GuildRoster()
local online = GetNumGuildMembers();
local all = GetNumGuildMembers(true);
pfUI.panel:OutputPanel("guild", "Guild: "..online)
end
-- Update "durability"
local repairToolTip = CreateFrame('GameTooltip', "repairToolTip", this, "GameTooltipTemplate")
function pfUI.panel:UpdateRepair ()
local slotnames = { "Head", "Shoulder", "Chest", "Wrist",
"Hands", "Waist", "Legs", "Feet", "MainHand", "SecondaryHand", "Ranged", };
local id, hasItem, repairCost;
local itemName, durability, tmpText, midpt, lval, rval;
duraLowestslotName = nil;
repPercent = 100;
lowestPercent = 100;
for i,slotName in pairs(slotnames) do
id, _ = GetInventorySlotInfo(slotName.. "Slot");
repairToolTip:Hide()
repairToolTip:SetOwner(this, "ANCHOR_LEFT");
hasItem, _, repCost = repairToolTip:SetInventoryItem("player", id);
if (not hasItem) then repairToolTip:ClearLines()
else
for i=1, 30, 1 do
tmpText = getglobal("repairToolTipTextLeft"..i);
if (tmpText ~= nil) and (tmpText:GetText()) then
local searchstr = string.gsub(DURABILITY_TEMPLATE, "%%[^%s]+", "(.+)")
_, _, lval, rval = string.find(tmpText:GetText(), searchstr);
if (lval and rval) then
repPercent = math.floor(lval / rval * 100)
break;
end
end
end
end
if repPercent < lowestPercent then
lowestPercent = repPercent
end
end
repairToolTip:Hide()
pfUI.panel:OutputPanel("durability", lowestPercent .. "% Armor")
end
function pfUI.panel:UpdateZone ()
pfUI.panel:OutputPanel("zone", GetMinimapZoneText())
end
function pfUI.panel:OutputPanel(entry, value)
if pfUI_config.panel.left.left == entry then
pfUI.panel.left.left.text:SetText(value)
end
if pfUI_config.panel.left.center == entry then
pfUI.panel.left.center.text:SetText(value)
end
if pfUI_config.panel.left.right == entry then
pfUI.panel.left.right.text:SetText(value)
end
if pfUI_config.panel.right.left == entry then
pfUI.panel.right.left.text:SetText(value)
end
if pfUI_config.panel.right.center == entry then
pfUI.panel.right.center.text:SetText(value)
end
if pfUI_config.panel.right.right == entry then
pfUI.panel.right.right.text:SetText(value)
end
if pfUI_config.panel.other.minimap == entry then
pfUI.panel.minimap.text:SetText(value)
end
end
pfUI.panel.left = CreateFrame("Frame", "leftChatPanelBottom", pfUI.panel)
pfUI.panel.left:ClearAllPoints()
pfUI.panel.left:SetHeight(19)
pfUI.panel.left:SetPoint("BOTTOMLEFT", pfUI.chat.left, "BOTTOMLEFT", 2, 2)
pfUI.panel.left:SetPoint("BOTTOMRIGHT", pfUI.chat.left, "BOTTOMRIGHT", -2, 2)
pfUI.panel.left:SetBackdrop(pfUI.backdrop)
pfUI.panel.left:SetBackdropColor(0,0,0,.75)
pfUI.panel.left.hide = CreateFrame("Button", nil, pfUI.panel.left)
pfUI.panel.left.hide:ClearAllPoints()
pfUI.panel.left.hide:SetWidth(15)
pfUI.panel.left.hide:SetHeight(pfUI.panel.left:GetHeight())
pfUI.panel.left.hide:SetPoint("LEFT", 0, 0)
pfUI.panel.left.hide:SetBackdrop(pfUI.backdrop)
pfUI.panel.left.hide.text = pfUI.panel.left.hide:CreateFontString("Status", "LOW", "GameFontNormal")
pfUI.panel.left.hide.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.left.hide.text:ClearAllPoints()
pfUI.panel.left.hide.text:SetAllPoints(pfUI.panel.left.hide)
pfUI.panel.left.hide.text:SetPoint("LEFT", 0, 0)
pfUI.panel.left.hide.text:SetFontObject(GameFontWhite)
pfUI.panel.left.hide.text:SetText("< ")
pfUI.panel.left.hide:SetScript("OnClick", function()
if pfUI.chat.left:IsShown() then pfUI.chat.left:Hide() else pfUI.chat.left:Show() end
end)
pfUI.panel.left.left = CreateFrame("Frame", nil, pfUI.panel.left)
pfUI.panel.left.left:ClearAllPoints()
pfUI.panel.left.left:SetWidth(115)
pfUI.panel.left.left:SetHeight(pfUI.panel.left:GetHeight())
pfUI.panel.left.left:SetPoint("LEFT", 0, 0)
pfUI.panel.left.left.text = pfUI.panel.left.left:CreateFontString("Status", "LOW", "GameFontNormal")
pfUI.panel.left.left.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.left.left.text:ClearAllPoints()
pfUI.panel.left.left.text:SetAllPoints(pfUI.panel.left.left)
pfUI.panel.left.left.text:SetPoint("CENTER", 0, 0)
pfUI.panel.left.left.text:SetFontObject(GameFontWhite)
pfUI.panel.left.left.text:SetText("[DUMMY]")
pfUI.panel.left.center = CreateFrame("Frame", nil, pfUI.panel.left)
pfUI.panel.left.center:ClearAllPoints()
pfUI.panel.left.center:SetWidth(115)
pfUI.panel.left.center:SetHeight(pfUI.panel.left:GetHeight())
pfUI.panel.left.center:SetPoint("CENTER", 0, 0)
pfUI.panel.left.center.text = pfUI.panel.left.center:CreateFontString("Status", "LOW", "GameFontNormal")
pfUI.panel.left.center.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.left.center.text:ClearAllPoints()
pfUI.panel.left.center.text:SetAllPoints(pfUI.panel.left.center)
pfUI.panel.left.center.text:SetPoint("CENTER", 0, 0)
pfUI.panel.left.center.text:SetFontObject(GameFontWhite)
pfUI.panel.left.center.text:SetText("[DUMMY]")
pfUI.panel.left.right = CreateFrame("Frame", nil, pfUI.panel.left)
pfUI.panel.left.right:ClearAllPoints()
pfUI.panel.left.right:SetWidth(115)
pfUI.panel.left.right:SetHeight(pfUI.panel.left:GetHeight())
pfUI.panel.left.right:SetPoint("RIGHT", 0, 0)
pfUI.panel.left.right.text = pfUI.panel.left.right:CreateFontString("Status", "LOW", "GameFontNormal")
pfUI.panel.left.right.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.left.right.text:ClearAllPoints()
pfUI.panel.left.right.text:SetAllPoints(pfUI.panel.left.right)
pfUI.panel.left.right.text:SetPoint("CENTER", 0, 0)
pfUI.panel.left.right.text:SetFontObject(GameFontWhite)
pfUI.panel.left.right.text:SetText("[DUMMY]")
pfUI.panel.right = CreateFrame("Frame", "rightChatPanelBottom", pfUI.panel)
pfUI.panel.right:ClearAllPoints()
pfUI.panel.right:SetHeight(19)
pfUI.panel.right:SetPoint("BOTTOMLEFT", pfUI.chat.right, "BOTTOMLEFT", 2, 2)
pfUI.panel.right:SetPoint("BOTTOMRIGHT", pfUI.chat.right, "BOTTOMRIGHT", -2, 2)
pfUI.panel.right:SetBackdrop(pfUI.backdrop)
pfUI.panel.right:SetBackdropColor(0,0,0,.75)
pfUI.panel.right.hide = CreateFrame("Button", nil, pfUI.panel.right)
pfUI.panel.right.hide:ClearAllPoints()
pfUI.panel.right.hide:SetWidth(15)
pfUI.panel.right.hide:SetHeight(pfUI.panel.right:GetHeight())
pfUI.panel.right.hide:SetPoint("RIGHT", 0, 0)
pfUI.panel.right.hide:SetBackdrop(pfUI.backdrop)
pfUI.panel.right.hide.text = pfUI.panel.right.hide:CreateFontString("Status", "LOW", "GameFontNormal")
pfUI.panel.right.hide.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.right.hide.text:ClearAllPoints()
pfUI.panel.right.hide.text:SetAllPoints(pfUI.panel.right.hide)
pfUI.panel.right.hide.text:SetPoint("LEFT", 0, 0)
pfUI.panel.right.hide.text:SetFontObject(GameFontWhite)
pfUI.panel.right.hide.text:SetText(" >")
pfUI.panel.right.hide:SetScript("OnClick", function()
if pfUI.chat.right:IsShown() then pfUI.chat.right:Hide() else pfUI.chat.right:Show() end
end)
pfUI.panel.right.left = CreateFrame("Frame", nil, pfUI.panel.right)
pfUI.panel.right.left:ClearAllPoints()
pfUI.panel.right.left:SetWidth(115)
pfUI.panel.right.left:SetHeight(pfUI.panel.right:GetHeight())
pfUI.panel.right.left:SetPoint("LEFT", 0, 0)
pfUI.panel.right.left.text = pfUI.panel.right.left:CreateFontString("Status", "LOW", "GameFontNormal")
pfUI.panel.right.left.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.right.left.text:ClearAllPoints()
pfUI.panel.right.left.text:SetAllPoints(pfUI.panel.right.left)
pfUI.panel.right.left.text:SetPoint("CENTER", 0, 0)
pfUI.panel.right.left.text:SetFontObject(GameFontWhite)
pfUI.panel.right.left.text:SetText("[DUMMY]")
pfUI.panel.right.center = CreateFrame("Frame", nil, pfUI.panel.right)
pfUI.panel.right.center:ClearAllPoints()
pfUI.panel.right.center:SetWidth(115)
pfUI.panel.right.center:SetHeight(pfUI.panel.right:GetHeight())
pfUI.panel.right.center:SetPoint("CENTER", 0, 0)
pfUI.panel.right.center.text = pfUI.panel.right.center:CreateFontString("Status", "LOW", "GameFontNormal")
pfUI.panel.right.center.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.right.center.text:ClearAllPoints()
pfUI.panel.right.center.text:SetAllPoints(pfUI.panel.right.center)
pfUI.panel.right.center.text:SetPoint("CENTER", 0, 0)
pfUI.panel.right.center.text:SetFontObject(GameFontWhite)
pfUI.panel.right.center.text:SetText("[DUMMY]")
pfUI.panel.right.right = CreateFrame("Frame", nil, pfUI.panel.right)
pfUI.panel.right.right:ClearAllPoints()
pfUI.panel.right.right:SetWidth(115)
pfUI.panel.right.right:SetHeight(pfUI.panel.right:GetHeight())
pfUI.panel.right.right:SetPoint("RIGHT", 0, 0)
pfUI.panel.right.right.text = pfUI.panel.right.right:CreateFontString("Status", "LOW", "GameFontNormal")
pfUI.panel.right.right.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.right.right.text:ClearAllPoints()
pfUI.panel.right.right.text:SetAllPoints(pfUI.panel.right.right)
pfUI.panel.right.right.text:SetPoint("CENTER", 0, 0)
pfUI.panel.right.right.text:SetFontObject(GameFontWhite)
pfUI.panel.right.right.text:SetText("[DUMMY]")
pfUI.panel.minimap = CreateFrame("Frame", nil, UIParent)
pfUI.panel.minimap:SetBackdrop(pfUI.backdrop)
pfUI.panel.minimap:SetPoint("TOPRIGHT",UIParent, -5, -7 - Minimap:GetHeight())
pfUI.panel.minimap:SetHeight(20)
pfUI.panel.minimap:SetWidth(Minimap:GetWidth())
pfUI.panel.minimap:SetFrameStrata("BACKGROUND")
pfUI.panel.minimap.text = pfUI.panel.minimap:CreateFontString("MinimapZoneText", "LOW", "GameFontNormal")
pfUI.panel.minimap.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", 9, "OUTLINE")
pfUI.panel.minimap.text:SetPoint("CENTER", 0, 0)
pfUI.panel.minimap.text:SetFontObject(GameFontWhite)
pfUI.panel.minimap.text:SetText("[DUMMY]")
end)