diff --git a/Interface/AddOns/SVUI/framework/api/api_templates.lua b/Interface/AddOns/SVUI/framework/api/api_templates.lua index fd5319e..8199d92 100644 --- a/Interface/AddOns/SVUI/framework/api/api_templates.lua +++ b/Interface/AddOns/SVUI/framework/api/api_templates.lua @@ -44,6 +44,7 @@ GET ADDON DATA ]]-- local SV = select(2, ...) local L = SV.L +local SVLib = LibSuperVillain("Registry"); --[[ ########################################################## LOCAL VARS @@ -590,13 +591,10 @@ local function SetPanelColor(self, ...) if(arg1 == "VERTICAL" or arg1 == "HORIZONTAL") then self.Panel.Skin:SetGradient(...) elseif(SV.Media.gradient[arg1]) then - if self.__border then + if self.ColorBorder then local d,r,g,b,r2,g2,b2 = unpack(SV.Media.gradient[arg1]) --self.Panel.Skin:SetGradient(d,r,g,b,r2,g2,b2) - self.__border[1]:SetTexture(r2,g2,b2) - self.__border[2]:SetTexture(r2,g2,b2) - self.__border[3]:SetTexture(r2,g2,b2) - self.__border[4]:SetTexture(r2,g2,b2) + self:ColorBorder(r2,g2,b2,arg1) else self.Panel.Skin:SetGradient(unpack(SV.Media.gradient[arg1])) if(SV.Media.color[arg1]) then @@ -610,11 +608,8 @@ local function SetPanelColor(self, ...) elseif(type(arg1) == "string" and SV.Media.color[arg1]) then local t = SV.Media.color[arg1] local r,g,b,a = t[1], t[2], t[3], t[4] or 1; - if self.__border then - self.__border[1]:SetTexture(r,g,b) - self.__border[2]:SetTexture(r,g,b) - self.__border[3]:SetTexture(r,g,b) - self.__border[4]:SetTexture(r,g,b) + if self.ColorBorder then + self:ColorBorder(r,g,b,arg1) else self:SetBackdropColor(r,g,b) end @@ -777,7 +772,30 @@ local function SetEditboxTemplate(self, x, y, fixed) end end end -end +end + +local SetFrameBorderColor = function(self, r, g, b, setPrevious, reset) + if(setPrevious) then + self.__border.__previous = setPrevious + elseif(reset) then + r,g,b = unpack(SV.Media.color[self.__border.__previous]) + end + self.__border[1]:SetTexture(r, g, b) + self.__border[2]:SetTexture(r, g, b) + self.__border[3]:SetTexture(r, g, b) + self.__border[4]:SetTexture(r, g, b) +end + +local ShowAlertFlash = function(self) + self:ColorBorder(1,0.9,0) + SV.Animate:Flash(self.__border, 0.75, true) +end + +local HideAlertFlash = function(self) + local r,g,b = unpack(SV.Media.color.default); + self:ColorBorder(1,0.9,0,nil,true) + SV.Animate:StopFlash(self.__border) +end local function SetFramedButtonTemplate(self, template, borderSize) if(not self or (self and self.Panel)) then return end @@ -812,57 +830,62 @@ local function SetFramedButtonTemplate(self, template, borderSize) local t = SV.Media.color.default local r,g,b = t[1], t[2], t[3] - local border = {} + local border = CreateFrame("Frame", nil, self) + border:SetAllPoints() - border[1] = self:CreateTexture(nil,"BORDER") + border[1] = border:CreateTexture(nil,"BORDER") border[1]:SetTexture(r,g,b) border[1]:SetPoint("TOPLEFT", -1, 1) border[1]:SetPoint("BOTTOMLEFT", -1, -1) border[1]:SetWidth(borderSize) - local leftoutline = self:CreateTexture(nil,"BORDER") + local leftoutline = border:CreateTexture(nil,"BORDER") leftoutline:SetTexture(0,0,0) leftoutline:SetPoint("TOPLEFT", -2, 2) leftoutline:SetPoint("BOTTOMLEFT", -2, -2) leftoutline:SetWidth(1) - border[2] = self:CreateTexture(nil,"BORDER") + border[2] = border:CreateTexture(nil,"BORDER") border[2]:SetTexture(r,g,b) border[2]:SetPoint("TOPRIGHT", 1, 1) border[2]:SetPoint("BOTTOMRIGHT", 1, -1) border[2]:SetWidth(borderSize) - local rightoutline = self:CreateTexture(nil,"BORDER") + local rightoutline = border:CreateTexture(nil,"BORDER") rightoutline:SetTexture(0,0,0) rightoutline:SetPoint("TOPRIGHT", 2, 2) rightoutline:SetPoint("BOTTOMRIGHT", 2, -2) rightoutline:SetWidth(1) - border[3] = self:CreateTexture(nil,"BORDER") + border[3] = border:CreateTexture(nil,"BORDER") border[3]:SetTexture(r,g,b) border[3]:SetPoint("TOPLEFT", -1, 1) border[3]:SetPoint("TOPRIGHT", 1, 1) border[3]:SetHeight(borderSize) - local topoutline = self:CreateTexture(nil,"BORDER") + local topoutline = border:CreateTexture(nil,"BORDER") topoutline:SetTexture(0,0,0) topoutline:SetPoint("TOPLEFT", -2, 2) topoutline:SetPoint("TOPRIGHT", 2, 2) topoutline:SetHeight(1) - border[4] = self:CreateTexture(nil,"BORDER") + border[4] = border:CreateTexture(nil,"BORDER") border[4]:SetTexture(r,g,b) border[4]:SetPoint("BOTTOMLEFT", -1, -1) border[4]:SetPoint("BOTTOMRIGHT", 1, -1) border[4]:SetHeight(borderSize) - local bottomoutline = self:CreateTexture(nil,"BORDER") + local bottomoutline = border:CreateTexture(nil,"BORDER") bottomoutline:SetTexture(0,0,0) bottomoutline:SetPoint("BOTTOMLEFT", -2, -2) bottomoutline:SetPoint("BOTTOMRIGHT", 2, -2) bottomoutline:SetHeight(1) self.__border = border + self.__border.__previous = 'default'; + self.ColorBorder = SetFrameBorderColor + self.StartAlert = ShowAlertFlash + self.StopAlert = HideAlertFlash end if(not self.hover) then @@ -920,7 +943,7 @@ local function FrameTemplateUpdates() end end -LibSuperVillain("Registry"):NewCallback("CORE_MEDIA_UPDATED", "FrameTemplateUpdates", FrameTemplateUpdates) +SVLib:NewCallback("CORE_MEDIA_UPDATED", "FrameTemplateUpdates", FrameTemplateUpdates) --[[ ########################################################## ENUMERATION diff --git a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/modules/Animate.lua b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/modules/Animate.lua index 5458b00..87959c7 100644 --- a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/modules/Animate.lua +++ b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/modules/Animate.lua @@ -186,8 +186,8 @@ end --[[ HELPER FUNCTION ]]-- -local function SetNewAnimation(frame, animType, subType) - local anim = frame:CreateAnimation(animType, subType) +local function SetNewAnimation(frame, animType) + local anim = frame:CreateAnimation(animType) anim.parent = frame.parent return anim end @@ -223,12 +223,12 @@ local function AnimationTemplate(frame, animType, hideOnFinished, speed, special frame.anim.fadeOnFinished = true if not speed then speed = 0.33 end - frame.anim[1] = SetNewAnimation(frame.anim, "Alpha", "FadeIn") + frame.anim[1] = SetNewAnimation(frame.anim, "Alpha") frame.anim[1]:SetChange(1) frame.anim[1]:SetOrder(2) frame.anim[1]:SetDuration(speed) - frame.anim[2] = SetNewAnimation(frame.anim, "Alpha", "FadeOut") + frame.anim[2] = SetNewAnimation(frame.anim, "Alpha") frame.anim[2]:SetChange(-1) frame.anim[2]:SetOrder(1) frame.anim[2]:SetDuration(speed) diff --git a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/modules/Registry.lua b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/modules/Registry.lua index f51d68d..2570746 100644 --- a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/modules/Registry.lua +++ b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/modules/Registry.lua @@ -875,12 +875,14 @@ local function NewLoadOnDemand(addonName, schema, header) return nameString end, func = function() - if(not IsAddOnLoaded(addonName)) then + if(not IsAddOnLoaded(addonName)) then local loaded, reason = LoadAddOn(addonName) PROFILE_SV.SAFEDATA[schema].enable = true + EnableAddOn(addonName) CoreObject:StaticPopup_Show("RL_CLIENT") else PROFILE_SV.SAFEDATA[schema].enable = false + DisableAddOn(addonName) CoreObject:StaticPopup_Show("RL_CLIENT") end end, @@ -1246,6 +1248,8 @@ function lib:Launch() local loaded, reason = LoadAddOn(name) end EnableAddOn(name) + else + DisableAddOn(name) end end end diff --git a/Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/combat.lua b/Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/combat.lua index cd8c478..0952fb5 100644 --- a/Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/combat.lua +++ b/Interface/AddOns/SVUI/libs/oUF_Villain/oUF/elements/combat.lua @@ -3,6 +3,10 @@ local oUF = ns.oUF local Update = function(self, event) local combat = self.Combat + local aggro = self.Aggro + + if(aggro and aggro:IsShown()) then return end + if(combat.PreUpdate) then combat:PreUpdate() end diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua index 841f31f..7a58599 100644 --- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua +++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua @@ -340,8 +340,7 @@ local SlotUpdate = function(self, slotID) slot:SetBackdropColor(0, 0, 0, 0.6) slot:SetBackdropBorderColor(0, 0, 0, 1) end - end - if(not texture) then + elseif(not texture) then GameTooltip:Hide() end @@ -351,9 +350,10 @@ local SlotUpdate = function(self, slotID) slot:SetBackdropBorderColor(r, g, b, 1) end - -- if(C_NewItems.IsNewItem(bag, slotID)) then - -- ActionButton_HideOverlayGlow(slot) - -- end + if(C_NewItems.IsNewItem(bag, slotID)) then + C_NewItems.RemoveNewItem(bag, slotID) + end + if(slot.NewItemTexture) then slot.NewItemTexture:Hide() end; if(slot.flashAnim) then slot.flashAnim:Stop() end; if(slot.newitemglowAnim) then slot.newitemglowAnim:Stop() end; diff --git a/Interface/AddOns/SVUI/packages/map/SVMap.lua b/Interface/AddOns/SVUI/packages/map/SVMap.lua index 467faac..0047ba3 100644 --- a/Interface/AddOns/SVUI/packages/map/SVMap.lua +++ b/Interface/AddOns/SVUI/packages/map/SVMap.lua @@ -719,24 +719,29 @@ function MOD:PLAYER_REGEN_DISABLED() WorldMapFrameSizeUpButton:Disable() end -local function CreateGarrisonDock() - 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("") +local function GarrisonButton_OnEvent(self, event, ...) + if (event == "GARRISON_HIDE_LANDING_PAGE") then + SVUI_Garrison:Hide(); + elseif (event == "GARRISON_SHOW_LANDING_PAGE") then + SVUI_Garrison:Show(); + elseif ( event == "GARRISON_BUILDING_ACTIVATABLE" ) then + SVUI_Garrison:StartAlert(); + elseif ( event == "GARRISON_BUILDING_ACTIVATED" or event == "GARRISON_ARCHITECT_OPENED") then + SVUI_Garrison:StopAlert(); + elseif ( event == "GARRISON_MISSION_FINISHED" ) then + SVUI_Garrison:StartAlert(); + elseif ( event == "GARRISON_MISSION_NPC_OPENED" ) then + SVUI_Garrison:StopAlert(); + elseif (event == "GARRISON_INVASION_AVAILABLE") then + SVUI_Garrison:StartAlert(); + elseif (event == "GARRISON_INVASION_UNAVAILABLE") then + SVUI_Garrison:StopAlert(); + elseif (event == "SHIPMENT_UPDATE") then + local shipmentStarted = ...; + if (shipmentStarted) then + SVUI_Garrison:StartAlert(); + end + end end --[[ ########################################################## @@ -764,6 +769,14 @@ function MOD:ReLoad() if(not SV.db.SVMap.enable) then return; end self:RefreshMiniMap() self:UpdateMinimapButtonSettings() + if(not SVUI_Garrison:GetAttribute("tipExtraText")) then + local garrisonStone = GetItemInfo(110560); + if(garrisonStone and type(garrisonStone) == "string") then + SVUI_Garrison:SetAttribute("tipExtraText", L["Garrison Hearthstone"]) + SVUI_Garrison:SetAttribute("type2", "macro") + SVUI_Garrison:SetAttribute("macrotext", "/use [nomod] " .. garrisonStone) + end + end end function MOD:Load() @@ -777,7 +790,11 @@ function MOD:Load() Minimap:SetPlayerTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_ARROW") Minimap:SetCorpsePOIArrowTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_CORPSE_ARROW") Minimap:SetPOIArrowTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_GUIDE_ARROW") - Minimap:SetBlipTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_ICONS") + if(SV.db.SVMap.customIcons) then + Minimap:SetBlipTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Minimap\\MINIMAP_ICONS") + else + Minimap:SetBlipTexture("Interface\\Minimap\\OBJECTICONS") + end Minimap:SetClampedToScreen(false) local mapHolder = SVUI_MinimapFrame @@ -870,8 +887,7 @@ function MOD:Load() GarrisonLandingPageMinimapButton:SetPushedTexture("") GarrisonLandingPageMinimapButton:SetHighlightTexture("") - GarrisonLandingPageMinimapButton:HookScript("OnShow", function() SVUI_Garrison:Show() end) - GarrisonLandingPageMinimapButton:HookScript("OnHide", function() SVUI_Garrison:Hide() end) + GarrisonLandingPageMinimapButton:HookScript("OnEvent", GarrisonButton_OnEvent) if FeedbackUIButton then FeedbackUIButton:Die() diff --git a/Interface/AddOns/SVUI/packages/unit/elements/essentials.lua b/Interface/AddOns/SVUI/packages/unit/elements/essentials.lua index 4c3d1ba..64940b3 100644 --- a/Interface/AddOns/SVUI/packages/unit/elements/essentials.lua +++ b/Interface/AddOns/SVUI/packages/unit/elements/essentials.lua @@ -196,12 +196,16 @@ local UpdatePlayerThreat = function(self, event, unit) r, g, b = GetThreatStatusColor(status) threat:SetBackdropBorderColor(r, g, b) if(status > 1 and (not aggro:IsShown())) then + self.Combat:Hide() aggro:Show() end else threat:SetBackdropBorderColor(0, 0, 0, 0.5) if(aggro:IsShown()) then aggro:Hide() + if(UnitAffectingCombat('player')) then + self.Combat:Show() + end end end end @@ -227,8 +231,8 @@ local function CreateThreat(frame, unit) local aggro = CreateFrame("Frame", "SVUI_PlayerThreatAlert", frame) aggro:SetFrameStrata("HIGH") aggro:SetFrameLevel(30) - aggro:SetSize(52,52) - aggro:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 16, 16) + aggro:SetSize(40,40) + aggro:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 6, 6) aggro.texture = aggro:CreateTexture(nil, "OVERLAY") aggro.texture:SetAllPoints(aggro) aggro.texture:SetTexture(AGGRO_TEXTURE) diff --git a/Interface/AddOns/SVUI/packages/unit/groups.lua b/Interface/AddOns/SVUI/packages/unit/groups.lua index b89cf6c..eaf1b85 100644 --- a/Interface/AddOns/SVUI/packages/unit/groups.lua +++ b/Interface/AddOns/SVUI/packages/unit/groups.lua @@ -221,6 +221,7 @@ local PartyUnitUpdate = function(self) self.colors = oUF_Villain.colors; self:RegisterForClicks(SV.db.SVUnit.fastClickTarget and 'AnyDown' or 'AnyUp') MOD.RefreshUnitMedia(self, "party") + if self.isChild then local altDB = db.petsGroup; if self == _G[self.originalParent:GetName()..'Target'] then @@ -232,7 +233,7 @@ local PartyUnitUpdate = function(self) self.originalParent.childList[self] = true; if not InCombatLockdown()then if altDB.enable then - local UNIT_WIDTH, UNIT_HEIGHT = MOD:GetActiveSize(altDB, "partychild") + local UNIT_WIDTH, UNIT_HEIGHT = MOD:GetActiveSize(altDB) self:SetParent(self.originalParent) self:Size(UNIT_WIDTH, UNIT_HEIGHT) self:ClearAllPoints() @@ -317,7 +318,7 @@ BuildTemplates["party"] = function(self, unit) MOD:SetActionPanel(self, "party") self.Health = MOD:CreateHealthBar(self, true) - if self.isChild then + if self.isChild then self.originalParent = self:GetParent() else self.Power = MOD:CreatePowerBar(self, true) @@ -517,9 +518,7 @@ UpdateTemplates["raidpet"] = function(self) RegisterStateDriver(groupFrame, "visibility", "[group:raid] show; hide") SV.Mentalo:Add(groupFrame, L["Raid Pet Frames"], nil, nil, nil, "ALL, RAID10, RAID25, RAID40") groupFrame.positioned = true; - end - - RaidPetVisibility(groupFrame) + end local index = 1; local attIndex = ("child%d"):format(index) @@ -901,6 +900,8 @@ function MOD:SetGroupHeader(parentFrame, filter, layout, headerName, token) if(token == "raidpet") then template1 = "SVUI_UNITPET" template2 = "SecureGroupPetHeaderTemplate" + elseif(token == "party") then + template1 = "SVUI_UNITPET, SVUI_UNITTARGET" elseif(token == "tank") then filter = "MAINTANK" template1 = "SVUI_UNITTARGET" diff --git a/Interface/AddOns/SVUI/system/configs.lua b/Interface/AddOns/SVUI/system/configs.lua index 41f5fea..53e6b5b 100644 --- a/Interface/AddOns/SVUI/system/configs.lua +++ b/Interface/AddOns/SVUI/system/configs.lua @@ -532,7 +532,8 @@ SV.configs["SVMap"] = { ["SquareMap"] = true, ["PocketPlot"] = true, }, - ["enable"] = true, + ["enable"] = true, + ["customIcons"] = true, ["mapAlpha"] = 1, ["tinyWorldMap"] = true, ["size"] = 240, @@ -2601,7 +2602,7 @@ SV.configs["SVUnit"] = { ["health"] = { ["tags"] = "[health:color][health:deficit]", - ["position"] = "BOTTOM", + ["position"] = "INNERBOTTOMRIGHT", ["orientation"] = "HORIZONTAL", ["frequentUpdates"] = false, ["yOffset"] = 0, diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/map.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/map.lua index 8287a53..7e3a277 100644 --- a/Interface/AddOns/SVUI_ConfigOMatic/components/map.lua +++ b/Interface/AddOns/SVUI_ConfigOMatic/components/map.lua @@ -112,6 +112,13 @@ SV.Options.args.SVMap = { type = "toggle", name = "Custom Shape", desc = "Toggle the use of either rectangular or square minimap.", + }, + customIcons = { + order = 5, + type = "toggle", + name = "Custom Blip Icons", + desc = "Toggle the use of special map blips.", + set = function(a,b) MOD:ChangeDBVar(b,a[#a]); SV:StaticPopup_Show("RL_CLIENT") end } } },