diff --git a/Interface/AddOns/Blizzard_APIDocumentation/AzeriteEssenceDocumentation.lua b/Interface/AddOns/Blizzard_APIDocumentation/AzeriteEssenceDocumentation.lua
index 23ae7f58536ac172ce04a491fd636a855c6050c9..562a754a30e3759b9d6effacffdbce3cef27cd5a 100644
--- a/Interface/AddOns/Blizzard_APIDocumentation/AzeriteEssenceDocumentation.lua
+++ b/Interface/AddOns/Blizzard_APIDocumentation/AzeriteEssenceDocumentation.lua
@@ -146,6 +146,15 @@ local AzeriteEssence =
{ Name = "essenceID", Type = "number", Nilable = false },
},
},
+ {
+ Name = "HasNeverActivatedAnyEssences",
+ Type = "Function",
+
+ Returns =
+ {
+ { Name = "hasNeverActivatedAnyEssences", Type = "bool", Nilable = false },
+ },
+ },
{
Name = "HasPendingActivationEssence",
Type = "Function",
diff --git a/Interface/AddOns/Blizzard_APIDocumentation/FriendListDocumentation.lua b/Interface/AddOns/Blizzard_APIDocumentation/FriendListDocumentation.lua
index e67e2903d76e55b2b7676f737a97b07b5b561ba9..ce6455d9e618699a2056c7ae355a7f9703a4588b 100644
--- a/Interface/AddOns/Blizzard_APIDocumentation/FriendListDocumentation.lua
+++ b/Interface/AddOns/Blizzard_APIDocumentation/FriendListDocumentation.lua
@@ -393,6 +393,7 @@ local FriendList =
Payload =
{
{ Name = "friendId", Type = "number", Nilable = false },
+ { Name = "isCompanionApp", Type = "bool", Nilable = false, Default = false },
},
},
{
@@ -402,6 +403,7 @@ local FriendList =
Payload =
{
{ Name = "friendId", Type = "number", Nilable = false },
+ { Name = "isCompanionApp", Type = "bool", Nilable = false, Default = false },
},
},
{
diff --git a/Interface/AddOns/Blizzard_APIDocumentation/PvpInfoDocumentation.lua b/Interface/AddOns/Blizzard_APIDocumentation/PvpInfoDocumentation.lua
index 91dc723ac5bad938499fed88eedd09f94fcd008d..7189076080e8c5e743d8293e72b9b1186510b584 100644
--- a/Interface/AddOns/Blizzard_APIDocumentation/PvpInfoDocumentation.lua
+++ b/Interface/AddOns/Blizzard_APIDocumentation/PvpInfoDocumentation.lua
@@ -6,6 +6,24 @@ local PvpInfo =
Functions =
{
+ {
+ Name = "CanDisplayDeaths",
+ Type = "Function",
+
+ Returns =
+ {
+ { Name = "canDisplay", Type = "bool", Nilable = false },
+ },
+ },
+ {
+ Name = "CanDisplayHonorableKills",
+ Type = "Function",
+
+ Returns =
+ {
+ { Name = "canDisplay", Type = "bool", Nilable = false },
+ },
+ },
{
Name = "CanToggleWarMode",
Type = "Function",
@@ -496,6 +514,24 @@ local PvpInfo =
{ Name = "isInBrawl", Type = "bool", Nilable = false },
},
},
+ {
+ Name = "IsMatchConsideredArena",
+ Type = "Function",
+
+ Returns =
+ {
+ { Name = "asArena", Type = "bool", Nilable = false },
+ },
+ },
+ {
+ Name = "IsMatchFactional",
+ Type = "Function",
+
+ Returns =
+ {
+ { Name = "isFactional", Type = "bool", Nilable = false },
+ },
+ },
{
Name = "IsPVPMap",
Type = "Function",
diff --git a/Interface/AddOns/Blizzard_APIDocumentation/UIWidgetManagerDocumentation.lua b/Interface/AddOns/Blizzard_APIDocumentation/UIWidgetManagerDocumentation.lua
index eb404212516afddad3aef66baad67d7d97158b09..fcb0d3654bc7f31df00c8c1740cc6c16bd9bbf3c 100644
--- a/Interface/AddOns/Blizzard_APIDocumentation/UIWidgetManagerDocumentation.lua
+++ b/Interface/AddOns/Blizzard_APIDocumentation/UIWidgetManagerDocumentation.lua
@@ -495,6 +495,32 @@ local UIWidgetManager =
{ Name = "NeitherStateIsGood", Type = "ZoneControlMode", EnumValue = 3 },
},
},
+ {
+ Name = "ZoneControlLeadingEdgeType",
+ Type = "Enumeration",
+ NumValues = 2,
+ MinValue = 0,
+ MaxValue = 1,
+ Fields =
+ {
+ { Name = "NoLeadingEdge", Type = "ZoneControlLeadingEdgeType", EnumValue = 0 },
+ { Name = "UseLeadingEdge", Type = "ZoneControlLeadingEdgeType", EnumValue = 1 },
+ },
+ },
+ {
+ Name = "ZoneControlDangerFlashType",
+ Type = "Enumeration",
+ NumValues = 4,
+ MinValue = 0,
+ MaxValue = 3,
+ Fields =
+ {
+ { Name = "ShowOnGoodStates", Type = "ZoneControlDangerFlashType", EnumValue = 0 },
+ { Name = "ShowOnBadStates", Type = "ZoneControlDangerFlashType", EnumValue = 1 },
+ { Name = "ShowOnBoth", Type = "ZoneControlDangerFlashType", EnumValue = 2 },
+ { Name = "ShowOnNeither", Type = "ZoneControlDangerFlashType", EnumValue = 3 },
+ },
+ },
{
Name = "ZoneControlState",
Type = "Enumeration",
@@ -932,6 +958,8 @@ local UIWidgetManager =
{
{ Name = "shownState", Type = "WidgetShownState", Nilable = false },
{ Name = "mode", Type = "ZoneControlMode", Nilable = false },
+ { Name = "leadingEdgeType", Type = "ZoneControlLeadingEdgeType", Nilable = false },
+ { Name = "dangerFlashType", Type = "ZoneControlDangerFlashType", Nilable = false },
{ Name = "zoneEntries", Type = "table", InnerType = "ZoneEntry", Nilable = false },
{ Name = "widgetSizeSetting", Type = "number", Nilable = false },
{ Name = "textureKitID", Type = "number", Nilable = false },
diff --git a/Interface/AddOns/Blizzard_ArtifactUI/Blizzard_ArtifactPerks.lua b/Interface/AddOns/Blizzard_ArtifactUI/Blizzard_ArtifactPerks.lua
index 6f2d7bf2471bac4c25be8c2e7c9dbdbd4e56d174..8b01c31f5380c0f11cc451e952f970964e553bed 100644
--- a/Interface/AddOns/Blizzard_ArtifactUI/Blizzard_ArtifactPerks.lua
+++ b/Interface/AddOns/Blizzard_ArtifactUI/Blizzard_ArtifactPerks.lua
@@ -792,7 +792,7 @@ local function QueueReveal(self, powerButton, distance, tier)
if linkedPowerButton.hasSpentAny then
QueueReveal(self, linkedPowerButton, distance, tier);
else
- local distanceToLink = powerButton:CalculateDistanceTo(linkedPowerButton);
+ local distanceToLink = CalculateDistanceBetweenRegions(powerButton, linkedPowerButton);
local totalDistance = distance + distanceToLink;
QueueReveal(self, linkedPowerButton, totalDistance, tier);
diff --git a/Interface/AddOns/Blizzard_ArtifactUI/Blizzard_ArtifactPowerButton.lua b/Interface/AddOns/Blizzard_ArtifactUI/Blizzard_ArtifactPowerButton.lua
index 571c66c0cc45a5c2d0c7ae6450c74f6e6ac819d9..c9d55f2ba4d274b589d81e8f5bb388e13cacd0f8 100644
--- a/Interface/AddOns/Blizzard_ArtifactUI/Blizzard_ArtifactPowerButton.lua
+++ b/Interface/AddOns/Blizzard_ArtifactUI/Blizzard_ArtifactPowerButton.lua
@@ -506,13 +506,6 @@ function ArtifactPowerButtonMixin:UpdateIcon()
end
end
-function ArtifactPowerButtonMixin:CalculateDistanceTo(otherPowerButton)
- local cx, cy = self:GetCenter();
- local ocx, ocy = otherPowerButton:GetCenter();
- local dx, dy = ocx - cx, ocy - cy;
- return math.sqrt(dx * dx + dy * dy);
-end
-
function ArtifactPowerButtonMixin:SetupButton(powerID, anchorRegion, textureKit)
local powerInfo = C_ArtifactUI.GetPowerInfo(powerID);
diff --git a/Interface/AddOns/Blizzard_AzeriteEssenceUI/Blizzard_AzeriteEssenceUI.lua b/Interface/AddOns/Blizzard_AzeriteEssenceUI/Blizzard_AzeriteEssenceUI.lua
index 3bebc431150c840332b6e0f333cbe9155a63e9f1..f4d475cc12db614282f60a75a13891810ba29d7c 100644
--- a/Interface/AddOns/Blizzard_AzeriteEssenceUI/Blizzard_AzeriteEssenceUI.lua
+++ b/Interface/AddOns/Blizzard_AzeriteEssenceUI/Blizzard_AzeriteEssenceUI.lua
@@ -22,6 +22,20 @@ local HEART_MODEL_SCENE_INFO = StaticModelInfo.CreateModelSceneEntry(256, 196288
local LEARN_MODEL_SCENE_INFO = StaticModelInfo.CreateModelSceneEntry(259, 2101299); -- 8FX_Azerite_AbsorbCurrency_Small_ImpactBase.m2
local UNLOCK_SLOT_MODEL_SCENE_INFO = StaticModelInfo.CreateModelSceneEntry(269, 1983548); -- 8FX_Azerite_Generic_NovaHigh_Base.m2
local UNLOCK_STAMINA_MODEL_SCENE_INFO = StaticModelInfo.CreateModelSceneEntry(270, 1983548); -- 8FX_Azerite_Generic_NovaHigh_Base.m2
+local UNLOCK_SECONDARY_EFFECT_ID = 2924332; -- CFX_Azerite_TimeLostTopaz_Major_Rank4_Cast.m2
+
+local LEARN_SHAKE_DELAY = 0.869;
+local LEARN_SHAKE = { { x = 0, y = -8}, { x = 0, y = 8}, { x = 0, y = -8}, { x = 0, y = 8}, { x = -3, y = -1}, { x = 2, y = 2}, { x = -2, y = -3}, { x = -1, y = -1}, { x = 4, y = 2}, { x = 3, y = 4}, { x = -3, y = 4}, { x = 4, y = -4}, { x = -4, y = 2}, { x = -2, y = 1}, { x = -3, y = -1}, { x = 2, y = 2}, { x = -2, y = -3}, { x = -1, y = -1}, { x = 4, y = 2}, { x = 3, y = 4}, { x = -3, y = 4}, { x = 4, y = -4}, { x = -4, y = 2}, { x = -2, y = 1}, { x = -3, y = -1}, { x = 2, y = 2}, { x = -2, y = -3}, { x = -1, y = -1}, { x = 4, y = 2}, { x = 3, y = 4}, { x = -3, y = 4}, { x = 4, y = -4}, { x = -4, y = 2}, { x = -2, y = 1}, { x = -3, y = -1}, { x = 2, y = 2}, { x = -2, y = -3}, { x = -1, y = -1}, { x = 4, y = 2}, { x = 3, y = 4}, { x = -3, y = 4}, { x = 4, y = -4}, { x = -4, y = 2}, { x = -2, y = 1}, { x = -3, y = -1}, { x = 2, y = 2}, { x = -2, y = -3}, { x = -1, y = -1}, { x = 4, y = 2}, { x = 3, y = 4}, { x = -3, y = 4}, { x = 4, y = -4}, { x = -4, y = 2}, { x = -2, y = 1}, { x = -3, y = -1}, { x = 2, y = 2}, { x = -2, y = -3}, { x = -1, y = -1}, { x = 4, y = 2}, { x = 3, y = 4}, { x = -3, y = 4}, { x = 4, y = -4}, { x = -4, y = 2}, { x = -2, y = 1}, };
+local LEARN_SHAKE_DURATION = 0.20;
+local LEARN_SHAKE_FREQUENCY = 0.001;
+
+local REVEAL_START_DELAY = 1.2;
+local REVEAL_DELAY_SECS_PER_DISTANCE = 0.0035;
+local REVEAL_LINE_DURATION_SECS_PER_DISTANCE = 0.0012;
+local REVEAL_SWIRL_SLOT_SCALE = 1;
+local REVEAL_SWIRL_STAMINA_SCALE = 0.5;
+
+local MAX_ESSENCE_RANK = 4;
local AZERITE_ESSENCE_FRAME_EVENTS = {
"UI_MODEL_SCENE_INFO_UPDATED",
@@ -108,8 +122,7 @@ function AzeriteEssenceUIMixin:SetupMilestones()
lineContainer:SetEndPoints(previousMilestoneFrame, milestoneFrame);
lineContainer:SetScrollAnimationProgressOffset(0);
- lineContainer:SetState(PowerDependencyLineMixin.LINE_STATE_CONNECTED);
-
+ milestoneFrame.linkLine = lineContainer;
lineContainer.fromButton = previousMilestoneFrame;
lineContainer.toButton = milestoneFrame;
tinsert(self.Lines, lineContainer);
@@ -124,11 +137,16 @@ function AzeriteEssenceUIMixin:OnEvent(event, ...)
if event == "UI_MODEL_SCENE_INFO_UPDATED" then
self:SetupModelScene();
elseif event == "AZERITE_ESSENCE_CHANGED" then
- local essenceID = ...;
+ local essenceID, rank = ...;
self:RefreshSlots();
self.EssenceList:Update();
self.EssenceList:OnEssenceChanged(essenceID);
AzeriteEssenceLearnAnimFrame:PlayAnim();
+ if rank < MAX_ESSENCE_RANK then
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_LEARNESSENCE_ANIM);
+ else
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_LEARNESSENCE_ANIM_RANK4);
+ end
elseif event == "AZERITE_ESSENCE_ACTIVATED" or event == "AZERITE_ESSENCE_ACTIVATION_FAILED" or event == "AZERITE_ESSENCE_UPDATE" then
self:ClearNewlyActivatedEssence();
self:RefreshSlots();
@@ -159,12 +177,14 @@ function AzeriteEssenceUIMixin:OnShow()
end);
end
+ self.shouldPlayReveal = C_AzeriteEssence:HasNeverActivatedAnyEssences();
+
FrameUtil.RegisterFrameForEvents(self, AZERITE_ESSENCE_FRAME_EVENTS);
self:RefreshPowerLevel();
self:RefreshMilestones();
- PlaySound(SOUNDKIT.IG_CHARACTER_INFO_OPEN); -- temp?
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_WINDOW_OPEN);
self:TriggerEvent(AzeriteEssenceUIMixin.Event.OnShow);
end
@@ -180,6 +200,10 @@ function AzeriteEssenceUIMixin:OnHide()
self.itemDataLoadedCancelFunc = nil;
end
+ if self.numRevealsPlaying then
+ self:CancelReveal();
+ end
+
FrameUtil.UnregisterFrameForEvents(self, AZERITE_ESSENCE_FRAME_EVENTS);
self:ClearNewlyActivatedEssence();
@@ -189,7 +213,7 @@ function AzeriteEssenceUIMixin:OnHide()
self.ActivationGlow:SetAlpha(0);
AzeriteEssenceLearnAnimFrame:StopAnim();
- PlaySound(SOUNDKIT.IG_CHARACTER_INFO_CLOSE); -- temp?
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_WINDOW_CLOSE);
self:TriggerEvent(AzeriteEssenceUIMixin.Event.OnHide);
end
@@ -213,6 +237,18 @@ function AzeriteEssenceUIMixin:OnEssenceActivated(essenceID, slotFrame)
self.ActivationGlow.Anim:Stop();
self.ActivationGlow.Anim:Play();
+
+ if self.shouldPlayReveal then
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_SLOTFIRSTESSENCE);
+ C_Timer.After(REVEAL_START_DELAY,
+ function()
+ self:PlayReveal();
+ end
+ );
+ else
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_SLOTESSENCE);
+ end
+
-- temp sounds
if slotFrame.slot == Enum.AzeriteEssence.MainSlot then
PlaySound(13827);
@@ -237,6 +273,10 @@ function AzeriteEssenceUIMixin:RefreshPowerLevel()
end
end
+function AzeriteEssenceUIMixin:MeetsPowerLevel(level)
+ return level <= self.powerLevel;
+end
+
function AzeriteEssenceUIMixin:OnEnterPowerLevelBadgeFrame()
local itemLocation = C_AzeriteItem.FindActiveAzeriteItem();
if itemLocation then
@@ -260,23 +300,21 @@ end
function AzeriteEssenceUIMixin:RefreshMilestones()
for i, milestoneFrame in ipairs(self.Milestones) do
- milestoneFrame:Refresh();
+ -- Main slot is always present
+ if self.shouldPlayReveal and (not milestoneFrame.slot or milestoneFrame.slot ~= Enum.AzeriteEssence.MainSlot) then
+ milestoneFrame:Hide();
+ else
+ milestoneFrame:Show();
+ milestoneFrame:Refresh();
+ end
end
for i, lineContainer in ipairs(self.Lines) do
- if lineContainer.toButton.unlocked then
- lineContainer:SetState(PowerDependencyLineMixin.LINE_STATE_CONNECTED);
- lineContainer:SetAlpha(0.15);
+ if self.shouldPlayReveal then
+ lineContainer:Hide();
else
- if lineContainer.fromButton.unlocked and lineContainer.toButton.canUnlock then
- lineContainer:SetDisconnectedColor(DISCONNECTED_LINE_COLOR);
- lineContainer:SetState(PowerDependencyLineMixin.LINE_STATE_DISCONNECTED);
- lineContainer:SetAlpha(0.08);
- else
- lineContainer:SetDisconnectedColor(LOCKED_LINE_COLOR);
- lineContainer:SetState(PowerDependencyLineMixin.LINE_STATE_DISCONNECTED);
- lineContainer:SetAlpha(0.08);
- end
+ lineContainer:Show();
+ lineContainer:Refresh();
end
end
end
@@ -357,6 +395,74 @@ function AzeriteEssenceUIMixin:GetEffectiveEssence(milestoneID)
end
end
+function AzeriteEssenceUIMixin:PlayReveal()
+ if not self.revealSwirlPool then
+ self.numRevealsPlaying = 0;
+ self.revealSwirlPool = CreateFramePool("FRAME", self, "PowerSwirlAnimationTemplate");
+
+ local previousFrame;
+ local totalDistance = 0;
+ for i, milestoneFrame in ipairs(self.Milestones) do
+ if previousFrame then
+ local delay = totalDistance * REVEAL_DELAY_SECS_PER_DISTANCE;
+ local distance = CalculateDistanceBetweenRegions(previousFrame, milestoneFrame);
+ milestoneFrame:BeginReveal(delay);
+ self:ApplyRevealSwirl(milestoneFrame, delay);
+ milestoneFrame.linkLine:BeginReveal(delay, distance);
+ self.numRevealsPlaying = self.numRevealsPlaying + 1;
+ totalDistance = totalDistance + distance;
+ end
+ previousFrame = milestoneFrame;
+ end
+
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_NODESREVEAL);
+ end
+end
+
+function AzeriteEssenceUIMixin:ApplyRevealSwirl(milestoneFrame, delay)
+ local swirlFrame = self.revealSwirlPool:Acquire();
+ swirlFrame:SetAllPoints(milestoneFrame);
+ swirlFrame:SetFrameLevel(milestoneFrame:GetFrameLevel() + 1);
+ swirlFrame:SetScale(milestoneFrame.slot and REVEAL_SWIRL_SLOT_SCALE or REVEAL_SWIRL_STAMINA_SCALE);
+ swirlFrame.timer = C_Timer.NewTimer(delay,
+ function()
+ swirlFrame:Show();
+ swirlFrame.SelectedAnim:Play();
+ end
+ );
+end
+
+function AzeriteEssenceUIMixin:OnMilestoneRevealAnimationFinished()
+ self.numRevealsPlaying = self.numRevealsPlaying - 1;
+ if self.numRevealsPlaying == 0 then
+ self.numRevealsPlaying = nil;
+ self.revealSwirlPool:ReleaseAll();
+ self.shouldPlayReveal = false;
+ self:RefreshMilestones();
+ end
+end
+
+function AzeriteEssenceUIMixin:CancelReveal()
+ for i, milestoneFrame in ipairs(self.Milestones) do
+ milestoneFrame:CancelReveal();
+ end
+
+ for i, lineContainer in ipairs(self.Lines) do
+ lineContainer:CancelReveal();
+ end
+
+ for swirlFrame in self.revealSwirlPool:EnumerateActive() do
+ if swirlFrame.timer then
+ swirlFrame.timer:Cancel();
+ end
+ swirlFrame.SelectedAnim:Stop();
+ end
+ self.revealSwirlPool:ReleaseAll();
+
+ self.numRevealsPlaying = nil;
+ self.shouldPlayReveal = false;
+end
+
AzeriteEssenceDependencyLineMixin = CreateFromMixins(PowerDependencyLineMixin);
function AzeriteEssenceDependencyLineMixin:SetDisconnected()
@@ -365,6 +471,37 @@ function AzeriteEssenceDependencyLineMixin:SetDisconnected()
PowerDependencyLineMixin.SetDisconnected(self);
end
+function AzeriteEssenceDependencyLineMixin:Refresh()
+ if self.toButton.unlocked then
+ self:SetState(PowerDependencyLineMixin.LINE_STATE_CONNECTED);
+ self:SetAlpha(0.15);
+ else
+ if self.fromButton.unlocked and self.toButton.canUnlock then
+ self:SetDisconnectedColor(DISCONNECTED_LINE_COLOR);
+ self:SetState(PowerDependencyLineMixin.LINE_STATE_DISCONNECTED);
+ self:SetAlpha(0.08);
+ else
+ self:SetDisconnectedColor(LOCKED_LINE_COLOR);
+ self:SetState(PowerDependencyLineMixin.LINE_STATE_DISCONNECTED);
+ self:SetAlpha(0.08);
+ end
+ end
+end
+
+function AzeriteEssenceDependencyLineMixin:BeginReveal(delay, distance)
+ self:Show();
+ self:SetState(PowerDependencyLineMixin.LINE_STATE_CONNECTED);
+ PowerDependencyLineMixin.BeginReveal(self, delay, distance * REVEAL_LINE_DURATION_SECS_PER_DISTANCE);
+end
+
+function AzeriteEssenceDependencyLineMixin:CancelReveal()
+ self.RevealAnim:Stop();
+end
+
+function AzeriteEssenceDependencyLineMixin:OnRevealFinished()
+ self:Refresh();
+end
+
AzeriteEssenceListMixin = { };
function AzeriteEssenceListMixin:OnLoad()
@@ -393,8 +530,7 @@ end
function AzeriteEssenceListMixin:OnEvent(event)
if event == "UI_MODEL_SCENE_INFO_UPDATED" then
- local forceUpdate = true;
- self:SetupModelScene(true);
+ self.LearnEssenceModelScene.effect = nil;
elseif event == "PENDING_AZERITE_ESSENCE_CHANGED" then
self:Refresh();
elseif event == "VARIABLES_LOADED" then
@@ -412,14 +548,7 @@ function AzeriteEssenceListMixin:SetPendingEssence(essenceID)
local essenceInfo = C_AzeriteEssence.GetEssenceInfo(essenceID);
if essenceInfo and essenceInfo.unlocked and essenceInfo.valid then
C_AzeriteEssence.SetPendingActivationEssence(essenceID);
- end
-end
-
-function AzeriteEssenceListMixin:SetupModelScene(forceUpdate)
- local scene = self.LearnEssenceModelScene;
- if not scene.init or forceUpdate then
- scene.init = true;
- StaticModelInfo.SetupModelScene(scene, LEARN_MODEL_SCENE_INFO, forceUpdate);
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_SELECTESSENCE);
end
end
@@ -526,15 +655,35 @@ function AzeriteEssenceListMixin:OnEssenceChanged(essenceID)
if self.learnEssenceButton then
-- disable the scrollbar
ScrollBar_Disable(self.scrollBar);
- -- set up scene
- local scene = self.LearnEssenceModelScene;
- self:SetupModelScene();
- scene:SetPoint("CENTER", self.learnEssenceButton);
- scene:Show();
-- play glow
self.learnEssenceButton.Glow.Anim:Play();
self.learnEssenceButton.Glow2.Anim:Play();
self.learnEssenceButton.Glow3.Anim:Play();
+ -- scene
+ C_Timer.After(0.769,
+ function()
+ local scene = self.LearnEssenceModelScene;
+ scene:SetPoint("CENTER", self.learnEssenceButton);
+ if not scene.effect then
+ local forceUpdate = true;
+ scene.effect = StaticModelInfo.SetupModelScene(scene, LEARN_MODEL_SCENE_INFO, forceUpdate);
+ end
+ if scene.effect then
+ scene:Show();
+ scene.effect:SetAnimation(0, 0, 1, 0);
+ C_Timer.After(0.769,
+ function()
+ scene.effect:SetAnimation(0, 0, 0, 0);
+ end
+ );
+ C_Timer.After(0.769,
+ function()
+ scene.unlockEffect:SetAnimation(0, 0, 0, 0);
+ end
+ );
+ end
+ end
+ );
-- timer so the effect only plays once
C_Timer.After(2.969, function() self:CleanUpLearnEssence(); end);
end
@@ -696,7 +845,7 @@ end
function AzeriteMilestoneBaseMixin:OnEvent(event, ...)
if event == "UI_MODEL_SCENE_INFO_UPDATED" then
- self.unlockEffect = nil;
+ self.UnlockModelScene.unlockEffect = nil;
end
end
@@ -706,7 +855,7 @@ end
function AzeriteMilestoneBaseMixin:OnHide()
self:UnregisterEvent("UI_MODEL_SCENE_INFO_UPDATED");
- self.unlockEffect = nil;
+ self.UnlockModelScene.unlockEffect = nil;
end
function AzeriteMilestoneBaseMixin:OnMouseUp()
@@ -725,21 +874,26 @@ function AzeriteMilestoneBaseMixin:OnLeave()
end
function AzeriteMilestoneBaseMixin:OnUnlocked()
- if not self.unlockEffect then
+ local scene = self.UnlockModelScene;
+ if not scene.unlockEffect then
local forceUpdate = true;
local sceneInfo = self.slot and UNLOCK_SLOT_MODEL_SCENE_INFO or UNLOCK_STAMINA_MODEL_SCENE_INFO;
- self.unlockEffect = StaticModelInfo.SetupModelScene(self.UnlockModelScene, sceneInfo, forceUpdate);
+ scene.unlockEffect = StaticModelInfo.SetupModelScene(scene, sceneInfo, forceUpdate);
+ scene.secondaryEffect = scene:GetActorByTag("effect2");
+ if scene.secondaryEffect then
+ scene.secondaryEffect:SetModelByFileID(UNLOCK_SECONDARY_EFFECT_ID);
+ end
end
- if self.unlockEffect then
- self.UnlockModelScene:Show();
- self.unlockEffect:SetAnimation(0, 0, 1, 0);
+ if scene.unlockEffect then
+ scene:Show();
+ scene.unlockEffect:SetAnimation(0, 0, 1, 0);
C_Timer.After(.2,
function()
- self.unlockEffect:SetAnimation(0, 0, 0, 0);
+ scene.unlockEffect:SetAnimation(0, 0, 0, 0);
C_Timer.After(5,
function()
- self.UnlockModelScene:Hide();
+ scene:Hide();
end
);
C_Timer.After(.4,
@@ -748,12 +902,69 @@ function AzeriteMilestoneBaseMixin:OnUnlocked()
self.SwirlContainer.SelectedAnim:Play();
end
);
+ if scene.secondaryEffect then
+ scene.secondaryEffect:SetAnimation(0, 0, 1, 0);
+ C_Timer.After(0.5, function() scene.secondaryEffect:SetAnimation(0, 0, 0, 0); end);
+ end
end
);
if GameTooltip:GetOwner() == self then
self:OnEnter();
end
end
+
+ if self.slot then
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_UNLOCKESSENCESLOT);
+ else
+ PlaySound(SOUNDKIT.UI_82_HEARTOFAZEROTH_UNLOCKSTAMINANODE);
+ end
+end
+
+function AzeriteMilestoneBaseMixin:BeginReveal(delay)
+ self:Show();
+ self:Refresh();
+ self.RevealAnim.Start:SetEndDelay(delay);
+ self.RevealAnim:Play();
+end
+
+function AzeriteMilestoneBaseMixin:CancelReveal(delay)
+ self.RevealAnim:Stop();
+ self:SetAlpha(1);
+end
+
+function AzeriteMilestoneBaseMixin:ShouldShowUnlockState()
+ if C_AzeriteEssence.IsAtForge() then
+ return self.canUnlock;
+ else
+ return self:GetParent():MeetsPowerLevel(self.requiredLevel)
+ end
+end
+
+function AzeriteMilestoneBaseMixin:UpdateMilestoneInfo()
+ local milestoneInfo = C_AzeriteEssence.GetMilestoneInfo(self.milestoneID);
+
+ self.unlocked = milestoneInfo.unlocked;
+ self.canUnlock = milestoneInfo.canUnlock;
+ self.requiredLevel = milestoneInfo.requiredLevel;
+end
+
+function AzeriteMilestoneBaseMixin:AddStateToTooltip(requiredLevelString, returnToForgeString)
+ local wrapText = true;
+ if C_AzeriteEssence.IsAtForge() then
+ if self.canUnlock then
+ GameTooltip_AddColoredLine(GameTooltip, AZERITE_CLICK_TO_SELECT, GREEN_FONT_COLOR, wrapText);
+ elseif self:GetParent():MeetsPowerLevel(self.requiredLevel) then
+ GameTooltip_AddColoredLine(GameTooltip, AZERITE_MILESTONE_NO_ACTIVE_LINKS, RED_FONT_COLOR, wrapText);
+ else
+ GameTooltip_AddColoredLine(GameTooltip, string.format(requiredLevelString, self.requiredLevel), DISABLED_FONT_COLOR, wrapText);
+ end
+ else
+ if self:ShouldShowUnlockState() then
+ GameTooltip_AddColoredLine(GameTooltip, returnToForgeString, RED_FONT_COLOR, wrapText);
+ else
+ GameTooltip_AddColoredLine(GameTooltip, string.format(requiredLevelString, self.requiredLevel), DISABLED_FONT_COLOR, wrapText);
+ end
+ end
end
AzeriteMilestoneSlotMixin = CreateFromMixins(AzeriteMilestoneBaseMixin);
@@ -775,12 +986,9 @@ function AzeriteMilestoneSlotMixin:ShowStateFrame(stateFrame)
end
function AzeriteMilestoneSlotMixin:Refresh()
- local milestoneInfo = C_AzeriteEssence.GetMilestoneInfo(self.milestoneID);
+ self:UpdateMilestoneInfo();
- self.unlocked = milestoneInfo.unlocked;
- self.canUnlock = milestoneInfo.canUnlock;
-
- if milestoneInfo.unlocked then
+ if self.unlocked then
self:ShowStateFrame(self.UnlockedState);
local essenceID = self:GetParent():GetEffectiveEssence(self.milestoneID);
local icon;
@@ -803,7 +1011,7 @@ function AzeriteMilestoneSlotMixin:Refresh()
stateFrame.EmptyGlow.Anim:Play();
end
else
- if milestoneInfo.canUnlock then
+ if self:ShouldShowUnlockState() then
self:ShowStateFrame(self.AvailableState);
if C_AzeriteEssence.IsAtForge() then
self.AvailableState.GlowAnim:Stop();
@@ -814,7 +1022,7 @@ function AzeriteMilestoneSlotMixin:Refresh()
end
else
self:ShowStateFrame(self.LockedState);
- self.LockedState.UnlockLevelText:SetText(milestoneInfo.requiredLevel);
+ self.LockedState.UnlockLevelText:SetText(self.requiredLevel);
end
end
end
@@ -844,7 +1052,13 @@ function AzeriteMilestoneSlotMixin:OnMouseUp(button)
end
function AzeriteMilestoneSlotMixin:OnEnter()
- GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
+ local isMainSlot = self.slot == Enum.AzeriteEssence.MainSlot;
+ if isMainSlot then
+ GameTooltip:SetOwner(self, "ANCHOR_RIGHT", -20, 0);
+ else
+ GameTooltip:SetOwner(self, "ANCHOR_RIGHT", -10, -5);
+ end
+
local essenceID = C_AzeriteEssence.GetMilestoneEssence(self.milestoneID);
if essenceID then
GameTooltip:SetAzeriteEssenceSlot(self.slot);
@@ -858,20 +1072,10 @@ function AzeriteMilestoneSlotMixin:OnEnter()
end
else
local wrapText = true;
- local isMainSlot = self.slot == Enum.AzeriteEssence.MainSlot;
if not self.unlocked then
assert(not isMainSlot);
GameTooltip_SetTitle(GameTooltip, AZERITE_ESSENCE_PASSIVE_SLOT);
- if self.canUnlock then
- if C_AzeriteEssence.IsAtForge() then
- GameTooltip_AddColoredLine(GameTooltip, AZERITE_CLICK_TO_SELECT, GREEN_FONT_COLOR, wrapText);
- else
- GameTooltip_AddColoredLine(GameTooltip, AZERITE_ESSENCE_UNLOCK_SLOT, RED_FONT_COLOR, wrapText);
- end
- else
- local milestoneInfo = C_AzeriteEssence.GetMilestoneInfo(self.milestoneID);
- GameTooltip_AddColoredLine(GameTooltip, string.format(AZERITE_ESSENCE_LOCKED_SLOT_LEVEL, milestoneInfo.requiredLevel), DISABLED_FONT_COLOR, wrapText);
- end
+ self:AddStateToTooltip(AZERITE_ESSENCE_LOCKED_SLOT_LEVEL, AZERITE_ESSENCE_UNLOCK_SLOT);
else
if isMainSlot then
GameTooltip_SetTitle(GameTooltip, AZERITE_ESSENCE_EMPTY_MAIN_SLOT);
@@ -888,17 +1092,14 @@ end
AzeriteMilestoneStaminaMixin = CreateFromMixins(AzeriteMilestoneBaseMixin);
function AzeriteMilestoneStaminaMixin:Refresh()
- local milestoneInfo = C_AzeriteEssence.GetMilestoneInfo(self.milestoneID);
+ self:UpdateMilestoneInfo();
- self.unlocked = milestoneInfo.unlocked;
- self.canUnlock = milestoneInfo.canUnlock;
-
- if milestoneInfo.unlocked then
+ if self.unlocked then
self.Icon:SetAtlas("heartofazeroth-node-on");
else
self.Icon:SetAtlas("heartofazeroth-node-off");
end
- if milestoneInfo.canUnlock then
+ if not self.unlocked and self:ShouldShowUnlockState() then
if C_AzeriteEssence.IsAtForge() then
self.GlowAnim:Stop();
self.ForgeGlowAnim:Play();
@@ -925,15 +1126,8 @@ function AzeriteMilestoneStaminaMixin:OnEnter()
local wrapText = true;
GameTooltip_SetTitle(GameTooltip, spell:GetSpellName());
GameTooltip_AddColoredLine(GameTooltip, spell:GetSpellDescription(), NORMAL_FONT_COLOR, wrapText);
- if self.canUnlock then
- if C_AzeriteEssence.IsAtForge() then
- GameTooltip_AddColoredLine(GameTooltip, AZERITE_CLICK_TO_SELECT, GREEN_FONT_COLOR, wrapText);
- else
- GameTooltip_AddColoredLine(GameTooltip, AZERITE_ESSENCE_UNLOCK_MILESTONE, RED_FONT_COLOR, wrapText);
- end
- elseif not self.unlocked then
- local milestoneInfo = C_AzeriteEssence.GetMilestoneInfo(self.milestoneID);
- GameTooltip_AddColoredLine(GameTooltip, string.format(AZERITE_ESSENCE_LOCKED_MILESTONE_LEVEL, milestoneInfo.requiredLevel), DISABLED_FONT_COLOR, wrapText);
+ if not self.unlocked then
+ self:AddStateToTooltip(AZERITE_ESSENCE_LOCKED_MILESTONE_LEVEL, AZERITE_ESSENCE_UNLOCK_MILESTONE);
end
GameTooltip:Show();
end
@@ -960,11 +1154,26 @@ function AzeriteEssenceLearnAnimFrameMixin:PlayAnim()
end
self.Anim:Stop();
+
+ local runeIndex = random(1, 15);
+ local runeAtlas = "heartofazeroth-animation-rune"..runeIndex;
+ local useAtlasSize = true;
+
for i, texture in ipairs(self.Textures) do
texture:SetAlpha(0);
+ if texture.isRune then
+ texture:SetAtlas(runeAtlas, useAtlasSize);
+ end
end
+
self:Show();
self.Anim:Play();
+
+ C_Timer.After(LEARN_SHAKE_DELAY,
+ function()
+ ShakeFrame(self:GetParent(), LEARN_SHAKE, LEARN_SHAKE_DURATION, LEARN_SHAKE_FREQUENCY);
+ end
+ );
end
function AzeriteEssenceLearnAnimFrameMixin:StopAnim()
diff --git a/Interface/AddOns/Blizzard_AzeriteEssenceUI/Blizzard_AzeriteEssenceUI.xml b/Interface/AddOns/Blizzard_AzeriteEssenceUI/Blizzard_AzeriteEssenceUI.xml
index 8d5c197846faaa9aa12d688451597cb34159c26a..1a27fdb3b5119a96880d9251ebb2ccb4e8a41ca1 100644
--- a/Interface/AddOns/Blizzard_AzeriteEssenceUI/Blizzard_AzeriteEssenceUI.xml
+++ b/Interface/AddOns/Blizzard_AzeriteEssenceUI/Blizzard_AzeriteEssenceUI.xml
@@ -16,6 +16,17 @@
+
+
+
+
+
+
+ self:GetParent():GetParent():OnMilestoneRevealAnimationFinished();
+
+
+
+
@@ -65,8 +76,8 @@
-
-
+
+
@@ -94,12 +105,12 @@
-
-
+
+
-
-
+
+
@@ -186,8 +197,8 @@
-
-
+
+
@@ -200,10 +211,10 @@
-
+
-
+
@@ -227,12 +238,12 @@
-
-
+
+
-
-
+
+
@@ -482,7 +493,7 @@
-
+
@@ -571,7 +582,7 @@
-
+
@@ -623,24 +634,38 @@
+
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
@@ -653,6 +678,9 @@
+
+
+
@@ -691,19 +719,29 @@
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
@@ -711,7 +749,7 @@
-
+
@@ -752,13 +790,17 @@
+
+
+
-
-
-
+
+
+
+
diff --git a/Interface/AddOns/Blizzard_Communities/ClubFinder.lua b/Interface/AddOns/Blizzard_Communities/ClubFinder.lua
index fd8383b3882c460cb9cc97c57e61c9d78f12d3cb..2fc61c1fb9aa48e1f4f9558a57fd820a6a3e9cb7 100644
--- a/Interface/AddOns/Blizzard_Communities/ClubFinder.lua
+++ b/Interface/AddOns/Blizzard_Communities/ClubFinder.lua
@@ -11,13 +11,17 @@ function ClubsRecruitmentDialogMixin:OnLoad()
UIDropDownMenu_Initialize(self.ClubFocusDropdown, ClubFocusClubDropdownInitialize);
end
+function ClubsRecruitmentDialogMixin:OnShow()
+ self:GetParent():RegisterDialogShown(self);
+end
+
function ClubsRecruitmentDialogMixin:PostClub()
local communityFrame = self:GetParent();
local clubInfo = C_Club.GetClubInfo(communityFrame:GetSelectedClubId());
local specsInList = self.LookingForDropdown:GetSpecsList();
local minItemLevel = self.MinIlvlOnly.EditBox:GetNumber();
- local description = self.RecruitmentMessageFrame.EditBox:GetText():gsub("\n","");
+ local description = self.RecruitmentMessageFrame.RecruitmentMessageInput.EditBox:GetText():gsub("\n","");
local minimumLevel = 0;
if (self.MaxLevelOnly.Button:GetChecked()) then
@@ -34,7 +38,7 @@ end
ClubFinderRequestToJoinMixin = {};
function ClubFinderRequestToJoinMixin:ApplyToClub()
- local editbox = self.MessageFrame.EditBox;
+ local editbox = self.MessageFrame.MessageScroll.EditBox;
local selectedSpecs = { };
for i, spec in ipairs(self.Specs) do
if(spec.CheckBox:GetChecked()) then
@@ -43,6 +47,14 @@ function ClubFinderRequestToJoinMixin:ApplyToClub()
end
C_ClubFinder.RequestMembershipToClub(self.info.clubFinderGUID, editbox:GetText():gsub("\n",""), selectedSpecs);
+ local requestType;
+ if (self:GetParent().isGuildType) then
+ requestType = Enum.ClubFinderRequestType.Guild;
+ else
+ requestType = Enum.ClubFinderRequestType.Community;
+ end
+
+ C_ClubFinder.PlayerRequestPendingClubsList(requestType);
self.card.RequestJoin:Hide();
self.card.RequestStatus:SetTextColor(GREEN_FONT_COLOR:GetRGB());
@@ -907,31 +919,26 @@ function ClubFinderCommunitiesCardFrameMixin:OnLoad()
self.PendingCardList = { };
self.CardList = { };
self.pendingCardListSize = 0;
+ self.isPendingListShowing = false;
+ self.ListScrollFrame.update = function() self:RefreshLayout() end;
+
+ HybridScrollFrame_CreateButtons(self.ListScrollFrame, "ClubFinderCommunitiesCardTemplate", 13, -10, "TOPLEFT", nil, nil, -5);
end
function ClubFinderCommunitiesCardFrameMixin:BuildCardList()
- self.CardList = { };
self.CardList = C_ClubFinder.ReturnMatchingCommunityList();
-
- if not self.ListScrollFrame.buttons and self.CardList and #self.CardList > 0 then
- HybridScrollFrame_CreateButtons(self.ListScrollFrame, "ClubFinderCommunitiesCardTemplate", 13, -10, "TOPLEFT", nil, nil, -5);
- else
- self.ListScrollFrame.scrollBar:Hide();
- self:GetParent().InsetFrame.GuildDescription:SetText(CLUB_FINDER_SEARCH_NOTHING_FOUND);
- end
+ self.ListScrollFrame.scrollBar:Hide();
+ self:GetParent().InsetFrame.GuildDescription:SetText(CLUB_FINDER_SEARCH_NOTHING_FOUND);
end
function ClubFinderCommunitiesCardFrameMixin:BuildPendingCardList()
- self.PendingCardList = { };
- if not self.ListScrollFrame.buttons then
- HybridScrollFrame_CreateButtons(self.ListScrollFrame, "ClubFinderCommunitiesCardTemplate", 13, -10, "TOPLEFT", nil, nil, -5);
- end
-
self.PendingCardList = C_ClubFinder.PlayerReturnPendingCommunitiesList();
self.pendingCardListSize = #self.PendingCardList;
+ self.ListScrollFrame.scrollBar:Hide();
+ self:GetParent().InsetFrame.GuildDescription:SetText(CLUB_FINDER_SEARCH_NOTHING_FOUND);
end
-function ClubFinderCommunitiesCardFrameMixin:RefreshLayout(shouldShowPendingList)
+function ClubFinderCommunitiesCardFrameMixin:RefreshLayout()
local playerSpecs = ClubFinderGetPlayerSpecIds();
local showingCards = 0;
local numCardsTotal = 0;
@@ -940,13 +947,13 @@ function ClubFinderCommunitiesCardFrameMixin:RefreshLayout(shouldShowPendingList
local index;
if (self.ListScrollFrame.buttons) then
- if (shouldShowPendingList) then
- numCardsTotal = #self.PendingCardList;
+ if (self.isPendingListShowing) then
+ numCardsTotal = self.pendingCardListSize;
for i = 1, #self.ListScrollFrame.buttons do
index = offset + i;
local cardInfo = self.PendingCardList[index];
local currentCard = self.ListScrollFrame.buttons[i];
- if(cardInfo) then
+ if (cardInfo) then
currentCard.playerSpecs = playerSpecs;
currentCard.cardInfo = cardInfo;
currentCard:UpdateCard();
@@ -979,16 +986,14 @@ function ClubFinderCommunitiesCardFrameMixin:RefreshLayout(shouldShowPendingList
if (self:GetParent().InsetFrame.GuildDescription:IsShown()) then
self:GetParent().InsetFrame.GuildDescription:Hide();
end
-
- if (self.ListScrollFrame) then
- local totalHeight = numCardsTotal * 88;
- HybridScrollFrame_Update(self.ListScrollFrame, totalHeight, self.ListScrollFrame:GetHeight());
- end
-
self:Show();
else
self:GetParent().InsetFrame.GuildDescription:Show();
end
+
+ local displayedHeight = showingCards * 76;
+ local totalHeight = numCardsTotal * 76;
+ HybridScrollFrame_Update(self.ListScrollFrame, totalHeight, displayedHeight);
end
ClubFinderGuildCardsMixin = { };
@@ -1015,6 +1020,7 @@ function ClubFinderGuildCardsMixin:PagePrevious()
end
function ClubFinderGuildCardsMixin:BuildCardList()
+ self.CardList = { };
self.CardList = C_ClubFinder.ReturnMatchingGuildList();
self.numPages = 0;
@@ -1036,8 +1042,8 @@ function ClubFinderGuildCardsMixin:HideCardList()
self.Cards[i]:Hide();
end
end
-
-function ClubFinderGuildCardsMixin:RefreshLayout(cardPage, shouldShowPendingList)
+
+function ClubFinderGuildCardsMixin:RefreshLayout(cardPage)
if(not cardPage) then
cardPage = 1;
end
@@ -1045,9 +1051,9 @@ function ClubFinderGuildCardsMixin:RefreshLayout(cardPage, shouldShowPendingList
self:HideCardList();
local playerSpecs = ClubFinderGetPlayerSpecIds();
- local showingCards = false;
+ local showingCards = false;
- if (shouldShowPendingList) then
+ if (self.isPendingListShowing) then
for i = 1, #self.Cards do
local pendingCardIndex = (cardPage - 1) * GUILD_CARDS_PER_PAGE + i;
local cardInfo = self.PendingCardList[pendingCardIndex];
@@ -1062,21 +1068,20 @@ function ClubFinderGuildCardsMixin:RefreshLayout(cardPage, shouldShowPendingList
end
end
else
- for i = 1, #self.Cards do
+ for i = 1, #self.Cards do
local cardIndex = (cardPage - 1) * GUILD_CARDS_PER_PAGE + i;
local cardInfo = self.CardList[cardIndex];
- if(cardInfo) then
- self.Cards[i].playerSpecs = playerSpecs;
- self.Cards[i].cardInfo = cardInfo;
- self.Cards[i]:UpdateCard();
- self.Cards[i]:Show();
- showingCards = true;
- else
- self.Cards[i]:Hide();
- end
+ if(cardInfo) then
+ self.Cards[i].playerSpecs = playerSpecs;
+ self.Cards[i].cardInfo = cardInfo;
+ self.Cards[i]:UpdateCard();
+ self.Cards[i]:Show();
+ showingCards = true;
+ else
+ self.Cards[i]:Hide();
+ end
+ end
end
- end
-
if (showingCards) then
if(self.numPages <= 1) then
self.PreviousPage:Hide();
@@ -1150,15 +1155,23 @@ function ClubFinderGuildAndCommunityMixin:OnShow()
self:RegisterEvent("CLUB_FINDER_RECRUIT_LIST_CHANGED");
self:RegisterEvent("CLUB_FINDER_RECRUITS_UPDATED");
- local GetGuildList = true;
C_ClubFinder.PlayerRequestPendingClubsList(Enum.ClubFinderRequestType.All); -- Player's applications to a guild or community
-
self:UpdateType(self.shouldShowGuildFinderOnly); --Should show communities list first.
self.OptionsList:Show();
end
+function ClubFinderGuildAndCommunityMixin:ResetToDefaults()
+ self.GuildCards.CardList = { };
+ self.CommunityCards.CardList = { };
+ self.GuildCards.PendingCardList = { };
+ self.CommunityCards.PendingCardList = { };
+ self.OptionsList.SearchBox:SetText("");
+ self.isPendingListShowing = true;
+end
+
function ClubFinderGuildAndCommunityMixin:OnHide()
CommunitiesFrameInset:Show();
+ self:ResetToDefaults();
end
function ClubFinderGuildAndCommunityMixin:OnEvent(event, ...)
@@ -1169,6 +1182,7 @@ function ClubFinderGuildAndCommunityMixin:OnEvent(event, ...)
if (buildGuild) then
self.GuildCards:BuildCardList();
if (self.isGuildType) then
+ self.GuildCards.isPendingListShowing = false;
self.GuildCards:RefreshLayout();
self.GuildCards:Show();
end
@@ -1176,6 +1190,7 @@ function ClubFinderGuildAndCommunityMixin:OnEvent(event, ...)
if (builCommunity) then
self.CommunityCards:BuildCardList();
if (not self.isGuildType) then
+ self.CommunityCards.isPendingListShowing = false;
self.CommunityCards:RefreshLayout();
self.CommunityCards:Show();
end
@@ -1193,6 +1208,12 @@ function ClubFinderGuildAndCommunityMixin:OnEvent(event, ...)
self.GuildCards:RefreshLayout();
end
self:UpdateType(self.isGuildType);
+
+ if (self.isGuildType) then
+ self.PendingClubs:SetText(CLUB_FINDER_PENDING_REQUESTS:format(self.GuildCards.pendingCardListSize));
+ else
+ self.PendingClubs:SetText(CLUB_FINDER_PENDING_REQUESTS:format(self.CommunityCards.pendingCardListSize));
+ end
end
end
@@ -1231,13 +1252,16 @@ function ClubFinderGuildAndCommunityMixin:UpdateType(isGuild)
end
ClubFinderPendingClubsMixin = { };
+
function ClubFinderPendingClubsMixin:OnClick()
PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON);
-
+ local parentFrame = self:GetParent();
if (self:GetParent().isGuildType) then
- self:GetParent().GuildCards:RefreshLayout(1, true);
+ parentFrame.GuildCards.isPendingListShowing = not parentFrame.GuildCards.isPendingListShowing;
+ self:GetParent().GuildCards:RefreshLayout(1);
else
- self:GetParent().CommunityCards:RefreshLayout(true);
+ parentFrame.CommunityCards.isPendingListShowing = not parentFrame.CommunityCards.isPendingListShowing
+ self:GetParent().CommunityCards:RefreshLayout();
end
end
diff --git a/Interface/AddOns/Blizzard_Communities/ClubFinder.xml b/Interface/AddOns/Blizzard_Communities/ClubFinder.xml
index b827037395e2d109360dd328a6e0ff2b72255b22..1d06d74ca42cff99f4aa8c2ef65e5e840cc3f41b 100644
--- a/Interface/AddOns/Blizzard_Communities/ClubFinder.xml
+++ b/Interface/AddOns/Blizzard_Communities/ClubFinder.xml
@@ -2,7 +2,19 @@
..\..\FrameXML\UI.xsd">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -320,34 +332,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
- self.InformationText:Hide();
-
-
- if ( self:GetText() == "" ) then
- self.InformationText:Show();
- end
-
-
-
-
+
+
+
+
+
-
-
- self.EditBox:SetFocus();
-
-
@@ -445,6 +435,7 @@
+
@@ -572,34 +563,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
- self.InformationText:Hide();
-
-
- if ( self:GetText() == "" ) then
- self.InformationText:Show();
- end
-
-
-
-
+
+
+
+
+
-
-
- self.EditBox:SetFocus();
-
-
diff --git a/Interface/AddOns/Blizzard_Communities/CommunitiesFrame.lua b/Interface/AddOns/Blizzard_Communities/CommunitiesFrame.lua
index 1cd155cb42c8cb8a8c947fe4b98f08db867164d2..4f35b6f270fa5b4bc1d398d2f3d30f2fed13864e 100644
--- a/Interface/AddOns/Blizzard_Communities/CommunitiesFrame.lua
+++ b/Interface/AddOns/Blizzard_Communities/CommunitiesFrame.lua
@@ -804,6 +804,14 @@ function CommunitiesFrameMixin:OnHide()
PlaySound(SOUNDKIT.IG_CHARACTER_INFO_CLOSE);
self:CloseActiveDialogs();
+ if(self.CommunityAndGuildFinderFrame:IsShown()) then
+ self.CommunityAndGuildFinderFrame:Hide();
+ end
+
+ if(self.GuildFinderFrame:IsShown()) then
+ self.GuildFinderFrame:Hide();
+ end
+
C_Club.ClearClubPresenceSubscription();
C_Club.ClearAutoAdvanceStreamViewMarker();
C_Club.Flush();
@@ -900,7 +908,6 @@ function CommunitiesControlFrameMixin:Update()
if not self:IsShown() then
return;
end
-
self.CommunitiesSettingsButton:Hide();
self.GuildRecruitmentButton:Hide();
self.GuildControlButton:Hide();
diff --git a/Interface/AddOns/Blizzard_Communities/CommunitiesFrame.xml b/Interface/AddOns/Blizzard_Communities/CommunitiesFrame.xml
index 02d12ec773135b1b85d559cca28f48477fb94730..9b2628a3e60604cbf0de965b3f4e0f717a8650be 100644
--- a/Interface/AddOns/Blizzard_Communities/CommunitiesFrame.xml
+++ b/Interface/AddOns/Blizzard_Communities/CommunitiesFrame.xml
@@ -424,7 +424,7 @@
-
+
-
+
diff --git a/Interface/AddOns/Blizzard_PVPMatch/PVPMatchScoreboard.lua b/Interface/AddOns/Blizzard_PVPMatch/PVPMatchScoreboard.lua
index dc1c57d845485e0233a1549a6cfca1748cb16c15..07e0091c7ebab6bcd846e322a9c9a69924e27fa4 100644
--- a/Interface/AddOns/Blizzard_PVPMatch/PVPMatchScoreboard.lua
+++ b/Interface/AddOns/Blizzard_PVPMatch/PVPMatchScoreboard.lua
@@ -1,12 +1,15 @@
local ACTIVE_EVENTS = {
+ "PLAYER_LEAVING_WORLD",
+ "PVP_MATCH_COMPLETE",
+ "PVP_MATCH_INACTIVE",
"UPDATE_BATTLEFIELD_SCORE",
};
PVPMatchScoreboardMixin = {};
function PVPMatchScoreboardMixin:OnLoad()
+ self:RegisterEvent("PLAYER_ENTERING_WORLD");
self:RegisterEvent("PVP_MATCH_ACTIVE");
- self:RegisterEvent("PVP_MATCH_INACTIVE");
self.ScrollFrame = self.Content.ScrollFrame;
self.ScrollCategories = self.Content.ScrollCategories;
@@ -35,17 +38,19 @@ function PVPMatchScoreboardMixin:OnLoad()
end
function PVPMatchScoreboardMixin:Init()
- local isArena = IsActiveBattlefieldArena();
- local isLFD = IsInLFDBattlefield();
- local isFactionalMatch = not (isArena or isArenaSkirmish or isLFD);
- self.TabGroup:SetShown(isFactionalMatch);
+ if self.isInitialized then
+ return;
+ end
+ self.isInitialized = true;
+ local isFactionalMatch = C_PvP.IsMatchFactional();
+ self.TabGroup:SetShown(isFactionalMatch);
self:UpdateTabs();
local factionIndex = GetBattlefieldArenaFaction();
self:SetupArtwork(factionIndex, isFactionalMatch);
- ConstructPVPMatchTable(self.tableBuilder, C_PvP.IsRatedBattleground(), isArena, isLFD, not isFactionalMatch);
+ ConstructPVPMatchTable(self.tableBuilder, not isFactionalMatch);
end
function PVPMatchScoreboardMixin:UpdateTabs()
@@ -59,13 +64,26 @@ function PVPMatchScoreboardMixin:UpdateTabs()
end
end
+function PVPMatchScoreboardMixin:InitPrivate()
+ self:Init();
+ FrameUtil.RegisterFrameForEvents(self, ACTIVE_EVENTS);
+end
+
+function PVPMatchScoreboardMixin:ShutdownPrivate()
+ FrameUtil.UnregisterFrameForEvents(self, ACTIVE_EVENTS);
+ self.isInitialized = false;
+ HideUIPanel(self);
+end
+
function PVPMatchScoreboardMixin:OnEvent(event, ...)
- if event == "PVP_MATCH_ACTIVE" then
- self:Init();
- FrameUtil.RegisterFrameForEvents(self, ACTIVE_EVENTS);
- elseif event == "PVP_MATCH_INACTIVE" then
- FrameUtil.UnregisterFrameForEvents(self, ACTIVE_EVENTS);
- HideUIPanel(self);
+ if event == "PLAYER_ENTERING_WORLD" then
+ if C_PvP.GetActiveMatchState() == Enum.PvpMatchState.Active then
+ self:InitPrivate();
+ end
+ elseif event == "PVP_MATCH_ACTIVE" then
+ self:InitPrivate();
+ elseif event == "PVP_MATCH_INACTIVE" or event == "PLAYER_LEAVING_WORLD" or event == "PVP_MATCH_COMPLETE" then
+ self:ShutdownPrivate();
elseif event == "UPDATE_BATTLEFIELD_SCORE" then
self:UpdateTable();
end
@@ -132,5 +150,6 @@ function PVPMatchScoreboardMixin:OnTabGroupClicked(tab)
end
function PVPMatchScoreboardMixin:BeginShow()
+ self:Init();
ShowUIPanel(PVPMatchScoreboard);
end
\ No newline at end of file
diff --git a/Interface/AddOns/Blizzard_PVPMatch/PVPMatchTable.lua b/Interface/AddOns/Blizzard_PVPMatch/PVPMatchTable.lua
index 6b3aea404f19cd285d733d910e3ff69824ac3989..972cf62ec89d8e58ab358728bb0a8c636486a261 100644
--- a/Interface/AddOns/Blizzard_PVPMatch/PVPMatchTable.lua
+++ b/Interface/AddOns/Blizzard_PVPMatch/PVPMatchTable.lua
@@ -234,10 +234,10 @@ function PVPCellStatMixin:Populate(rowData, dataIndex)
end
end
-function ConstructPVPMatchTable(tableBuilder, isRatedBG, isArena, isLFD, useAlternateColor)
+function ConstructPVPMatchTable(tableBuilder, useAlternateColor)
local iconPadding = 2;
local textPadding = 15;
- local categories = PVPMatchUtil.GetOptionalCategories(isRatedBG, isArena, isLFD);
+ local categories = PVPMatchUtil.GetOptionalCategories();
tableBuilder:Reset();
tableBuilder:SetDataProvider(C_PvP.GetScoreInfo);
@@ -291,20 +291,6 @@ function ConstructPVPMatchTable(tableBuilder, isRatedBG, isArena, isLFD, useAlte
column:ConstrainToHeader(textPadding);
column:ConstructCells("BUTTON", "PVPCellStringTemplate", "healingDone", useAlternateColor, isAbbreviated, hasTooltip);
- if categories.rating then
- column = tableBuilder:AddColumn();
- column:ConstructHeader("BUTTON", "PVPHeaderStringTemplate", BATTLEGROUND_RATING, "CENTER", "bgRating", BATTLEGROUND_RATING);
- column:ConstrainToHeader(textPadding);
- column:ConstructCells("BUTTON", "PVPCellStringTemplate", "rating", useAlternateColor);
- end
-
- if categories.ratingChange then
- column = tableBuilder:AddColumn();
- column:ConstructHeader("BUTTON", "PVPHeaderStringTemplate", SCORE_RATING_CHANGE, "CENTER", "bgratingChange", RATING_CHANGE_TOOLTIP);
- column:ConstrainToHeader(textPadding);
- column:ConstructCells("BUTTON", "PVPCellStringTemplate", "ratingChange", useAlternateColor);
- end
-
local statColumns = {};
for pvpStatIndex, pvpStatID in ipairs(C_PvP.GetMatchPVPStatIDs()) do
local statColumn = C_PvP.GetMatchPVPStatColumn(pvpStatID);
@@ -326,7 +312,20 @@ function ConstructPVPMatchTable(tableBuilder, isRatedBG, isArena, isLFD, useAlte
column:ConstructCells("BUTTON", "PVPCellStatTemplate", statColumn.statPath, useAlternateColor);
end
end
-
+
+ if categories.rating then
+ column = tableBuilder:AddColumn();
+ column:ConstructHeader("BUTTON", "PVPHeaderStringTemplate", BATTLEGROUND_RATING, "CENTER", "bgRating", BATTLEGROUND_RATING);
+ column:ConstrainToHeader(textPadding);
+ column:ConstructCells("BUTTON", "PVPCellStringTemplate", "rating", useAlternateColor);
+ end
+
+ if categories.ratingChange then
+ column = tableBuilder:AddColumn();
+ column:ConstructHeader("BUTTON", "PVPHeaderStringTemplate", SCORE_RATING_CHANGE, "CENTER", "bgratingChange", RATING_CHANGE_TOOLTIP);
+ column:ConstrainToHeader(textPadding);
+ column:ConstructCells("BUTTON", "PVPCellStringTemplate", "ratingChange", useAlternateColor);
+ end
tableBuilder:Arrange();
end
\ No newline at end of file
diff --git a/Interface/AddOns/Blizzard_PVPMatch/PVPMatchUtil.lua b/Interface/AddOns/Blizzard_PVPMatch/PVPMatchUtil.lua
index e5842500c7bf6c3b37cd1a7d826c97b76153cbd5..5f55624824c9b2e8e4a2f7622aa897323c80b506 100644
--- a/Interface/AddOns/Blizzard_PVPMatch/PVPMatchUtil.lua
+++ b/Interface/AddOns/Blizzard_PVPMatch/PVPMatchUtil.lua
@@ -42,24 +42,14 @@ function PVPMatchUtil.GetCellColor(factionIndex, useAlternateColor)
return PVPMatchUtil.CellColors[index];
end
-function PVPMatchUtil.GetOptionalCategories(isRated, isArena, isLFD)
+function PVPMatchUtil.GetOptionalCategories()
local categories = {};
-
- local isArenaOrLFD = isArena or isLFD;
- if not isRated and not isArenaOrLFD then
- categories.honorableKills = true;
- end
-
- if not isArenaOrLFD then
- categories.deaths = true;
- end
-
- if isRated then
- categories.rating = true;
- categories.ratingChange = true;
- elseif not isArenaOrLFD then
- categories.honorGained = true;
- end
+ categories.honorableKills = C_PvP.CanDisplayHonorableKills();
+ categories.deaths = C_PvP.CanDisplayDeaths();
+
+ local isRated = C_PvP.IsRatedBattleground();
+ categories.rating = isRated;
+ categories.ratingChange = isRated;
return categories;
end
diff --git a/Interface/AddOns/Blizzard_StoreUI/Blizzard_ProductCardTemplates.lua b/Interface/AddOns/Blizzard_StoreUI/Blizzard_ProductCardTemplates.lua
index f1918550e0692d1ba8fdbc26e4fe1a28c19882dc..378d05b7e4f87f71fa29ba461b102c9c92e1e89b 100644
--- a/Interface/AddOns/Blizzard_StoreUI/Blizzard_ProductCardTemplates.lua
+++ b/Interface/AddOns/Blizzard_StoreUI/Blizzard_ProductCardTemplates.lua
@@ -248,10 +248,7 @@ end
function StoreCardMixin:ShouldEnableBuyButton(entryInfo)
local alreadyOwned = entryInfo.alreadyOwned;
local buyableHere = entryInfo.sharedData.buyableHere;
- local selectedCategoryID = StoreFrame_GetSelectedCategoryID();
- local trialRestricted = selectedCategoryID ~= WOW_GAMES_CATEGORY_ID and IsTrialAccount();
- local veteranRestricted = selectedCategoryID ~= WOW_GAME_TIME_CATEGORY_ID and IsVeteranTrialAccount();
- return buyableHere and not alreadyOwned and not trialRestricted and not veteranRestricted;
+ return buyableHere and not alreadyOwned;
end
function StoreCardMixin:SetupBuyButton(info, entryInfo)
diff --git a/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateBase.lua b/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateBase.lua
index 558f5d3c0a3a687f6a7c5a720a5d1b3b4ec933d7..998d3f9054076763d2c6bcc1cc8a615c497fe405 100644
--- a/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateBase.lua
+++ b/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateBase.lua
@@ -59,6 +59,35 @@ function UIWidgetTemplateTooltipFrameMixin:OnLeave()
self.mouseOver = false;
end
+local function GetTextColorForEnabledState(enabledState, overrideNormalFontColor)
+ if enabledState == Enum.WidgetEnabledState.Disabled then
+ return DISABLED_FONT_COLOR;
+ elseif enabledState == Enum.WidgetEnabledState.Red then
+ return RED_FONT_COLOR;
+ elseif enabledState == Enum.WidgetEnabledState.Highlight then
+ return HIGHLIGHT_FONT_COLOR;
+ else
+ return overrideNormalFontColor or NORMAL_FONT_COLOR;
+ end
+end
+
+local function SetTextColorForEnabledState(fontString, enabledState, overrideNormalFontColor)
+ fontString:SetTextColor(GetTextColorForEnabledState(enabledState, overrideNormalFontColor):GetRGB());
+end
+
+function UIWidgetTemplateTooltipFrameMixin:SetFontColor(overrideNormalFontColor)
+ if self.ColoredStrings then
+ for _, fontString in ipairs(self.ColoredStrings) do
+ SetTextColorForEnabledState(fontString, self.enabledState, overrideNormalFontColor);
+ end
+ end
+end
+
+function UIWidgetTemplateTooltipFrameMixin:SetEnabledState(enabledState)
+ self.enabledState = enabledState;
+ self:SetFontColor();
+end
+
UIWidgetBaseTemplateMixin = {}
function UIWidgetBaseTemplateMixin:OnLoad()
@@ -144,26 +173,6 @@ function UIWidgetBaseResourceTemplateMixin:Setup(resourceInfo)
self:SetHeight(self.Icon:GetHeight());
end
-function UIWidgetBaseResourceTemplateMixin:SetFontColor(color)
- self.Text:SetTextColor(color:GetRGB());
-end
-
-local function GetTextColorForEnabledState(enabledState, useHighlightForNormal)
- if enabledState == Enum.WidgetEnabledState.Disabled then
- return DISABLED_FONT_COLOR;
- elseif enabledState == Enum.WidgetEnabledState.Red then
- return RED_FONT_COLOR;
- elseif enabledState == Enum.WidgetEnabledState.Highlight then
- return HIGHLIGHT_FONT_COLOR;
- else
- return useHighlightForNormal and HIGHLIGHT_FONT_COLOR or NORMAL_FONT_COLOR;
- end
-end
-
-local function SetTextColorForEnabledState(fontString, enabledState, useHighlightForNormal)
- fontString:SetTextColor(GetTextColorForEnabledState(enabledState, useHighlightForNormal):GetRGB());
-end
-
UIWidgetBaseCurrencyTemplateMixin = {}
function UIWidgetBaseCurrencyTemplateMixin:Setup(currencyInfo, enabledState, tooltipEnabledState)
@@ -172,8 +181,7 @@ function UIWidgetBaseCurrencyTemplateMixin:Setup(currencyInfo, enabledState, too
self.Icon:SetTexture(currencyInfo.iconFileID);
self.Icon:SetDesaturated(enabledState == Enum.WidgetEnabledState.Disabled);
- SetTextColorForEnabledState(self.Text, enabledState);
- SetTextColorForEnabledState(self.LeadingText, enabledState);
+ self:SetEnabledState(enabledState);
local totalWidth = self.Icon:GetWidth() + self.Text:GetWidth() + 5;
@@ -191,11 +199,6 @@ function UIWidgetBaseCurrencyTemplateMixin:Setup(currencyInfo, enabledState, too
self:SetHeight(self.Icon:GetHeight());
end
-function UIWidgetBaseCurrencyTemplateMixin:SetFontColor(color)
- self.Text:SetTextColor(color:GetRGB());
- self.LeadingText:SetTextColor(color:GetRGB());
-end
-
UIWidgetBaseSpellTemplateMixin = {}
local iconSizes =
@@ -242,7 +245,7 @@ function UIWidgetBaseSpellTemplateMixin:Setup(spellInfo, enabledState, width)
end
self.Text:SetWidth(textWidth);
- SetTextColorForEnabledState(self.Text, enabledState);
+ self:SetEnabledState(enabledState);
self.spellID = spellInfo.spellID;
self:SetTooltip(spellInfo.tooltip);
@@ -260,10 +263,6 @@ function UIWidgetBaseSpellTemplateMixin:OnEnter()
end
end
-function UIWidgetBaseSpellTemplateMixin:SetFontColor(color)
- self.Text:SetTextColor(color:GetRGB());
-end
-
UIWidgetBaseColoredTextMixin = {}
function UIWidgetBaseColoredTextMixin:SetEnabledState(enabledState)
@@ -381,6 +380,7 @@ local function GetTextSizeFont(textSizeType)
end
function UIWidgetBaseTextureAndTextTemplateMixin:OnLoad()
+ UIWidgetTemplateTooltipFrameMixin.OnLoad(self);
ResizeLayoutMixin.OnLoad(self);
self.Text:SetFontObjectsToTry();
end
@@ -408,88 +408,107 @@ end
UIWidgetBaseControlZoneTemplateMixin = {}
function UIWidgetBaseControlZoneTemplateMixin:OnLoad()
- UIWidgetBaseTemplateMixin.OnLoad(self);
+ UIWidgetTemplateTooltipFrameMixin.OnLoad(self);
ResizeLayoutMixin.OnLoad(self);
end
local zoneFormatString = "%s-%s-%s";
local cappedFormatString = "%s-%s-%s-cap";
-local swipeTextureFormatString = "Interface\\Widgets\\%s-%s-fill"
+local swipeTextureFormatString = "Interface\\Widgets\\%s-%s-fill";
+local edgeTextureFormatString = "Interface\\UnitPowerBarAlt\\%s-spark%s";
local textureKitRegionInfo = {
["Zone"] = {useAtlasSize = true, setVisibility = true}, -- formatString is filled on before passing to SetupTextureKitsFromRegionInfo (based on whether the zone is capped or not)
- ["FallingGlowBackground"] = {formatString = "%s-fallingglow-bg", useAtlasSize = true},
- ["FallingGlowOverlay"] = {formatString = "%s-fallingglow", useAtlasSize = true},
- ["FullGlow"] = {formatString = "%s-fullglow", useAtlasSize = true},
- ["FullGlowStar"] = {formatString = "%s-starglow", useAtlasSize = true},
+ ["DangerGlowBackground"] = {formatString = "%s-fallingglow-bg", useAtlasSize = true},
+ ["DangerGlowOverlay"] = {formatString = "%s-fallingglow", useAtlasSize = true},
+ ["CapturedGlow"] = {formatString = "%s-fullglow", useAtlasSize = true},
+ ["CapturedGlowStar"] = {formatString = "%s-starglow", useAtlasSize = true},
}
-function UIWidgetBaseControlZoneTemplateMixin:UpdateAnimations(zoneInfo, zoneMode, lastVals)
+local PLAY_ANIM = true;
+local STOP_ANIM = false;
+
+function UIWidgetBaseControlZoneTemplateMixin:PlayOrStopCapturedAnimation(play)
+ if play then
+ self.CapturedGlowStar:Show();
+ self.CapturedGlow:Show();
+ self.CapturedGlowAnim:Play();
+ else
+ self.CapturedGlowAnim:Stop();
+ self.CapturedGlow:Hide();
+ self.CapturedGlowStar:Hide();
+ end
+end
+
+function UIWidgetBaseControlZoneTemplateMixin:PlayOrStopDangerAnimation(play)
+ if play then
+ self.DangerGlowBackground:Show();
+ self.DangerGlowOverlay:Show();
+ self.DangerGlowAnim:Play();
+ else
+ self.DangerGlowAnim:Stop();
+ self.DangerGlowBackground:Hide();
+ self.DangerGlowOverlay:Hide();
+ end
+end
+
+function UIWidgetBaseControlZoneTemplateMixin:UpdateAnimations(zoneInfo, zoneMode, lastVals, dangerFlashType)
local isActive = (zoneInfo.activeState == Enum.ZoneControlActiveState.Active);
- local isMaxed = (zoneInfo.current == zoneInfo.max);
- local wasMaxed = lastVals and (lastVals.current == lastVals.max) or false;
-
- if not lastVals or not isActive then
- -- This is either the first update on this zone/state or the zone is inactive...turn off all animations
- self.FallingGlowAnim:Stop();
- self.FallingGlowBackground:Hide();
- self.FallingGlowOverlay:Hide();
- self.FullGlowAnim:Stop();
- self.FullGlow:Hide();
- self.FullGlowStar:Hide();
+ local isCaptured = (zoneInfo.current >= zoneInfo.capturePoint);
+ local wasCaptured = not lastVals or (lastVals.current >= lastVals.capturePoint);
+
+ if not isActive then
+ -- The zone is inactive...turn off all animations
+ self:PlayOrStopCapturedAnimation(STOP_ANIM);
+ self:PlayOrStopDangerAnimation(STOP_ANIM);
else
- if isMaxed then
- if not wasMaxed then
- -- This zone just got maxed...play the full glow
- self.FullGlowStar:Show();
- self.FullGlow:Show();
- self.FullGlowAnim:Play();
- end
+ local zoneIsGood;
+ if zoneMode == Enum.ZoneControlMode.BothStatesAreGood then
+ zoneIsGood = true;
+ elseif zoneMode == Enum.ZoneControlMode.State1IsGood then
+ zoneIsGood = (zoneInfo.state == Enum.ZoneControlState.State1);
+ elseif zoneMode == Enum.ZoneControlMode.State2IsGood then
+ zoneIsGood = (zoneInfo.state == Enum.ZoneControlState.State2);
+ else
+ zoneIsGood = false;
+ end
+
+ if zoneIsGood and isCaptured and not wasCaptured then
+ -- This is a good zone that just got captured...play the captured animation
+ self:PlayOrStopCapturedAnimation(PLAY_ANIM);
+ end
- -- The zone is maxed...turn off the falling glow
- self.FallingGlowAnim:Stop();
- self.FallingGlowBackground:Hide();
- self.FallingGlowOverlay:Hide();
+ local zoneStateUsesDangerAnim;
+ if zoneIsGood then
+ zoneStateUsesDangerAnim = (dangerFlashType == Enum.ZoneControlDangerFlashType.ShowOnGoodStates) or (dangerFlashType == Enum.ZoneControlDangerFlashType.ShowOnBoth);
else
- local reverseAnims;
- if zoneMode == Enum.ZoneControlMode.BothStatesAreGood then
- reverseAnims = false;
- elseif zoneMode == Enum.ZoneControlMode.State1IsGood then
- reverseAnims = (zoneInfo.state == Enum.ZoneControlState.State2);
- elseif zoneMode == Enum.ZoneControlMode.State2IsGood then
- reverseAnims = (zoneInfo.state == Enum.ZoneControlState.State1);
- else
- reverseAnims = true;
- end
+ zoneStateUsesDangerAnim = (dangerFlashType == Enum.ZoneControlDangerFlashType.ShowOnBadStates) or (dangerFlashType == Enum.ZoneControlDangerFlashType.ShowOnBoth);
+ end
- local playFallingAnim, stopFallingAnim;
- if reverseAnims then
- playFallingAnim = zoneInfo.current > lastVals.current;
- stopFallingAnim = zoneInfo.current < lastVals.current;
- else
- playFallingAnim = zoneInfo.current < lastVals.current;
- stopFallingAnim = zoneInfo.current > lastVals.current;
- end
+ if not zoneStateUsesDangerAnim then
+ -- This zone doesn't use the danger animation...kill it and return
+ self:PlayOrStopDangerAnimation(STOP_ANIM);
+ return;
+ end
- if playFallingAnim then
- self.FallingGlowBackground:Show();
- self.FallingGlowOverlay:Show();
- self.FallingGlowAnim:Play();
- elseif stopFallingAnim then
- self.FallingGlowAnim:Stop();
- self.FallingGlowBackground:Hide();
- self.FallingGlowOverlay:Hide();
- end
+ local playDangerAnim, stopDangerAnim;
+ if zoneIsGood then
+ playDangerAnim = lastVals and zoneInfo.current < lastVals.current;
+ stopDangerAnim = not lastVals or zoneInfo.current > lastVals.current;
+ else
+ playDangerAnim = lastVals and zoneInfo.current > lastVals.current;
+ stopDangerAnim = not lastVals or zoneInfo.current < lastVals.current;
+ end
- -- The zone is not maxed...turn off the full glow
- self.FullGlowAnim:Stop();
- self.FullGlow:Hide();
- self.FullGlowStar:Hide();
+ if playDangerAnim then
+ self:PlayOrStopDangerAnimation(PLAY_ANIM);
+ elseif stopDangerAnim then
+ self:PlayOrStopDangerAnimation(STOP_ANIM);
end
end
end
-function UIWidgetBaseControlZoneTemplateMixin:Setup(zoneIndex, zoneMode, zoneInfo, lastVals, textureKitID)
+function UIWidgetBaseControlZoneTemplateMixin:Setup(zoneIndex, zoneMode, leadingEdgeType, dangerFlashType, zoneInfo, lastVals, textureKitID)
local textureKit = GetUITextureKitInfo(textureKitID);
if not textureKit then
self:Hide();
@@ -521,12 +540,15 @@ function UIWidgetBaseControlZoneTemplateMixin:Setup(zoneIndex, zoneMode, zoneInf
self.Progress:SetSwipeTexture(swipeTextureName);
local percentageFull;
+ local capturePercentage;
local reverse;
if zoneInfo.fillType == Enum.ZoneControlFillType.SingleFillClockwise then
percentageFull = ClampedPercentageBetween(currentVal, zoneInfo.min, zoneInfo.max);
+ capturePercentage = ClampedPercentageBetween(zoneInfo.capturePoint, zoneInfo.min, zoneInfo.max);
reverse = true;
elseif zoneInfo.fillType == Enum.ZoneControlFillType.SingleFillCounterClockwise then
percentageFull = 1 - ClampedPercentageBetween(currentVal, zoneInfo.min, zoneInfo.max);
+ capturePercentage = 1 - ClampedPercentageBetween(zoneInfo.capturePoint, zoneInfo.min, zoneInfo.max);
reverse = false;
elseif zoneInfo.fillType == Enum.ZoneControlFillType.DoubleFillClockwise then
if currentVal >= zoneInfo.capturePoint then
@@ -550,6 +572,24 @@ function UIWidgetBaseControlZoneTemplateMixin:Setup(zoneIndex, zoneMode, zoneInf
reverse = not reverse;
end
+ local edgeColorString = zoneInfo.state == Enum.ZoneControlState.State1 and "blue" or "yellow";
+ local edgeTextureName = edgeTextureFormatString:format(unpack({textureKit, edgeColorString}));
+
+ if percentageFull == 0 or leadingEdgeType == Enum.ZoneControlLeadingEdgeType.NoLeadingEdge then
+ self.Progress:SetEdgeTexture("", 1, 1, 1, 0);
+ else
+ self.Progress:SetEdgeTexture(edgeTextureName);
+ end
+
+ if not isActive or not capturePercentage or zoneInfo.capturePoint <= 1 then
+ self.CapturePoint:SetEdgeTexture("", 1, 1, 1, 0);
+ CooldownFrame_SetDisplayAsPercentage(self.CapturePoint, 0);
+ else
+ self.CapturePoint:SetEdgeTexture(edgeTextureName);
+ self.CapturePoint:SetReverse(reverse);
+ CooldownFrame_SetDisplayAsPercentage(self.CapturePoint, capturePercentage);
+ end
+
self.Progress:SetReverse(reverse);
CooldownFrame_SetDisplayAsPercentage(self.Progress, percentageFull);
@@ -557,7 +597,7 @@ function UIWidgetBaseControlZoneTemplateMixin:Setup(zoneIndex, zoneMode, zoneInf
zoneInfo.current = currentVal;
-- And update the animations
- self:UpdateAnimations(zoneInfo, zoneMode, lastVals);
+ self:UpdateAnimations(zoneInfo, zoneMode, lastVals, dangerFlashType);
self:SetTooltip(zoneInfo.tooltip);
diff --git a/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateBase.xml b/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateBase.xml
index 9534e4f44290458a95a19440b61d31d4cd2f6f27..fb62fbc41371bb04e29a63805f0c0d9a3bc9f097 100644
--- a/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateBase.xml
+++ b/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateBase.xml
@@ -6,6 +6,7 @@
+
@@ -33,9 +34,6 @@
-
-
-
@@ -46,7 +44,7 @@
-
+
@@ -59,7 +57,7 @@
-
+
@@ -70,7 +68,7 @@
-
+
@@ -102,7 +100,7 @@
-
+
@@ -169,7 +167,7 @@
-
+
@@ -186,7 +184,7 @@
-
+
@@ -194,7 +192,7 @@
-
+
@@ -202,7 +200,7 @@
-
+
@@ -213,6 +211,15 @@
+
+
+
+
+
+
+
+
+
@@ -221,20 +228,27 @@
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateZoneControl.lua b/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateZoneControl.lua
index 6ae0dcbd71defef13ef029c14b25d84293f21760..d877b8c3e925f075f8287d0b5e060ed6347a67e3 100644
--- a/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateZoneControl.lua
+++ b/Interface/AddOns/Blizzard_UIWidgets/Blizzard_UIWidgetTemplateZoneControl.lua
@@ -40,7 +40,7 @@ function UIWidgetTemplateZoneControlMixin:Setup(widgetInfo, widgetContainer)
local entryFrame = self.entryPool:Acquire();
entryFrame:Show();
local lastVals = (self.lastVals[index] and (self.lastVals[index].state == zoneInfo.state)) and self.lastVals[index] or nil;
- entryFrame:Setup(index, widgetInfo.mode, zoneInfo, lastVals, widgetInfo.textureKitID);
+ entryFrame:Setup(index, widgetInfo.mode, widgetInfo.leadingEdgeType, widgetInfo.dangerFlashType, zoneInfo, lastVals, widgetInfo.textureKitID);
self:SetZoneAnchors(entryFrame, index);
self.lastVals[index] = zoneInfo;
end
diff --git a/Interface/AddOns/Blizzard_WarboardUI/Blizzard_WarboardUI.lua b/Interface/AddOns/Blizzard_WarboardUI/Blizzard_WarboardUI.lua
index e3216078c84db51ff229a987499a79e58189bb12..893db14658d6b3fc8dbef933334e0fea1919e011 100644
--- a/Interface/AddOns/Blizzard_WarboardUI/Blizzard_WarboardUI.lua
+++ b/Interface/AddOns/Blizzard_WarboardUI/Blizzard_WarboardUI.lua
@@ -60,6 +60,10 @@ local textureKitColors = {
title = CreateColor(0.192, 0.051, 0.008),
description = CreateColor(0.192, 0.051, 0.008),
},
+ ["mechagon"] = {
+ title = CreateColor(0.969, 0.855, 0.667),
+ description = CreateColor(0.969, 0.855, 0.667),
+ },
};
local borderFrameTextureKitRegions = {
@@ -110,6 +114,7 @@ local borderLayout = {
["horde"] = { closeButtonX = 1, closeButtonY = 2, closeBorderX = -1, closeBorderY = 1, header = -61, showHeader = true, },
["marine"] = { closeButtonX = 3, closeButtonY = 3, closeBorderX = -1, closeBorderY = 1, header = 0, showHeader = false, },
["neutral"] = { closeButtonX = 1, closeButtonY = 2, closeBorderX = -1, closeBorderY = 1, header = 0, showHeader = false, },
+ ["mechagon"] = { closeButtonX = 3, closeButtonY = 3, closeBorderX = -1, closeBorderY = 1, header = 0, showHeader = false, },
}
local function SetupBorder(self, layout, textureKit, nineSliceLayout)
diff --git a/Interface/FrameXML/AzeriteEssenceUtil.lua b/Interface/FrameXML/AzeriteEssenceUtil.lua
index cc2b4fba1dd488e8bc7d7930a9b5e78b4bb90a26..908fcaaace50fc0f2a865be1dfd62499b91c54ef 100644
--- a/Interface/FrameXML/AzeriteEssenceUtil.lua
+++ b/Interface/FrameXML/AzeriteEssenceUtil.lua
@@ -1,6 +1,10 @@
AzeriteEssenceUtil = {};
function AzeriteEssenceUtil.HasAnyUnlockableMilestones()
+ if not C_AzeriteEssence.CanOpenUI() then
+ return false;
+ end
+
local milestones = C_AzeriteEssence.GetMilestones();
if milestones then
for i, milestoneInfo in ipairs(milestones) do
@@ -13,7 +17,28 @@ function AzeriteEssenceUtil.HasAnyUnlockableMilestones()
return false, nil;
end
+function AzeriteEssenceUtil.HasMilestoneAtPowerLevel(powerLevel)
+ if not C_AzeriteEssence.CanOpenUI() then
+ return false, nil;
+ end
+
+ local milestones = C_AzeriteEssence.GetMilestones();
+ if milestones then
+ for i, milestoneInfo in ipairs(milestones) do
+ if milestoneInfo.requiredLevel == powerLevel then
+ local milestoneIsSlot = milestoneInfo.slot and true or false;
+ return true, milestoneIsSlot;
+ end
+ end
+ end
+ return false, nil;
+end
+
function AzeriteEssenceUtil.HasAnyEmptySlots()
+ if not C_AzeriteEssence.CanOpenUI() then
+ return false;
+ end
+
local milestones = C_AzeriteEssence.GetMilestones();
if milestones then
for i, milestoneInfo in ipairs(milestones) do
diff --git a/Interface/FrameXML/AzeriteItemToasts.lua b/Interface/FrameXML/AzeriteItemToasts.lua
index 27315c4ef4be9eb6fa4085ec399949b5d3bbadb1..0e50726c775afb157106280afeb86012a4b364d8 100644
--- a/Interface/FrameXML/AzeriteItemToasts.lua
+++ b/Interface/FrameXML/AzeriteItemToasts.lua
@@ -47,6 +47,7 @@ function AzeriteItemLevelUpToastMixin:PlayAzeriteItemPowerToast(azeriteItemLocat
itemColor = item:GetItemQualityColor(),
text = AZERITE_ITEM_LEVELED_UP_TOAST:format(newPowerLevel),
unlockedEmpoweredItemsInfo = equippedUnlockedEmpoweredItemsInfo,
+ newPowerLevel = newPowerLevel,
});
end);
end
@@ -67,9 +68,37 @@ function AzeriteItemLevelUpToastMixin:PlayBanner(data)
self.SubTextLabel:SetAlpha(0);
self.UnlockItemsFrame:SetAlpha(0);
+ self.itemFramePool:ReleaseAll();
+ self.UnlockItemsFrame.EssenceSlotFrame:Hide();
+ self.UnlockItemsFrame.EssenceStaminaFrame:Hide();
+
self:SetupModelScene();
- self:SetUpUnlockedEmpoweredItems(data.unlockedEmpoweredItemsInfo);
+ local addedHeight, subText = self:SetUpAzeriteMilestoneUnlocks(data.newPowerLevel);
+ if addedHeight == 0 then
+ addedHeight, subText = self:SetUpUnlockedEmpoweredItems(data.unlockedEmpoweredItemsInfo);
+ end
+
+ local toastHeight = 77;
+ local effectiveToastHeight = toastHeight + addedHeight;
+ local effectiveScale = effectiveToastHeight / toastHeight;
+
+ self.ShowAnim.BGScaleAnim:SetToScale(1, effectiveScale);
+ self.ShowAnim.GlowLineBottomTranslation:SetOffset(0, -effectiveToastHeight);
+
+ for i, region in ipairs(self.BottomRegions) do
+ local point, parent, relativePoint, sourceX, sourceY = region:GetPoint();
+ region:SetPoint(point, parent, relativePoint, sourceX, -effectiveToastHeight);
+ end
+
+ self.UnlockItemsFrame:SetShown(addedHeight > 0);
+ self.UnlockItemsFrame:Layout();
+ if addedHeight and subText then
+ self.SubTextLabel:SetText(subText);
+ self.SubTextLabel:Show();
+ else
+ self.SubTextLabel:Hide();
+ end
self:SetAlpha(1);
self:Show();
@@ -82,25 +111,28 @@ function AzeriteItemLevelUpToastMixin:SetupModelScene(forceUpdate)
StaticModelInfo.SetupModelScene(self.IconEffect, TOAST_MODEL_SCENE_INFO, forceUpdate);
end
-function AzeriteItemLevelUpToastMixin:SetUpUnlockedEmpoweredItems(unlockedEmpoweredItemsInfo)
- local SMALL_TOAST_SCALE = 1.0;
- local LARGE_TOAST_SCALE = 2.0;
+function AzeriteItemLevelUpToastMixin:SetUpAzeriteMilestoneUnlocks(powerLevel)
+ local height = 0;
+ local subText;
- local toastHeight = 77;
- local hasUnlocks = #unlockedEmpoweredItemsInfo > 0;
- local effectiveScale = hasUnlocks and LARGE_TOAST_SCALE or SMALL_TOAST_SCALE;
- local effectiveToastHeight = toastHeight * effectiveScale;
-
- self.ShowAnim.BGScaleAnim:SetToScale(1, effectiveScale);
- self.ShowAnim.GlowLineBottomTranslation:SetOffset(0, -effectiveToastHeight);
-
- for i, region in ipairs(self.BottomRegions) do
- local point, parent, relativePoint, sourceX, sourceY = region:GetPoint();
- region:SetPoint(point, parent, relativePoint, sourceX, -effectiveToastHeight);
+ local hasMilestone, isSlot = AzeriteEssenceUtil.HasMilestoneAtPowerLevel(powerLevel);
+ if hasMilestone then
+ if isSlot then
+ self.UnlockItemsFrame.EssenceSlotFrame:Show();
+ subText = NEW_AZERITE_ESSENCE_SLOT_UNLOCKED;
+ height = 86;
+ else
+ self.UnlockItemsFrame.EssenceStaminaFrame:Show();
+ subText = NEW_AZERITE_ESSENCE_MILESTONE_UNLOCKED;
+ height = 83;
+ end
end
- self.itemFramePool:ReleaseAll();
- self.UnlockItemsFrame:SetShown(hasUnlocks);
+ return height, subText;
+end
+
+function AzeriteItemLevelUpToastMixin:SetUpUnlockedEmpoweredItems(unlockedEmpoweredItemsInfo)
+ local hasUnlocks = #unlockedEmpoweredItemsInfo > 0;
for i, unlockedEmpoweredItemInfo in ipairs(unlockedEmpoweredItemsInfo) do
local itemButton = self.itemFramePool:Acquire();
@@ -113,21 +145,21 @@ function AzeriteItemLevelUpToastMixin:SetUpUnlockedEmpoweredItems(unlockedEmpowe
itemButton:Show();
end
+ local height = 0;
+ local subText;
+
if hasUnlocks then
if #unlockedEmpoweredItemsInfo == 1 then
local unlockedItem = Item:CreateFromItemLocation(unlockedEmpoweredItemsInfo[1].unlockedItem);
local inventoryTypeName = unlockedItem:GetInventoryTypeName();
- self.SubTextLabel:SetFormattedText(AZERITE_ITEM_LEVELED_UP_TOAST_UNLOCKED_SINGLE, _G[inventoryTypeName]);
+ subText = string.format(AZERITE_ITEM_LEVELED_UP_TOAST_UNLOCKED_SINGLE, _G[inventoryTypeName]);
else
- self.SubTextLabel:SetText(AZERITE_ITEM_LEVELED_UP_TOAST_UNLOCKED_MULTIPLE);
+ subText = AZERITE_ITEM_LEVELED_UP_TOAST_UNLOCKED_MULTIPLE;
end
-
- self.SubTextLabel:Show();
- else
- self.SubTextLabel:Hide();
+ height = 77;
end
- self.UnlockItemsFrame:Layout();
+ return height, subText;
end
function AzeriteItemLevelUpToastMixin:StopBanner()
self.ShowAnim:Stop();
diff --git a/Interface/FrameXML/AzeriteItemToasts.xml b/Interface/FrameXML/AzeriteItemToasts.xml
index c4a8f9417bb695f8291d970e4975bde409165bb1..14c3baabe9ad848d896342fc8e162c7102db5d2a 100644
--- a/Interface/FrameXML/AzeriteItemToasts.xml
+++ b/Interface/FrameXML/AzeriteItemToasts.xml
@@ -193,6 +193,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Interface/FrameXML/BNet.lua b/Interface/FrameXML/BNet.lua
index 1a5b922e99ddffc3265a91be893b2cb276b45b1c..39907cfbe64733eea86538cfbeaf4455b7d56e42 100644
--- a/Interface/FrameXML/BNet.lua
+++ b/Interface/FrameXML/BNet.lua
@@ -66,9 +66,15 @@ function BNToastMixin:OnEvent(event, ...)
elseif ( event == "BN_BLOCK_FAILED_TOO_MANY" ) then
self:BlockFailed(...);
elseif ( event == "BN_FRIEND_ACCOUNT_ONLINE" ) then
- self:AddToast(BN_TOAST_TYPE_ONLINE, ...);
+ local friendId, isCompanionApp = ...;
+ if not isCompanionApp then
+ self:AddToast(BN_TOAST_TYPE_ONLINE, friendId);
+ end
elseif ( event == "BN_FRIEND_ACCOUNT_OFFLINE" ) then
- self:AddToast(BN_TOAST_TYPE_OFFLINE, ...);
+ local friendId, isCompanionApp = ...;
+ if not isCompanionApp then
+ self:AddToast(BN_TOAST_TYPE_OFFLINE, friendId);
+ end
elseif ( event == "BN_CUSTOM_MESSAGE_CHANGED" ) then
self:OnCustomMessageChanged(...);
elseif ( event == "BN_FRIEND_INVITE_ADDED" ) then
diff --git a/Interface/FrameXML/CompactUnitFrame.lua b/Interface/FrameXML/CompactUnitFrame.lua
index 3e48690fc4d3da1ba403003c840f9f0a2aaee4b7..0bc4aa1944430e76113561c42879fb40250ab9d6 100644
--- a/Interface/FrameXML/CompactUnitFrame.lua
+++ b/Interface/FrameXML/CompactUnitFrame.lua
@@ -61,6 +61,7 @@ function CompactUnitFrame_OnEvent(self, event, ...)
CompactUnitFrame_UpdateSelectionHighlight(self);
CompactUnitFrame_UpdateName(self);
CompactUnitFrame_UpdateHealthBorder(self);
+ CompactUnitFrame_UpdateWidgetSet(self);
elseif ( event == "PLAYER_REGEN_ENABLED" or event == "PLAYER_REGEN_DISABLED" ) then
CompactUnitFrame_UpdateAuras(self); --We filter differently based on whether the player is in Combat, so we need to update when that changes.
elseif ( event == "PLAYER_ROLES_ASSIGNED" ) then
diff --git a/Interface/FrameXML/PowerDependencyLine.lua b/Interface/FrameXML/PowerDependencyLine.lua
index 74155409c3e98b242c8251904a8862e9f7bb4b6b..5d66836f1b73af5134216019c0ee5e86c5cf4c1f 100644
--- a/Interface/FrameXML/PowerDependencyLine.lua
+++ b/Interface/FrameXML/PowerDependencyLine.lua
@@ -149,9 +149,7 @@ end
do
local function OnLineRevealFinished(animGroup)
local lineContainer = animGroup:GetParent();
- if lineContainer.animType then
- lineContainer:PlayLineFadeAnim(lineContainer.animType);
- end
+ lineContainer:OnRevealFinished();
end
function PowerDependencyLineMixin:BeginReveal(delay, duration)
@@ -170,6 +168,12 @@ do
end
end
+function PowerDependencyLineMixin:OnRevealFinished()
+ if self.animType then
+ self:PlayLineFadeAnim(self.animType);
+ end
+end
+
function PowerDependencyLineMixin:IsRevealing()
return self.RevealAnim and self.RevealAnim:IsPlaying();
end
diff --git a/Interface/FrameXML/QueueStatusFrame.lua b/Interface/FrameXML/QueueStatusFrame.lua
index 0bfbb08478102a2af5b236cd4d68e60e19cd7c40..99c0ec748b82f4174c7c65b8634ab6844607db5a 100644
--- a/Interface/FrameXML/QueueStatusFrame.lua
+++ b/Interface/FrameXML/QueueStatusFrame.lua
@@ -1197,7 +1197,7 @@ function TogglePVPScoreboardOrResults()
HideUIPanel(PVPMatchScoreboard);
else
local isActive = matchState == Enum.PvpMatchState.Active;
- if isActive and not (IsActiveBattlefieldArena() or IsArenaSkirmish()) then
+ if isActive and not C_PvP.IsMatchConsideredArena() then
PVPMatchScoreboard:BeginShow();
end
end
diff --git a/Interface/FrameXML/TargetFrame.xml b/Interface/FrameXML/TargetFrame.xml
index 7c278188ef06289d4e951ea9aa24cda2b9b93b56..51fe57b99bc394a09918221f9622810d054646b3 100644
--- a/Interface/FrameXML/TargetFrame.xml
+++ b/Interface/FrameXML/TargetFrame.xml
@@ -533,7 +533,7 @@
-
+
diff --git a/Interface/FrameXML/UIParent.lua b/Interface/FrameXML/UIParent.lua
index 55a647190bb07379aa22a23ee55e8168f554e9b8..2caf7c0ad0f2a21317ef5db45c0bf72d827de452 100644
--- a/Interface/FrameXML/UIParent.lua
+++ b/Interface/FrameXML/UIParent.lua
@@ -813,7 +813,7 @@ function ToggleGuildFrame()
elseif ( C_Club.IsRestricted() ~= Enum.ClubRestrictionReason.None ) then
return;
end
-
+
ToggleCommunitiesFrame();
elseif ( IsInGuild() ) then
GuildFrame_LoadUI();
@@ -1271,7 +1271,7 @@ function UIParent_OnEvent(self, event, ...)
end
elseif ( event == "PARTY_INVITE_REQUEST" ) then
FlashClientIcon();
-
+
local name, tank, healer, damage, isXRealm, allowMultipleRoles, inviterGuid = ...;
-- Color the name by our relationship
@@ -1400,7 +1400,7 @@ function UIParent_OnEvent(self, event, ...)
if ( GetReleaseTimeRemaining() > 0 or GetReleaseTimeRemaining() == -1 ) then
StaticPopup_Show("DEATH");
end
-
+
local alreadyShowingSummonPopup = StaticPopup_Visible("CONFIRM_SUMMON_STARTING_AREA") or StaticPopup_Visible("CONFIRM_SUMMON_SCENARIO") or StaticPopup_Visible("CONFIRM_SUMMON")
if ( not alreadyShowingSummonPopup and C_SummonInfo.GetSummonConfirmTimeLeft() > 0 ) then
local summonReason = C_SummonInfo.GetSummonReason();
@@ -2042,7 +2042,7 @@ function UIParent_OnEvent(self, event, ...)
ShowUIPanel(GarrisonRecruiterFrame);
elseif ( event == "GARRISON_TALENT_NPC_OPENED") then
OrderHall_LoadUI();
- OrderHallTalentFrame:SetGarrisonType(...);
+ OrderHallTalentFrame:SetGarrisonType(...);
ToggleOrderHallTalentUI();
elseif ( event == "PRODUCT_DISTRIBUTIONS_UPDATED" ) then
StoreFrame_CheckForFree(event);
@@ -2124,8 +2124,8 @@ function UIParent_OnEvent(self, event, ...)
AzeriteRespecFrame_LoadUI();
ShowUIPanel(AzeriteRespecFrame);
elseif (event == "ISLANDS_QUEUE_OPEN") then
- IslandsQueue_LoadUI();
- ShowUIPanel(IslandsQueueFrame);
+ IslandsQueue_LoadUI();
+ ShowUIPanel(IslandsQueueFrame);
-- Events for Reporting system
elseif (event == "REPORT_PLAYER_RESULT") then
local success = ...;
@@ -2219,7 +2219,7 @@ UIPARENT_MANAGED_FRAME_POSITIONS = {
["MultiBarBottomRight"] = {baseY = 2, watchBar = 1, maxLevel = 1, anchorTo = "ActionButton12", point = "TOPLEFT", rpoint = "TOPRIGHT", xOffset = 45};
["GroupLootContainer"] = {baseY = true, bottomEither = actionBarOffset, overrideActionBar = overrideActionBarTop, petBattleFrame = petBattleTop, bonusActionBar = 1, pet = 1, watchBar = 1};
["TutorialFrameAlertButton"] = {baseY = true, yOffset = -10, bottomEither = actionBarOffset, overrideActionBar = overrideActionBarTop, petBattleFrame = petBattleTop, bonusActionBar = 1, watchBar = 1};
- ["FramerateLabel"] = {baseY = true, bottomEither = actionBarOffset, overrideActionBar = overrideActionBarTop, petBattleFrame = petBattleTop, bonusActionBar = 1, pet = 1, watchBar = 1, playerPowerBarAlt = 1, extraActionBarFrame = 1};
+ ["FramerateLabel"] = {baseY = true, bottomEither = actionBarOffset, overrideActionBar = overrideActionBarTop, petBattleFrame = petBattleTop, bonusActionBar = 1, pet = 1, watchBar = 1, playerPowerBarAlt = 1, extraActionBarFrame = 1, anchorTo="WorldFrame" };
["ArcheologyDigsiteProgressBar"] = {baseY = true, yOffset = 40, bottomEither = actionBarOffset, overrideActionBar = overrideActionBarTop, petBattleFrame = petBattleTop, bonusActionBar = 1, pet = 1, watchBar = 1, tutorialAlert = 1, playerPowerBarAlt = 1, extraActionBarFrame = 1, ZoneAbilityFrame = 1, castingBar = 1};
["CastingBarFrame"] = {baseY = true, yOffset = 40, bottomEither = actionBarOffset, overrideActionBar = overrideActionBarTop, petBattleFrame = petBattleTop, bonusActionBar = 1, pet = 1, watchBar = 1, tutorialAlert = 1, playerPowerBarAlt = 1, extraActionBarFrame = 1, ZoneAbilityFrame = 1, talkingHeadFrame = 1, classResourceOverlayFrame = 1, classResourceOverlayOffset = 1};
["ClassResourceOverlayParentFrame"] = {baseY = true, yOffset = 0, bottomEither = actionBarOffset, overrideActionBar = overrideActionBarTop, petBattleFrame = petBattleTop, bonusActionBar = 1, pet = 1, watchBar = 1, tutorialAlert = 1, playerPowerBarAlt = 1, extraActionBarFrame = 1, ZoneAbilityFrame = 1 };
@@ -2759,7 +2759,7 @@ function FramePositionDelegate:UpdateUIPanelPositions(currentFrame)
else
centerOffset = leftOffset;
UIParent:SetAttribute("CENTER_OFFSET", centerOffset);
-
+
frame = self:GetUIPanel("doublewide");
if ( frame ) then
local xOff = GetUIPanelWindowInfo(frame,"xoffset") or 0;
@@ -3384,7 +3384,7 @@ function CloseWindows(ignoreCenter, frameToIgnore)
end
found = securecall("CloseSpecialWindows") or found;
-
+
UpdateUIPanelPositions();
return found;
@@ -3394,7 +3394,7 @@ function CloseAllWindows_WithExceptions()
-- When the player loses control we close all UIs, unless they're handled below
local centerFrame = GetUIPanel("center");
local ignoreCenter = (centerFrame and GetUIPanelWindowInfo(centerFrame, "ignoreControlLost")) or IsOptionFrameOpen();
-
+
CloseAllWindows(ignoreCenter);
end
diff --git a/Interface/FrameXML/WorldFrame.xml b/Interface/FrameXML/WorldFrame.xml
index c83f5162fbd301b5fa895607931da1e94f87c416..ac6bb512a6a269f54e3badc5df448759dbd35f3f 100644
--- a/Interface/FrameXML/WorldFrame.xml
+++ b/Interface/FrameXML/WorldFrame.xml
@@ -22,15 +22,7 @@
-
-
-
-
-
-
-
-
-
+
diff --git a/Interface/SharedXML/GraphicsQualityLevels.lua b/Interface/SharedXML/GraphicsQualityLevels.lua
index 6105b0e85a3d21d13d4d7fc0bcaba0052b0fc8d2..76a742c608991ba82990c2b2c0e4132d466d6a63 100644
--- a/Interface/SharedXML/GraphicsQualityLevels.lua
+++ b/Interface/SharedXML/GraphicsQualityLevels.lua
@@ -16,7 +16,6 @@ VideoData["Graphics_Quality"]={
"Graphics_ProjectedTexturesDropDown",
"Graphics_SSAODropDown",
"Graphics_DepthEffectsDropDown",
- "Graphics_LightingQualityDropDown",
"Graphics_OutlineModeDropDown",
},
numQualityLevels = 10,
@@ -128,7 +127,6 @@ VideoData["RaidGraphics_Quality"].childOptions = {
"RaidGraphics_ProjectedTexturesDropDown",
"RaidGraphics_SSAODropDown",
"RaidGraphics_DepthEffectsDropDown",
- "RaidGraphics_LightingQualityDropDown",
"RaidGraphics_OutlineModeDropDown",
};
VideoData["RaidGraphics_Quality"].numQualityLevels = 10;
@@ -743,7 +741,6 @@ VideoData["Graphics_FilteringDropDown"]={
dependent = {
"Graphics_Quality",
},
- restart = true;
}
VideoData["RaidGraphics_FilteringDropDown"]={
@@ -773,7 +770,6 @@ VideoData["RaidGraphics_FilteringDropDown"]={
dependent = {
"RaidGraphics_Quality",
},
- restart = true;
}
-------------------------------------------------------------------------------------------------------
@@ -933,54 +929,6 @@ VideoData["RaidGraphics_DepthEffectsDropDown"]={
},
}
--------------------------------------------------------------------------------------------------------
-VideoData["Graphics_LightingQualityDropDown"]={
- name = LIGHTING_QUALITY;
- description = OPTION_TOOLTIP_LIGHTING_QUALITY,
- graphicsCVar = "graphicsLightingQuality",
- data = {
- [1] = {
- text = VIDEO_OPTIONS_LOW,
- tooltip = VIDEO_OPTIONS_LIGHTING_QUALITY_LOW,
- },
- [2] = {
- text = VIDEO_OPTIONS_MEDIUM,
- tooltip = VIDEO_OPTIONS_LIGHTING_QUALITY_MEDIUM,
- },
- [3] = {
- text = VIDEO_OPTIONS_HIGH,
- tooltip = VIDEO_OPTIONS_LIGHTING_QUALITY_HIGH,
- },
- },
- dependent = {
- "Graphics_Quality",
- },
-}
-
--------------------------------------------------------------------------------------------------------
-VideoData["RaidGraphics_LightingQualityDropDown"]={
- name = LIGHTING_QUALITY;
- description = OPTION_TOOLTIP_LIGHTING_QUALITY,
- graphicsCVar = "raidGraphicsLightingQuality",
- data = {
- [1] = {
- text = VIDEO_OPTIONS_LOW,
- tooltip = VIDEO_OPTIONS_LIGHTING_QUALITY_LOW,
- },
- [2] = {
- text = VIDEO_OPTIONS_MEDIUM,
- tooltip = VIDEO_OPTIONS_LIGHTING_QUALITY_MEDIUM,
- },
- [3] = {
- text = VIDEO_OPTIONS_HIGH,
- tooltip = VIDEO_OPTIONS_LIGHTING_QUALITY_HIGH,
- },
- },
- dependent = {
- "RaidGraphics_Quality",
- },
-}
-
-------------------------------------------------------------------------------------------------------
VideoData["Graphics_OutlineModeDropDown"]={
name = OUTLINE_MODE;
diff --git a/Interface/SharedXML/SharedAnimations.xml b/Interface/SharedXML/SharedAnimations.xml
index 58cf3622b2b5ab92450480ccadb476411ef0ad1d..e4e3b7b2afef84c55204f94283107eef2304560e 100644
--- a/Interface/SharedXML/SharedAnimations.xml
+++ b/Interface/SharedXML/SharedAnimations.xml
@@ -13,41 +13,41 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -77,7 +77,7 @@
-
+
local powerButton = self:GetParent():GetParent();
diff --git a/Interface/SharedXML/SoundKitConstants.lua b/Interface/SharedXML/SoundKitConstants.lua
index 1ec49aec750e8531ed39bd41451ffc13437015a4..883430c24135cd351996b24e5ac7583f8fc075c7 100644
--- a/Interface/SharedXML/SoundKitConstants.lua
+++ b/Interface/SharedXML/SoundKitConstants.lua
@@ -361,6 +361,18 @@ SOUNDKIT = {
UI_GARRISON_MISSION_COMPLETE_ENCOUNTER_CHANCE = 0, -- missing SoundKit entry!
UI_MOUNT_SLOTEQUIPMENT = 132235,
+
+ UI_82_HEARTOFAZEROTH_LEARNESSENCE_ANIM = 131813,
+ UI_82_HEARTOFAZEROTH_LEARNESSENCE_ANIM_RANK4 = 137377,
+ UI_82_HEARTOFAZEROTH_WINDOW_OPEN = 131805,
+ UI_82_HEARTOFAZEROTH_WINDOW_CLOSE = 131806,
+ UI_82_HEARTOFAZEROTH_WINDOW_LOOP = 131796,
+ UI_82_HEARTOFAZEROTH_SELECTESSENCE = 131808,
+ UI_82_HEARTOFAZEROTH_SLOTESSENCE = 131809,
+ UI_82_HEARTOFAZEROTH_SLOTFIRSTESSENCE = 137388,
+ UI_82_HEARTOFAZEROTH_NODESREVEAL = 137389,
+ UI_82_HEARTOFAZEROTH_UNLOCKESSENCESLOT = 137378,
+ UI_82_HEARTOFAZEROTH_UNLOCKSTAMINANODE = 137379,
};
SOUNDKIT_ALLOW_DUPLICATES = false;
\ No newline at end of file
diff --git a/Interface/SharedXML/Util.lua b/Interface/SharedXML/Util.lua
index ac7ae69e5e3743b36ea204254097029e7eb38b96..9da22b5df81586304d54491343e1e1ae5bfba45e 100644
--- a/Interface/SharedXML/Util.lua
+++ b/Interface/SharedXML/Util.lua
@@ -27,6 +27,17 @@ function GetTextureInfo(obj)
end
end
+function CalculateDistanceBetweenRegions(regionA, regionB)
+ local ax, ay = regionA:GetCenter();
+ local bx, by = regionB:GetCenter();
+ if ax and bx then
+ local dx, dy = bx - ax, by - ay;
+ return math.sqrt(dx * dx + dy * dy);
+ else
+ return 0;
+ end
+end
+
CLASS_ICON_TCOORDS = {
["WARRIOR"] = {0, 0.25, 0, 0.25},
["MAGE"] = {0.25, 0.49609375, 0, 0.25},
diff --git a/Interface/SharedXML/VideoOptionsPanels.xml b/Interface/SharedXML/VideoOptionsPanels.xml
index 59672684782cef6418fcd945c2e6d6d2aa91c889..8a8f76ae08e4901f77b3a36d13910848f2e5ed94 100644
--- a/Interface/SharedXML/VideoOptionsPanels.xml
+++ b/Interface/SharedXML/VideoOptionsPanels.xml
@@ -589,24 +589,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -952,24 +937,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+