-- rStatusButton: core -- zork, 2018 ----------------------------- -- Variables ----------------------------- local A, L = ... L.addonName = A L.dragFrames = {} L.addonColor = "00FF00AA" L.addonShortcut = "rsb" L.mediapath = "interface\\addons\\"..A.."\\media\\" -- local GameTooltip, C_AzeriteItem = GameTooltip, C_AzeriteItem local GameTooltip = GameTooltip ----------------------------- -- Config ----------------------------- local cfg = { scale = 0.9, point = { "TOP", 0, -150 }, size = { 26, 26 }, frameVisibility = "[combat]hide;[mod]show;hide", frameVisibilityFunc = nil, --fader via OnShow fader = { fadeInAlpha = 1, fadeInDuration = 0.3, fadeInSmooth = "OUT", fadeOutAlpha = 0, fadeOutDuration = 0.9, fadeOutSmooth = "OUT", fadeOutDelay = 0, trigger = "OnShow", }, } ----------------------------- -- Functions ----------------------------- local function OnEnter(self) GameTooltip:SetOwner(self, "ANCHOR_TOP") GameTooltip:AddLine(self:GetName(), 1, 0.5, 0, 1, 1, 1) --experience if UnitLevel("player") < 80 then -- MAX_PLAYER_LEVEL then -- classic-disable --and not IsXPUserDisabled() then local cur, max = UnitXP("player"), UnitXPMax("player") local lvl = UnitLevel("player") local rested = GetXPExhaustion() or 0 GameTooltip:AddLine("Experience", 0, 1, 0.5, 1, 1, 1) GameTooltip:AddDoubleLine("Level", lvl, 1, 1, 1, 1, 1, 1) GameTooltip:AddDoubleLine("Curent", cur.."/"..max.." ("..math.floor(cur/max*100).."%)", 1, 1, 1, 1, 1, 1) GameTooltip:AddDoubleLine("Rested", rested.." ("..math.floor(rested/max*100).."%)", 1, 1, 1, 1, 1, 1) end --honor -- classic-disable --[[ --if InActiveBattlefield() or IsInActiveWorldPVP() then local cur, max = UnitHonor("player"), UnitHonorMax("player") local lvl = UnitHonorLevel("player") GameTooltip:AddLine("Honor", 0, 1, 0.5, 1, 1, 1) GameTooltip:AddDoubleLine("Level", lvl, 1, 1, 1, 1, 1, 1) GameTooltip:AddDoubleLine("Cur / Max", cur.." / "..max, 1, 1, 1, 1, 1, 1) GameTooltip:AddDoubleLine("Needed", (max-cur), 1, 1, 1, 1, 1, 1) --end ]]-- --reputation local name, standing, min, max, cur = GetWatchedFactionInfo() if name then GameTooltip:AddLine(name.." Reputation", 0, 1, 0.5, 1, 1, 1) GameTooltip:AddDoubleLine("Level", _G["FACTION_STANDING_LABEL"..standing], 1, 1, 1, 1, 1, 1) GameTooltip:AddDoubleLine("Cur / Max", cur.." / "..max, 1, 1, 1, 1, 1, 1) GameTooltip:AddDoubleLine("Needed", (max-cur), 1, 1, 1, 1, 1, 1) end --azerite -- classic-disable -- local azeriteItem = C_AzeriteItem.FindActiveAzeriteItem() -- if azeriteItem then -- local cur, max = C_AzeriteItem.GetAzeriteItemXPInfo(azeriteItem) -- local lvl = C_AzeriteItem.GetPowerLevel(azeriteItem) -- GameTooltip:AddLine("Azerite", 0, 1, 0.5, 1, 1, 1) -- GameTooltip:AddDoubleLine("Level", lvl, 1, 1, 1, 1, 1, 1) -- GameTooltip:AddDoubleLine("Cur / Max", cur.." / "..max, 1, 1, 1, 1, 1, 1) -- GameTooltip:AddDoubleLine("Needed", (max-cur), 1, 1, 1, 1, 1, 1) -- end --islandweekly -- classic-disable --[[ local iwqID = C_IslandsQueue.GetIslandsWeeklyQuestID() if iwqID and IsQuestFlaggedCompleted(iwqID) then GameTooltip:AddLine("Island Weekly", 0, 1, 0.5, 1, 1, 1) GameTooltip:AddDoubleLine("Status", "Finished", 1, 1, 1, 1, 1, 1) elseif iwqID then local _, _, _, cur, max = GetQuestObjectiveInfo(iwqID, 1, false) GameTooltip:AddLine("Island Weekly", 0, 1, 0.5, 1, 1, 1) GameTooltip:AddDoubleLine("Cur / Max", cur.." / "..max, 1, 1, 1, 1, 1, 1) GameTooltip:AddDoubleLine("Needed", (max-cur), 1, 1, 1, 1, 1, 1) end ]]-- GameTooltip:Show() end local function OnLeave(self) GameTooltip:Hide() end local function OnClick(self) self.count = self.count+1 if self.count % 2 == 0 then self.gem:SetTexture(L.mediapath.."chatgem_inactive") else self.gem:SetTexture(L.mediapath.."chatgem_active") end end ----------------------------- -- Init ----------------------------- local button = CreateFrame("Button", A, UIParent, SecureHandlerStateTemplate) button:SetScale(cfg.scale) button:SetPoint(unpack(cfg.point)) button:SetSize(unpack(cfg.size)) button.frameVisibility = cfg.frameVisibility button.frameVisibilityFunc = cfg.frameVisibilityFunc local gem = button:CreateTexture(nil, "BACKGROUND",nil,-8) gem:SetTexture(L.mediapath.."chatgem_active") gem:SetAllPoints() button.gem = gem button.count = 1 RegisterStateDriver(button, cfg.frameVisibilityFunc or "visibility", cfg.frameVisibility) button:SetScript("OnEnter", OnEnter) button:SetScript("OnLeave", OnLeave) button:SetScript("OnClick", OnClick) --OnShow fader if cfg.fader then rLib:CreateFrameFader(button, cfg.fader) end --drag frame rLib:CreateDragFrame(button, L.dragFrames, -2, true) --create slash commands rLib:CreateSlashCmd(L.addonName, L.addonShortcut, L.dragFrames, L.addonColor)