diff --git a/Interface/AddOns/SVUI/assets/artwork/Icons/DOCK-GARRISON.blp b/Interface/AddOns/SVUI/assets/artwork/Icons/DOCK-GARRISON.blp new file mode 100644 index 0000000..cbbe2ac Binary files /dev/null and b/Interface/AddOns/SVUI/assets/artwork/Icons/DOCK-GARRISON.blp differ diff --git a/Interface/AddOns/SVUI/framework/docks/docks.lua b/Interface/AddOns/SVUI/framework/docks/docks.lua index e638d77..54e203d 100644 --- a/Interface/AddOns/SVUI/framework/docks/docks.lua +++ b/Interface/AddOns/SVUI/framework/docks/docks.lua @@ -77,15 +77,15 @@ local ORDER_TEMP = {}; local ORDER_TEST = {}; local DOCK_LOCATIONS = { - ["BottomLeft"] = {1, "LEFT", true}, - ["BottomRight"] = {-1, "RIGHT", true}, - ["TopLeft"] = {1, "LEFT", false}, - ["TopRight"] = {-1, "RIGHT", false}, + ["BottomLeft"] = {1, "LEFT", true, "ANCHOR_TOPLEFT"}, + ["BottomRight"] = {-1, "RIGHT", true, "ANCHOR_TOPLEFT"}, + ["TopLeft"] = {1, "LEFT", false, "ANCHOR_BOTTOMLEFT"}, + ["TopRight"] = {-1, "RIGHT", false, "ANCHOR_BOTTOMLEFT"}, }; local STAT_LOCATIONS = { - ["BottomCenter"] = {1, "LEFT", true}, - ["TopCenter"] = {1, "LEFT", false}, + ["BottomCenter"] = {1, "LEFT", true, "ANCHOR_TOPLEFT"}, + ["TopCenter"] = {1, "LEFT", false, "ANCHOR_BOTTOMLEFT"}, }; local Dock = SV:NewSubClass("Dock", L["Docks"]); @@ -289,7 +289,8 @@ local DockletButton_OnEnter = function(self, ...) self:SetPanelColor("highlight") self.Icon:SetGradient(unpack(SV.Media.gradient.bizzaro)) - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4) + local tipAnchor = self:GetAttribute("tipAnchor") + GameTooltip:SetOwner(self, tipAnchor, 0, 4) GameTooltip:ClearLines() if(self.CustomTooltip) then self:CustomTooltip() @@ -536,6 +537,7 @@ local AddToDock = function(self, button) button.FrameLink:FillInner(self.Parent.Window) end + self:UpdateOrder() self:Update() end @@ -614,6 +616,7 @@ local CreateBasicToolButton = function(self, displayName, texture, onclick, glob button:SetFramedButtonTemplate() button.Icon:SetTexture(dockIcon) button:SetAttribute("tipText", displayName) + button:SetAttribute("tipAnchor", self.Data.TipAnchor) button:SetAttribute("ownerFrame", globalName) button.OrderIndex = 0; @@ -652,6 +655,7 @@ for location, settings in pairs(DOCK_LOCATIONS) do Location = location, Anchor = settings[2], Modifier = settings[1], + TipAnchor = settings[4], Default = "", Buttons = {}, Order = {}, diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua index 059d177..d3c9dc7 100644 --- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua +++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua @@ -340,6 +340,8 @@ local SlotUpdate = function(self, slotID) slot:SetBackdropColor(0, 0, 0, 0.6) slot:SetBackdropBorderColor(0, 0, 0, 1) end + else + GameTooltip:Hide() end if(bagType) then diff --git a/Interface/AddOns/SVUI/packages/map/SVMap.lua b/Interface/AddOns/SVUI/packages/map/SVMap.lua index 7c558bf..51f1b51 100644 --- a/Interface/AddOns/SVUI/packages/map/SVMap.lua +++ b/Interface/AddOns/SVUI/packages/map/SVMap.lua @@ -59,6 +59,8 @@ local MMBHolder, MMBBar; local NewHook = hooksecurefunc local Initialized = false + +local GARRISON_ICON = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-GARRISON]]; --[[ ########################################################## DATA UPVALUES @@ -79,6 +81,39 @@ local MM_HEIGHT = (MM_SIZE - (MM_OFFSET_TOP + MM_OFFSET_BOTTOM) + (MM_BRDR * 2)) local WM_ALPHA = false; local SVUI_MinimapFrame = CreateFrame("Frame", "SVUI_MinimapFrame", UIParent) SVUI_MinimapFrame:SetSize(MM_WIDTH, MM_HEIGHT) +--[[ +########################################################## +GENERAL HELPERS +########################################################## +]]-- +local function GetDockCooldown(itemID) + local start,duration = GetItemCooldown(itemID) + local expires = duration - (GetTime() - start) + if expires > 0.05 then + local timeLeft = 0; + local calc = 0; + if expires < 4 then + return format("|cffff0000%.1f|r", expires) + elseif expires < 60 then + return format("|cffffff00%d|r", floor(expires)) + elseif expires < 3600 then + timeLeft = ceil(expires / 60); + calc = floor((expires / 60) + .5); + return format("|cffff9900%dm|r", timeLeft) + elseif expires < 86400 then + timeLeft = ceil(expires / 3600); + calc = floor((expires / 3600) + .5); + return format("|cff66ffff%dh|r", timeLeft) + else + timeLeft = ceil(expires / 86400); + calc = floor((expires / 86400) + .5); + return format("|cff6666ff%dd|r", timeLeft) + end + else + return "|cff6666ffReady|r" + end +end + --[[ /$$$$$$$ /$$ /$$ /$$$$$$$$/$$$$$$$$/$$$$$$ /$$ /$$ /$$$$$$ | $$__ $$| $$ | $$|__ $$__/__ $$__/$$__ $$| $$$ | $$ /$$__ $$ @@ -413,6 +448,19 @@ end HANDLERS ########################################################## ]]-- +local SetGarrisonTooltip = function(self) + local text1 = self:GetAttribute("tipText") + local text2 = self:GetAttribute("tipExtraText") + GameTooltip:AddDoubleLine("[Left-Click]", text1, 0, 1, 0, 1, 1, 1) + if InCombatLockdown() then return end + if(text2) then + local remaining = GetDockCooldown(110560) + GameTooltip:AddLine(" ", 1, 1, 1) + GameTooltip:AddDoubleLine("[Right Click]", text2, 0, 1, 0, 1, 1, 1) + GameTooltip:AddDoubleLine(L["Time Remaining"], remaining, 1, 1, 1, 0, 1, 1) + end +end + local MiniMap_MouseUp = function(self, btn) local position = self:GetPoint() if btn == "RightButton" then @@ -773,25 +821,40 @@ function MOD:Load() QueueStatusMinimapButton:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 6, 5) QueueStatusMinimapButton:SetPanelTemplate("Button", false, 1, -2, -2) - GarrisonLandingPageMinimapButton:RemoveTextures() - GarrisonLandingPageMinimapButton:ClearAllPoints() - GarrisonLandingPageMinimapButton:Size(40,40) - GarrisonLandingPageMinimapButton:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 0, 0) - QueueStatusFrame:SetClampedToScreen(true) QueueStatusMinimapButtonBorder:Hide() QueueStatusMinimapButton:SetScript("OnShow", function() MiniMapInstanceDifficulty:Point("BOTTOMLEFT", QueueStatusMinimapButton, "TOPLEFT", 0, 0) GuildInstanceDifficulty:Point("BOTTOMLEFT", QueueStatusMinimapButton, "TOPLEFT", 0, 0) MiniMapChallengeMode:Point("BOTTOMLEFT", QueueStatusMinimapButton, "TOPRIGHT", 0, 0) - GarrisonLandingPageMinimapButton:Point("BOTTOMLEFT", QueueStatusMinimapButton, "BOTTOMRIGHT", 0, 0) end) QueueStatusMinimapButton:SetScript("OnHide", function() - GarrisonLandingPageMinimapButton:Point("BOTTOMLEFT", mapHolder, "BOTTOMLEFT", 0, 0) MiniMapInstanceDifficulty:Point("LEFT", mapHolder, "LEFT", 0, 0) GuildInstanceDifficulty:Point("LEFT", mapHolder, "LEFT", 0, 0) MiniMapChallengeMode:Point("LEFT", mapHolder, "LEFT", 12, 0) end) + + local garrison = SV.Dock:SetDockButton("TopLeft", L["Garrison"], GARRISON_ICON, nil, "SVUI_Garrison", SetGarrisonTooltip, "SecureActionButtonTemplate") + garrison:SetAttribute("type1", "click") + garrison:SetAttribute("clickbutton", GarrisonLandingPageMinimapButton) + + local garrisonStone = GetItemInfo(110560); + if(garrisonStone and type(garrisonStone) == "string") then + garrison:SetAttribute("tipExtraText", L["Garrison Hearthstone"]) + garrison:SetAttribute("type2", "macro") + garrison:SetAttribute("macrotext", "/use [nomod] " .. garrisonStone) + end + + GarrisonLandingPageMinimapButton:RemoveTextures() + GarrisonLandingPageMinimapButton:ClearAllPoints() + GarrisonLandingPageMinimapButton:SetAllPoints(garrison) + GarrisonLandingPageMinimapButton:SetNormalTexture("") + GarrisonLandingPageMinimapButton:SetPushedTexture("") + GarrisonLandingPageMinimapButton:SetHighlightTexture("") + + GarrisonLandingPageMinimapButton:HookScript("OnShow", function() SV.Dock.TopLeft.Bar:Add(SVUI_Garrison) end) + GarrisonLandingPageMinimapButton:HookScript("OnHide", function() SV.Dock.TopLeft.Bar:Remove(SVUI_Garrison) end) + if FeedbackUIButton then FeedbackUIButton:Die() end diff --git a/Interface/AddOns/SVUI/packages/tip/SVTip.lua b/Interface/AddOns/SVUI/packages/tip/SVTip.lua index b782781..0f64426 100644 --- a/Interface/AddOns/SVUI/packages/tip/SVTip.lua +++ b/Interface/AddOns/SVUI/packages/tip/SVTip.lua @@ -273,7 +273,11 @@ local function tiplevel(this, start) end local _hook_GameTooltip_OnTooltipSetUnit = function(self) - self.SuperBorder:ClearMaskColors() + local mask = self.SuperBorder + mask:ClearMaskColors() + mask:ClearAllPoints() + mask:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0) + local unit = select(2, self:GetUnit()) -- local TamablePet; if self:GetOwner() ~= UIParent and SV.db.SVTip.visibility.unitFrames ~= "NONE" then @@ -356,7 +360,7 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self) if(not IsAddOnLoaded("HealBot") and (SV.db.SVTip.inspectInfo or isShiftKeyDown)) then ShowInspectInfo(self, unit, unitLevel, colors.r, colors.g, colors.b, 0) - end + end else if UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) then colors = TAPPED_COLOR @@ -400,10 +404,10 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self) end lvlLine:SetFormattedText("|cff%02x%02x%02x%s|r%s %s%s", qColor.r * 255, qColor.g * 255, qColor.b * 255, unitLevel > 0 and unitLevel or "??", classification[creatureClassification] or "", creatureType, temp) - end + end end -- if(TamablePet) then - -- GameTooltip:AddLine(TAMABLE_INDICATOR) + -- self:AddLine(TAMABLE_INDICATOR) -- end if SV.db.SVTip.targetInfo then local unitTarget = unit.."target" @@ -413,7 +417,7 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self) else totColor = FACTION_BAR_COLORS[UnitReaction(unitTarget, "player")] end - GameTooltip:AddDoubleLine(format("%s:", TARGET), format("|cff%02x%02x%02x%s|r", totColor.r * 255, totColor.g * 255, totColor.b * 255, UnitName(unitTarget))) + self:AddDoubleLine(format("%s:", TARGET), format("|cff%02x%02x%02x%s|r", totColor.r * 255, totColor.g * 255, totColor.b * 255, UnitName(unitTarget))) end if IsInGroup() then for i = 1, GetNumGroupMembers() do @@ -425,21 +429,29 @@ local _hook_GameTooltip_OnTooltipSetUnit = function(self) end local maxTargets = #targetList; if maxTargets > 0 then - GameTooltip:AddLine(format("%s (|cffffffff%d|r): %s", L["Targeted By:"], maxTargets, tconcat(targetList, ", ")), nil, nil, nil, true) + self:AddLine(format("%s (|cffffffff%d|r): %s", L["Targeted By:"], maxTargets, tconcat(targetList, ", ")), nil, nil, nil, true) twipe(targetList) end end - end - if colors then + end + + if colors then GameTooltipStatusBar:SetStatusBarColor(colors.r, colors.g, colors.b) else GameTooltipStatusBar:SetStatusBarColor(0.6, 0.6, 0.6) - end + end + + if(GameTooltipStatusBar:IsShown()) then + mask:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 0, mask.ToggleHeight) + else + mask:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 0, 0) + end end local _hook_GameTooltipStatusBar_OnValueChanged = function(self, value) - if not value or not SV.db.SVTip.healthBar.text or not self.text then return end - local unit = select(2,self:GetParent():GetUnit()) + if not value or not SV.db.SVTip.healthBar.text or not self.text then return end + local tooltip = self:GetParent() + local unit = select(2, tooltip:GetUnit()) if not unit then local mFocus = GetMouseFocus() if mFocus and mFocus:GetAttribute("unit") then @@ -447,14 +459,14 @@ local _hook_GameTooltipStatusBar_OnValueChanged = function(self, value) end end local min,max = self:GetMinMaxValues() - if value > 0 and max==1 then + if((value > 0) and (max == 1)) then self.text:SetText(format("%d%%",floor(value * 100))) self:SetStatusBarColor(TAPPED_COLOR.r,TAPPED_COLOR.g,TAPPED_COLOR.b) - elseif value==0 or unit and UnitIsDeadOrGhost(unit) then + elseif((value == 0) or (unit and UnitIsDeadOrGhost(unit))) then self.text:SetText(DEAD) - else + else self.text:SetText(TruncateString(value).." / "..TruncateString(max)) - end + end end local _hook_GameTooltip_OnTooltipSetItem = function(self) @@ -478,7 +490,7 @@ local _hook_GameTooltip_OnTooltipSetItem = function(self) self:AddLine(" ") self:AddDoubleLine(left,right) end - self.itemCleared = true + self.itemCleared = true end end @@ -503,7 +515,7 @@ local _hook_GameTooltip_ShowStatusBar = function(self, ...) bar.border=border end bar.styled=true - end + end end local _hook_OnSetUnitAura = function(self, unit, index, filter) @@ -636,7 +648,7 @@ local Override_BGColor = function(self, r, g, b, a) end end -local Override_BorderColor = function(self, r, g, b, a) +local Override_BorderColor = function(self, r, g, b, a) if(b ~= 0 or (a and a ~= 0)) then self:SetBackdropBorderColor(0, 0, 0, 0) self.SuperBorder:SetBackdropBorderColor(0, 0, 0) @@ -662,12 +674,6 @@ local _hook_OnTipShow = function(self) self:SetBackdropBorderColor(0, 0, 0, 0) local mask = self.SuperBorder - mask:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0) - if(GameTooltipStatusBar:IsShown()) then - mask:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 0, mask.ToggleHeight) - else - mask:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 0, 0) - end mask[1]:SetSize(widthScale,heightWidth) mask[2]:SetSize(widthScale,heightWidth) @@ -684,6 +690,12 @@ local _hook_OnTipShow = function(self) }) mask:SetBackdropColor(0, 0, 0, 1) mask:SetBackdropBorderColor(0, 0, 0, 1) + + if(not GameTooltipStatusBar:IsShown()) then + mask:ClearAllPoints() + mask:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0) + mask:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 0, 0) + end end local _hook_OnTipHide = function(self) diff --git a/Interface/AddOns/SVUI/packages/tools/components/profession.lua b/Interface/AddOns/SVUI/packages/tools/components/profession.lua index 28b8c03..41821b1 100644 --- a/Interface/AddOns/SVUI/packages/tools/components/profession.lua +++ b/Interface/AddOns/SVUI/packages/tools/components/profession.lua @@ -76,6 +76,7 @@ LOCALS ]]-- local ICON_SHEET = [[Interface\AddOns\SVUI\assets\artwork\Icons\PROFESSIONS]]; local HEARTH_ICON = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-HEARTH]]; + local TOOL_DATA = { [171] = {0,0.25,0,0.25}, -- PRO-ALCHEMY [794] = {0.25,0.5,0,0.25,80451}, -- PRO-ARCHAELOGY @@ -139,14 +140,15 @@ local SetMacroTooltip = function(self) end local SetHearthTooltip = function(self) - GameTooltip:AddDoubleLine("[Left-Click]", L["Hearthstone"], 0, 1, 0, 1, 1, 1) + local text1 = self:GetAttribute("tipText") + local text2 = self:GetAttribute("tipExtraText") + GameTooltip:AddDoubleLine("[Left-Click]", text1, 0, 1, 0, 1, 1, 1) if InCombatLockdown() then return end local remaining = GetMacroCooldown(6948) GameTooltip:AddDoubleLine(L["Time Remaining"], remaining, 1, 1, 1, 0, 1, 1) - local extraText = self:GetAttribute("tipExtraText") - if(extraText) then + if(text2) then GameTooltip:AddLine(" ", 1, 1, 1) - GameTooltip:AddDoubleLine(extraText, "[Right Click]", 1, 1, 1, 0, 1, 0) + GameTooltip:AddDoubleLine("[Right Click]", text2, 0, 1, 0, 1, 1, 1) end end @@ -161,7 +163,7 @@ local function CreateMacroToolButton(proName, proID, itemID) if proID == 186 then proName = GetSpellInfo(2656) end - button:RegisterForClicks("AnyDown") + --button:RegisterForClicks("AnyDown") button:SetAttribute("type1", "macro") button:SetAttribute("macrotext1", "/cast [nomod]" .. proName) @@ -177,7 +179,7 @@ local function CreateMacroToolButton(proName, proID, itemID) button:SetAttribute("type2", "macro") button:SetAttribute("macrotext2", "/cast [nomod] " .. rightClick) end -end +end local function LoadToolBarProfessions() if((not SV.db.SVTools.professions) or MOD.ToolBarLoaded) then return end diff --git a/Interface/AddOns/SVUI/packages/tools/components/raidleader.lua b/Interface/AddOns/SVUI/packages/tools/components/raidleader.lua index 83b019f..98a8462 100644 --- a/Interface/AddOns/SVUI/packages/tools/components/raidleader.lua +++ b/Interface/AddOns/SVUI/packages/tools/components/raidleader.lua @@ -55,6 +55,23 @@ local Button_OnLeave = function(self) GameTooltip:Hide() end +local ToolButton_OnEnter = function(self, ...) + SVUI_RaidToolDockButton:SetPanelColor("highlight") + SVUI_RaidToolDockButton.Icon:SetGradient(unpack(SV.Media.gradient.bizzaro)) + + GameTooltip:SetOwner(self, "ANCHOR_BOTTOMLEFT", 0, 4) + GameTooltip:ClearLines() + GameTooltip:AddDoubleLine("[Left-Click]", RAID_CONTROL, 0, 1, 0, 1, 1, 1) + GameTooltip:Show() +end + +local ToolButton_OnLeave = function(self, ...) + SVUI_RaidToolDockButton:SetPanelColor("default") + SVUI_RaidToolDockButton.Icon:SetGradient(unpack(SV.Media.gradient.icon)) + + GameTooltip:Hide() +end + local function NewToolButton(name, parent, template, width, height, point, relativeto, point2, xOfs, yOfs, textDisplay) local button = CreateFrame("Button", name, parent, template) button:RemoveTextures() @@ -116,6 +133,9 @@ function MOD:LoadRaidLeaderTools() local SVUI_RaidToolToggle = CreateFrame("Button", "SVUI_RaidToolToggle", self.RaidTool, "UIMenuButtonStretchTemplate, SecureHandlerClickTemplate") SVUI_RaidToolToggle:SetAllPoints(self.RaidTool) SVUI_RaidToolToggle:RemoveTextures() + SVUI_RaidToolToggle:SetNormalTexture("") + SVUI_RaidToolToggle:SetPushedTexture("") + SVUI_RaidToolToggle:SetHighlightTexture("") SVUI_RaidToolToggle:SetFrameRef("SVUI_RaidToolMenu", SVUI_RaidToolMenu) SVUI_RaidToolToggle:SetAttribute("_onclick", [=[ local raidUtil = self:GetFrameRef("SVUI_RaidToolMenu"); @@ -137,7 +157,8 @@ function MOD:LoadRaidLeaderTools() closeButton:SetPoint("BOTTOM", raidUtil, "BOTTOM", 0, 2) ]=]); SVUI_RaidToolToggle:SetScript("PostClick", function(self) self:RemoveTextures(); SVUI_RaidToolMenu.toggled = true end); - + SVUI_RaidToolToggle:HookScript("OnEnter", ToolButton_OnEnter) + SVUI_RaidToolToggle:HookScript("OnLeave", ToolButton_OnLeave) SV:AddToDisplayAudit(self.RaidTool); --Close Button diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua index f3a953f..33efc4b 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/alert.lua @@ -269,7 +269,7 @@ local function AlertStyle() frame.shine:Die() if not frame.Icon.b then frame.Icon.b = CreateFrame("Frame", nil, frame) - frame.Icon.b:SetFixedPanelTemplate("Default") + frame.Icon.b:SetPanelTemplate("Transparent") frame.Icon.b:WrapOuter(frame.Icon) frame.Icon:SetParent(frame.Icon.b) end