Improvements for the Ask to Erase Data and more development on End of M+ panel

This commit is contained in:
Tercio Jose
2024-02-18 19:52:02 -03:00
parent cd8266fff6
commit 2ca4c011c0
10 changed files with 683 additions and 179 deletions
+394 -114
View File
@@ -19,59 +19,151 @@ local Loc = _G.LibStub("AceLocale-3.0"):GetLocale("Details")
local mythicDungeonCharts = Details222.MythicPlus.Charts.Listener
local mythicDungeonFrames = Details222.MythicPlus.Frames
local CONST_DEBUG_MODE = false
--debug
_G.MythicDungeonFrames = mythicDungeonFrames
--/run _G.MythicDungeonFrames.ShowEndOfMythicPlusPanel(true)
---@class animatedtexture : texture, df_frameshake
---@field CreateRandomBounceSettings function
---@field BounceFrameShake df_frameshake
---@class playerbanner : frame
---@field FadeInAnimation animationgroup
---@field BackgroundBannerTextureScaleAnimation animationgroup
---@field BackgroundBannerFlashTextureColorAnimation animationgroup
---@field BounceFrameShake df_frameshake
---@field LevelUpFrame frame
---@field LevelUpTextFrame frame
---@field LevelFontString fontstring
---@field DungeonTexture texture
---@field DungeonBorderTexture texture
---@field FlashTexture texture
---@field LootSquare frame
---@field LootIcon texture
---@field LootIconBorder texture
---@field LootItemLevel fontstring
---@field unitId string
---@field unitName string
---@field PlayerNameFontString fontstring
---@field BackgroundBannerTexture animatedtexture
---@field BackgroundBannerFlashTexture animatedtexture
---@field RoleIcon texture
---@field Portrait texture
---@field Border texture
---@field Name fontstring
---@field AnimIn animationgroup
---@field AnimOut animationgroup
local createPlayerBanner = function(parent, name)
local template = "ChallengeModeBannerPartyMemberTemplate"
local playerFrame = CreateFrame("frame", name, parent, template)
playerFrame:SetAlpha(1)
playerFrame:EnableMouse(true)
playerFrame:SetFrameLevel(parent:GetFrameLevel()+2)
local playerNameFontString = playerFrame:CreateFontString("$parentPlayerNameText", "overlay", "GameFontNormal")
---@type playerbanner
local playerBanner = CreateFrame("frame", name, parent, template)
playerBanner:SetAlpha(1)
playerBanner:EnableMouse(true)
playerBanner:SetFrameLevel(parent:GetFrameLevel()+2)
--make an fade in animation
local fadeInAnimation = detailsFramework:CreateAnimationHub(playerBanner, function() playerBanner:Show() end, function() playerBanner:SetAlpha(1) end)
detailsFramework:CreateAnimation(fadeInAnimation, "Alpha", 1, 0.1, 0, 1)
playerBanner.FadeInAnimation = fadeInAnimation
--there's already a role icon on .RoleIcon, created from the template
local playerNameFontString = playerBanner:CreateFontString("$parentPlayerNameText", "overlay", "GameFontNormal")
playerNameFontString:SetTextColor(1, 1, 1)
playerNameFontString:SetPoint("top", playerFrame, "bottom", -1, -7)
playerNameFontString:SetPoint("top", playerBanner, "bottom", -1, -7)
DetailsFramework:SetFontSize(playerNameFontString, 12)
playerFrame.PlayerNameFontString = playerNameFontString
playerBanner.PlayerNameFontString = playerNameFontString
local playerNameBackgroundTexture = playerFrame:CreateTexture("$parentPlayerNameBackgroundTexture", "overlay", nil, 6)
local playerNameBackgroundTexture = playerBanner:CreateTexture("$parentPlayerNameBackgroundTexture", "overlay", nil, 6)
playerNameBackgroundTexture:SetTexture([[Interface\Cooldown\LoC-ShadowBG]])
playerNameBackgroundTexture:SetSize(68, 12)
playerNameBackgroundTexture:SetPoint("center", playerNameFontString, "center", 0, 0)
local backgroundBannerTexture = playerFrame:CreateTexture("$parentBannerTexture", "background", nil, 0)
backgroundBannerTexture:SetTexture([[Interface\ACHIEVEMENTFRAME\GuildTabard]])
backgroundBannerTexture:SetDrawLayer("background", 0)
backgroundBannerTexture:SetSize(63, 129)
backgroundBannerTexture:SetTexCoord(5/128, 68/128, 123/256, 252/256)
backgroundBannerTexture:SetPoint("topleft", playerFrame, "bottomleft", -5, playerFrame:GetHeight()/2)
backgroundBannerTexture:SetPoint("topright", playerFrame, "bottomright", 4, playerFrame:GetHeight()/2)
backgroundBannerTexture:SetVertexColor(.1, .1, .1)
playerFrame.BackgroundBannerTexture = backgroundBannerTexture
local createPlayerBannerBackgroundTexture = function(playerBanner, color, drawLevel)
local backgroundBannerTexture = playerBanner:CreateTexture("$parentBannerTexture", "background", nil, 0)
---@cast backgroundBannerTexture animatedtexture
backgroundBannerTexture:SetTexture([[Interface\ACHIEVEMENTFRAME\GuildTabard]])
backgroundBannerTexture:SetDrawLayer("background", drawLevel or 0)
backgroundBannerTexture:SetSize(63, 129)
backgroundBannerTexture:SetTexCoord(5/128, 68/128, 123/256, 252/256)
backgroundBannerTexture:SetPoint("topleft", playerBanner, "bottomleft", -5, playerBanner:GetHeight()/2)
backgroundBannerTexture:SetPoint("topright", playerBanner, "bottomright", 4, playerBanner:GetHeight()/2)
local r, g, b = detailsFramework:ParseColors(color or "dark1")
backgroundBannerTexture:SetVertexColor(r, g, b)
return backgroundBannerTexture
end
local backgroundBannerBorderTexture = playerFrame:CreateTexture("$parentBannerBorderTexture", "highlight", nil, -1)
do
playerBanner.BackgroundBannerFlashTexture = createPlayerBannerBackgroundTexture(playerBanner, "white", -1)
--create a color animation for playerBanner.BackgroundBannerFlashTexture, the color start as white and goes to dark1
--the start delay for this animation is 0.2
local backgroundBannerFlashTextureColorAnimation = detailsFramework:CreateAnimationHub(playerBanner.BackgroundBannerFlashTexture, function() end, function() playerBanner.BackgroundBannerFlashTexture:SetVertexColor(0.1, 0.1, 0.1) end)
local colorAnim = detailsFramework:CreateAnimation(backgroundBannerFlashTextureColorAnimation, "VertexColor", 1, 0.2, "white", "dark1")
colorAnim:SetStartDelay(0.175)
playerBanner.BackgroundBannerFlashTextureColorAnimation = backgroundBannerFlashTextureColorAnimation
end
do
playerBanner.BackgroundBannerTexture = createPlayerBannerBackgroundTexture(playerBanner)
function playerBanner.BackgroundBannerTexture:CreateRandomBounceSettings()
local duration = RandomFloatInRange(0.78, 0.82)
local amplitude = RandomFloatInRange(4.50, 5.5)
local frequency = RandomFloatInRange(19.8, 20.8)
local absoluteSineX = false
local absoluteSineY = true
local scaleX = 0
local scaleY = RandomFloatInRange(0.90, 1.1)
local fadeInTime = 0
local fadeOutTime = RandomFloatInRange(0.7, 0.8)
return duration, amplitude, frequency, absoluteSineX, absoluteSineY, scaleX, scaleY, fadeInTime, fadeOutTime
end
local lossOfMomentum = 0.75
local duration = 0.8
local amplitude = 5
local frequency = 20
local absoluteSineX = false
local absoluteSineY = true
local scaleX = 0
local scaleY = 1
local fadeInTime = 0
local fadeOutTime = lossOfMomentum
local backgroundBannerTextureFS2 = detailsFramework:CreateFrameShake(playerBanner.BackgroundBannerTexture, duration, amplitude, frequency, absoluteSineX, absoluteSineY, scaleX, scaleY, fadeInTime, fadeOutTime)
playerBanner.BackgroundBannerTexture.BounceFrameShake = backgroundBannerTextureFS2
--scale animation for backgroundBannerTexture, which starts at 1 x 0 y and goes to 1 x 1 y, anchor top
local backgroundBannerTextureScaleAnimation = detailsFramework:CreateAnimationHub(playerBanner.BackgroundBannerTexture, function() end, function() playerBanner.BackgroundBannerTexture:SetSize(63, 129) end)
detailsFramework:CreateAnimation(backgroundBannerTextureScaleAnimation, "Scale", 1, 0.25, 1, 0, 1, 1, "top", 0, 0)
playerBanner.BackgroundBannerTextureScaleAnimation = backgroundBannerTextureScaleAnimation
end
local backgroundBannerBorderTexture = playerBanner:CreateTexture("$parentBannerBorderTexture", "highlight", nil, -1)
backgroundBannerBorderTexture:SetAtlas("UI-Achievement-Guild-Flag-Outline")
backgroundBannerBorderTexture:SetSize(63, 129)
backgroundBannerBorderTexture:SetPoint("topleft", playerFrame, "bottomleft", -5, playerFrame:GetHeight()/2)
backgroundBannerBorderTexture:SetPoint("topright", playerFrame, "bottomright", 4, playerFrame:GetHeight()/2)
backgroundBannerBorderTexture:SetPoint("topleft", playerBanner, "bottomleft", -5, playerBanner:GetHeight()/2)
backgroundBannerBorderTexture:SetPoint("topright", playerBanner, "bottomright", 4, playerBanner:GetHeight()/2)
local dungeonTexture = playerFrame:CreateTexture("$parentDungeonTexture", "artwork")
local dungeonTexture = playerBanner:CreateTexture("$parentDungeonTexture", "artwork")
dungeonTexture:SetTexCoord(25/512, 360/512, 50/512, 290/512)
dungeonTexture:SetSize(50, 39)
dungeonTexture:SetPoint("top", playerFrame,"bottom", 0, -16)
dungeonTexture:SetPoint("top", playerBanner,"bottom", 0, -16)
dungeonTexture:SetAlpha(0.9934)
playerFrame.DungeonTexture = dungeonTexture
playerBanner.DungeonTexture = dungeonTexture
local dungeonBorderTexture = playerFrame:CreateTexture("$parentDungeonBorder", "border")
local dungeonBorderTexture = playerBanner:CreateTexture("$parentDungeonBorder", "border")
dungeonBorderTexture:SetTexture([[Interface\BUTTONS\UI-EmptySlot]])
dungeonBorderTexture:SetDrawLayer("border", 0)
dungeonBorderTexture:ClearAllPoints()
dungeonBorderTexture:SetPoint("topleft", dungeonTexture,"topleft", -17, 15)
dungeonBorderTexture:SetPoint("bottomright", dungeonTexture,"bottomright", 18, -15)
dungeonBorderTexture:SetAlpha(1)
playerFrame.DungeonBorderTexture = dungeonBorderTexture
playerBanner.DungeonBorderTexture = dungeonBorderTexture
--load this addon, required to have access to the garrison templates
if (not C_AddOns.IsAddOnLoaded("Blizzard_GarrisonTemplates")) then
@@ -79,18 +171,18 @@ local createPlayerBanner = function(parent, name)
end
--animation for the key leveling up
local levelUpFrame = CreateFrame("frame", "$LevelUpFrame", playerFrame, "GarrisonFollowerLevelUpTemplate")
local levelUpFrame = CreateFrame("frame", "$LevelUpFrame", playerBanner, "GarrisonFollowerLevelUpTemplate")
levelUpFrame:SetPoint("top", dungeonTexture, "bottom", 0, 44)
levelUpFrame:SetScale(0.9)
levelUpFrame.Text:SetText("")
playerFrame.LevelUpFrame = levelUpFrame
levelUpFrame:SetFrameLevel(playerFrame:GetFrameLevel()+1)
playerBanner.LevelUpFrame = levelUpFrame
levelUpFrame:SetFrameLevel(playerBanner:GetFrameLevel()+1)
local levelUpTextFrame = CreateFrame("frame", "$LevelUpTextFrame", playerFrame)
local levelUpTextFrame = CreateFrame("frame", "$LevelUpTextFrame", playerBanner)
levelUpTextFrame:SetPoint("top", dungeonTexture, "bottom", -1, -14)
levelUpTextFrame:SetFrameLevel(playerFrame:GetFrameLevel()+2)
levelUpTextFrame:SetFrameLevel(playerBanner:GetFrameLevel()+2)
levelUpTextFrame:SetSize(1, 1)
playerFrame.LevelUpTextFrame = levelUpTextFrame
playerBanner.LevelUpTextFrame = levelUpTextFrame
--scaleX, scaleY, fadeInTime, fadeOutTime
local shakeAnimation = detailsFramework:CreateFrameShake(levelUpTextFrame, 0.8, 2, 200, false, false, 0, 1, 0.5, 0.15)
local shakeAnimation2 = detailsFramework:CreateFrameShake(levelUpTextFrame, 0.5, 1, 200, false, false, 0, 1, 0, 0)
@@ -100,7 +192,7 @@ local createPlayerBanner = function(parent, name)
levelFontString:SetPoint("center", levelUpTextFrame, "center", 0, 0)
DetailsFramework:SetFontSize(levelFontString, 20)
levelFontString:SetText("")
playerFrame.LevelFontString = levelFontString
playerBanner.LevelFontString = levelFontString
--> animations for levelFontString
local animationGroup = levelFontString:CreateAnimationGroup("DetailsMythicLevelTextAnimationGroup")
@@ -152,9 +244,9 @@ local createPlayerBanner = function(parent, name)
levelUpTextFrame:PlayFrameShake(shakeAnimation)
C_Timer.After(0.7, function()
playerFrame.LevelUpFrame:Show()
playerFrame.LevelUpFrame:SetAlpha(1)
playerFrame.LevelUpFrame.Anim:Play()
playerBanner.LevelUpFrame:Show()
playerBanner.LevelUpFrame:SetAlpha(1)
playerBanner.LevelUpFrame.Anim:Play()
animationGroup:Play()
end)
@@ -167,22 +259,22 @@ local createPlayerBanner = function(parent, name)
end)
end
local flashTexture = playerFrame:CreateTexture("$parentFlashTexture", "overlay", nil, 6)
local flashTexture = playerBanner:CreateTexture("$parentFlashTexture", "overlay", nil, 6)
flashTexture:SetAtlas("UI-Achievement-Guild-Flag-Outline")
flashTexture:SetSize(63, 129)
flashTexture:SetPoint("topleft", playerFrame, "bottomleft", -5, playerFrame:GetHeight()/2)
flashTexture:SetPoint("topright", playerFrame, "bottomright", 4, playerFrame:GetHeight()/2)
flashTexture:SetPoint("topleft", playerBanner, "bottomleft", -5, playerBanner:GetHeight()/2)
flashTexture:SetPoint("topright", playerBanner, "bottomright", 4, playerBanner:GetHeight()/2)
flashTexture:Hide()
playerFrame.flashTexture = flashTexture
playerBanner.FlashTexture = flashTexture
detailsFramework:CreateFlashAnimation(flashTexture)
--flashTexture:Flash(0.1, 0.5, 0.01)
local lootSquare = CreateFrame("frame", name, parent)
lootSquare:SetSize(46, 46)
lootSquare:SetPoint("top", playerFrame, "bottom", 0, -90)
lootSquare:SetPoint("top", playerBanner, "bottom", 0, -90)
lootSquare:SetFrameLevel(parent:GetFrameLevel()+1)
playerFrame.LootSquare = lootSquare
playerBanner.LootSquare = lootSquare
lootSquare:Hide()
lootSquare:SetScript("OnEnter", function(self)
@@ -216,21 +308,36 @@ local createPlayerBanner = function(parent, name)
DetailsFramework:SetFontSize(lootItemLevel, 12)
lootSquare.LootItemLevel = lootItemLevel
return playerFrame
return playerBanner
end
local updatPlayerBanner = function(unitId, bannerIndex)
if (CONST_DEBUG_MODE) then
--print("updating player banner for unit:", unitId, "bannerIndex:", bannerIndex)
if (not UnitExists(unitId)) then
unitId = "player"
end
end
if (UnitExists(unitId)) then
local readyFrame = DetailsMythicDungeonReadyFrame
local unitName = Details:GetFullName(unitId)
local libOpenRaid = LibStub("LibOpenRaid-1.0", true)
---@type playerbanner
local playerBanner = readyFrame.PlayerBanners[bannerIndex]
readyFrame.playerCacheByName[unitName] = playerBanner
playerBanner.unitId = unitId
playerBanner.unitName = unitName
playerBanner:Show()
playerBanner.FadeInAnimation:Play()
playerBanner.BackgroundBannerTextureScaleAnimation:Play()
playerBanner.BackgroundBannerFlashTextureColorAnimation:Play()
playerBanner.BackgroundBannerTexture:SetFrameShakeSettings(playerBanner.BackgroundBannerTexture.BounceFrameShake, playerBanner.BackgroundBannerTexture:CreateRandomBounceSettings())
playerBanner.BackgroundBannerTexture:PlayFrameShake(playerBanner.BackgroundBannerTexture.BounceFrameShake)
SetPortraitTexture(playerBanner.Portrait, unitId)
unitName = detailsFramework:RemoveRealmName(unitName)
@@ -305,9 +412,9 @@ local updateKeysStoneLevel = function()
end
--this character had its keystone upgraded
--unitBanner.flashTexture:Flash()
--unitBanner.FlashTexture:Flash()
--print("keystone upgraded for", Details:GetFullName(unitId), unitKeystoneInfo.level, "old was:", oldKeystoneLevel)
--C_Timer.After(0.1, function() unitBanner.flashTexture:Stop() end)
--C_Timer.After(0.1, function() unitBanner.FlashTexture:Stop() end)
end
end
@@ -325,43 +432,31 @@ end
-- /run _G.DetailsMythicDungeonChartHandler.ShowChart(); DetailsMythicDungeonChartFrame.ShowChartFrame()
-- /run _G.DetailsMythicDungeonChartHandler.ShowEndOfMythicPlusPanel()
if (CONST_DEBUG_MODE) then
C_Timer.After(3, function()
C_AddOns.LoadAddOn("Blizzard_ChallengesUI");
_G.MythicDungeonFrames.ShowEndOfMythicPlusPanel()
end)
end
--show a small panel telling the chart is ready to show
function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
function mythicDungeonFrames.ShowEndOfMythicPlusPanel()
--check if is enabled
if (not Details.mythic_plus.show_damage_graphic) then
return
end
if (bIsDebug) then
if (CONST_DEBUG_MODE) then
Details222.MythicPlus.Level = Details222.MythicPlus.Level or 2
end
--create the panel
--create the panel if it doesn't exist
if (not mythicDungeonFrames.ReadyFrame) then
mythicDungeonFrames.ReadyFrame = CreateFrame("frame", "DetailsMythicDungeonReadyFrame", UIParent, "BackdropTemplate")
local readyFrame = mythicDungeonFrames.ReadyFrame
readyFrame.playerCacheByName = {}
local textColor = {1, 0.8196, 0, 1}
local textSize = 11
local roundedCornerTemplate = {
roundness = 6,
color = {.1, .1, .1, 0.98},
border_color = {.05, .05, .05, 0.834},
}
detailsFramework:AddRoundedCornersToFrame(readyFrame, roundedCornerTemplate)
local titleLabel = DetailsFramework:CreateLabel(readyFrame, "Details! Mythic Run Completed!", 12, "yellow")
titleLabel:SetPoint("top", readyFrame, "top", 0, -7)
titleLabel.textcolor = textColor
local closeButton = detailsFramework:CreateCloseButton(readyFrame, "$parentCloseButton")
closeButton:SetPoint("topright", readyFrame, "topright", -2, -2)
closeButton:SetScale(1.4)
closeButton:SetAlpha(0.823)
mythicDungeonFrames.ReadyFrame = CreateFrame("frame", "DetailsMythicDungeonReadyFrame", UIParent, "BackdropTemplate")
local readyFrame = mythicDungeonFrames.ReadyFrame
readyFrame:SetSize(355, 390)
readyFrame:SetPoint("center", UIParent, "center", 350, 0)
readyFrame:SetFrameStrata("LOW")
@@ -369,21 +464,164 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
readyFrame:SetMovable(true)
readyFrame:Hide()
--register to libwindow
local LibWindow = LibStub("LibWindow-1.1")
LibWindow.RegisterConfig(readyFrame, Details.mythic_plus.finished_run_frame)
LibWindow.RestorePosition(readyFrame)
LibWindow.MakeDraggable(readyFrame)
LibWindow.SavePosition(readyFrame)
---@type playerbanner[]
readyFrame.playerCacheByName = {}
do
--register to libwindow
local LibWindow = LibStub("LibWindow-1.1")
LibWindow.RegisterConfig(readyFrame, Details.mythic_plus.finished_run_frame)
LibWindow.RestorePosition(readyFrame)
LibWindow.MakeDraggable(readyFrame)
LibWindow.SavePosition(readyFrame)
--set to use rounded corner
local roundedCornerTemplate = {
roundness = 6,
color = {.1, .1, .1, 0.98},
border_color = {.05, .05, .05, 0.834},
}
detailsFramework:AddRoundedCornersToFrame(readyFrame, roundedCornerTemplate)
end
readyFrame.entryAnimationDuration = 0.1
local openingAnimationHub = detailsFramework:CreateAnimationHub(readyFrame, function() end, function() readyFrame:SetWidth(355); end)
detailsFramework:CreateAnimation(openingAnimationHub, "Scale", 1, readyFrame.entryAnimationDuration, 0, 1, 1, 1, "center", 0, 0)
readyFrame.OpeningAnimation = openingAnimationHub
do --backdrop textures
--backdrop gradient from bottom to top
---@type df_gradienttable
local gradientTable = {gradient = "vertical", fromColor = {0, 0, 0, 0.15}, toColor = "transparent"}
local gradientBelowTheLine = detailsFramework:CreateTexture(readyFrame, gradientTable, 1, readyFrame:GetHeight(), "artwork", {0, 1, 0, 1}, "backgroundGradient")
gradientBelowTheLine:SetPoint("bottoms")
local dungeonBackdropTexture = readyFrame:CreateTexture("$parentDungeonBackdropTexture", "artwork", nil, -2)
dungeonBackdropTexture:SetTexCoord(0.05, 0.70, 0.1, 0.82)
dungeonBackdropTexture:SetVertexColor(0.2, 0.2, 0.2, 0.8)
dungeonBackdropTexture:SetDesaturation(0.65)
dungeonBackdropTexture:SetAlpha(0.6)
dungeonBackdropTexture:SetPoint("topleft", readyFrame, "topleft", 0, 0)
dungeonBackdropTexture:SetPoint("topright", readyFrame, "topright", 0, 0)
dungeonBackdropTexture:SetPoint("bottomleft", readyFrame, "bottomleft", 0, 0)
dungeonBackdropTexture:SetPoint("bottomright", readyFrame, "bottomright", 0, 0)
readyFrame.DungeonBackdropTexture = dungeonBackdropTexture
local maskTexture = readyFrame:CreateMaskTexture("$parentDungeonBackdropTextureMaskTexture", "artwork")
maskTexture:SetAtlas("UI-Frame-IconMask")
local offset = 26
maskTexture:SetPoint("topleft", readyFrame, "topleft", -offset, offset)
maskTexture:SetPoint("bottomright", readyFrame, "bottomright", offset, -offset)
dungeonBackdropTexture:AddMaskTexture(maskTexture)
end
--frame to place all texture that goes behind the readyFrame
local backgroundFrame = CreateFrame("frame", "DetailsMythicDungeonBackgroundFrame", readyFrame)
backgroundFrame:SetAllPoints()
backgroundFrame:SetFrameLevel(readyFrame:GetFrameLevel()-1)
readyFrame.BackgroundFrame = backgroundFrame
--frame to place all texture that goes in front of the readyFrame, doing this, we call fade in this frame making all texts gently show up
local contentFrame = CreateFrame("frame", "$parentContentFrame", readyFrame)
readyFrame.ContentFrame = contentFrame
--animation to fade in the content frame
local contentFrameFadeInAnimation = detailsFramework:CreateAnimationHub(contentFrame, function() contentFrame:Show() end, function() contentFrame:SetAlpha(1) end)
detailsFramework:CreateAnimation(contentFrameFadeInAnimation, "Alpha", 1, 0.3, 0, 1)
readyFrame.ContentFrameFadeInAnimation = contentFrameFadeInAnimation
do
--use the same textures from the original end of dungeon panel
readyFrame.YellowSpikeCircle = contentFrame:CreateTexture("$parentSkullCircle", "overlay")
readyFrame.YellowSpikeCircle:SetSize(100, 100)
readyFrame.YellowSpikeCircle:SetPoint("center", readyFrame, "top", 0, 30)
readyFrame.YellowSpikeCircle:SetAtlas("ChallengeMode-SpikeyStar")
readyFrame.YellowSpikeCircle:SetAlpha(1)
readyFrame.YellowSpikeCircle:SetIgnoreParentAlpha(true)
--create the animation for the yellow spike circle
local MainAnimationGroup = readyFrame.YellowSpikeCircle:CreateAnimationGroup()
readyFrame.YellowSpikeCircle.scale1 = MainAnimationGroup:CreateAnimation("SCALE")
readyFrame.YellowSpikeCircle.scale1:SetOrder(1)
readyFrame.YellowSpikeCircle.scale1:SetDuration(0.3)
readyFrame.YellowSpikeCircle.scale1:SetScaleFrom(2, 2)
readyFrame.YellowSpikeCircle.scale1:SetScaleTo(1, 1)
readyFrame.YellowSpikeCircle.scale1:SetOrigin("center", 0, 0)
--bugged
readyFrame.YellowSpikeCircle.OnShowAnimation = MainAnimationGroup
--spinning animation for the yellow spike circle
--local yellowSpikeCircleSpinAnimationGroup = detailsFramework:CreateAnimationHub(readyFrame.YellowSpikeCircle, function()end, function()end)
--yellowSpikeCircleSpinAnimationGroup:SetLooping("REPEAT")
--local spikeRotationAnim = detailsFramework:CreateAnimation(yellowSpikeCircleSpinAnimationGroup, "Rotation", 1, 5, 1)
--spikeRotationAnim:SetSmoothing("IN_OUT") --"IN_OUT" "IN" "OUT" "NONE"
--spikeRotationAnim:SetSmoothProgress(50)
--readyFrame.YellowSpikeCircleSpinAnimation = yellowSpikeCircleSpinAnimationGroup
end
readyFrame.Level = contentFrame:CreateFontString("$parentLevelText", "overlay", "GameFontNormalWTF2Outline")
readyFrame.Level:SetPoint("center", readyFrame.YellowSpikeCircle, "center", 0, 0)
readyFrame.Level:SetText("")
readyFrame.leftFiligree = contentFrame:CreateTexture("$parentLeftFiligree", "artwork")
readyFrame.leftFiligree:SetAtlas("BossBanner-LeftFillagree")
readyFrame.leftFiligree:SetSize(72, 43)
readyFrame.leftFiligree:SetPoint("bottom", readyFrame, "top", -50, 2)
readyFrame.rightFiligree = contentFrame:CreateTexture("$parentRightFiligree", "artwork")
readyFrame.rightFiligree:SetAtlas("BossBanner-RightFillagree")
readyFrame.rightFiligree:SetSize(72, 43)
readyFrame.rightFiligree:SetPoint("bottom", readyFrame, "top", 50, 2)
--create the bottom filligree using BossBanner-BottomFillagree atlas
readyFrame.bottomFiligree = contentFrame:CreateTexture("$parentBottomFiligree", "artwork")
readyFrame.bottomFiligree:SetAtlas("BossBanner-BottomFillagree")
readyFrame.bottomFiligree:SetSize(66, 28)
readyFrame.bottomFiligree:SetPoint("bottom", readyFrame, "bottom", 0, -19)
local titleLabel = DetailsFramework:CreateLabel(contentFrame, "Details! Mythic Run Completed!", 12, "yellow")
titleLabel:SetPoint("top", readyFrame, "top", 0, -7)
titleLabel.textcolor = textColor
---@type df_closebutton
local closeButton = DetailsFramework:CreateCloseButton(contentFrame, "$parentCloseButton")
closeButton:SetPoint("topright", readyFrame, "topright", -2, -2)
closeButton:SetScale(1.4)
closeButton:SetAlpha(0.823)
closeButton:SetScript("OnClick", function(self)
readyFrame:Hide()
end)
--warning footer
local warningFooter = DetailsFramework:CreateLabel(contentFrame, "Under development.", 9, "yellow")
warningFooter:SetPoint("bottom", readyFrame, "bottom", 0, 20)
--waiting for loot label
local waitingForLootLabel = DetailsFramework:CreateLabel(readyFrame, "Waiting for loot", 12, "silver")
local waitingForLootLabel = DetailsFramework:CreateLabel(contentFrame, "Waiting for loot", 12, "silver")
waitingForLootLabel:SetPoint("bottom", readyFrame, "bottom", 0, 54)
waitingForLootLabel:Hide()
local waitingForLootDotsAnimationLabel = DetailsFramework:CreateLabel(readyFrame, "...", 12, "silver")
local waitingForLootDotsAnimationLabel = DetailsFramework:CreateLabel(contentFrame, "...", 12, "silver")
waitingForLootDotsAnimationLabel:SetPoint("left", waitingForLootLabel, "right", 0, 0)
waitingForLootDotsAnimationLabel:Hide()
local topRedLineTexture = backgroundFrame:CreateTexture("$parentBannerTop", "border")
topRedLineTexture:SetAtlas("BossBanner-BgBanner-Top")
topRedLineTexture:SetPoint("top", backgroundFrame, "top", 0, 155)
local topTextureAnimGroup = detailsFramework:CreateAnimationHub(topRedLineTexture, function()end, function() topRedLineTexture:SetWidth(480) end)
topRedLineTexture.Animation = topTextureAnimGroup
local animDuration = 0.3
detailsFramework:CreateAnimation(topTextureAnimGroup, "Scale", 1, animDuration, 0, 1, 1, 1, "center", 0, 0)
readyFrame.TopRedLineTexture = topRedLineTexture
local bottomRedLineTexture = backgroundFrame:CreateTexture("$parentBannerBottom", "border")
bottomRedLineTexture:SetAtlas("BossBanner-BgBanner-Bottom")
bottomRedLineTexture:SetPoint("bottom", backgroundFrame, "bottom", 0, -115)
local bottomTextureAnimGroup = detailsFramework:CreateAnimationHub(bottomRedLineTexture, function()end, function() bottomRedLineTexture:SetWidth(480) end)
bottomRedLineTexture.Animation = bottomTextureAnimGroup
detailsFramework:CreateAnimation(bottomTextureAnimGroup, "Scale", 1, animDuration, 0, 1, 0.5, 1, "center", 0, 0)
readyFrame.BottomRedLineTexture = bottomRedLineTexture
--make a text dot animation, which will show no dots at start and then "." then ".." then "..." and back to "" and so on
function readyFrame.StartTextDotAnimation()
--update the Waiting for Loot labels
@@ -425,10 +663,6 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
readyFrame.StopTextDotAnimation()
end)
--warning footer
local warningFooter = DetailsFramework:CreateLabel(readyFrame, "Under development.", 9, "yellow")
warningFooter:SetPoint("bottom", readyFrame, "bottom", 0, 20)
local roundedCornerPreset = {
color = {.075, .075, .075, 1},
border_color = {.2, .2, .2, 1},
@@ -442,7 +676,7 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
mPlus.ShowSummary()
end
---@type df_button
readyFrame.ShowBreakdownButton = DetailsFramework:CreateButton(readyFrame, showBreakdownFunc, 145, 30, "Show Breakdown")
readyFrame.ShowBreakdownButton = DetailsFramework:CreateButton(contentFrame, showBreakdownFunc, 145, 30, "Show Breakdown")
PixelUtil.SetPoint(readyFrame.ShowBreakdownButton, "topleft", readyFrame, "topleft", 5, -30)
PixelUtil.SetSize(readyFrame.ShowBreakdownButton, 145, 32)
readyFrame.ShowBreakdownButton:SetBackdrop(nil)
@@ -458,7 +692,7 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
readyFrame:Hide()
end
---@type df_button
readyFrame.ShowChartButton = DetailsFramework:CreateButton(readyFrame, showChartFunc, 145, 30, "Show Damage Graphic")
readyFrame.ShowChartButton = DetailsFramework:CreateButton(contentFrame, showChartFunc, 145, 30, "Show Damage Graphic")
PixelUtil.SetPoint(readyFrame.ShowChartButton, "left", readyFrame.ShowBreakdownButton, "right", 5, 0)
PixelUtil.SetSize(readyFrame.ShowChartButton, 145, 32)
readyFrame.ShowChartButton:SetBackdrop(nil)
@@ -466,29 +700,28 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
readyFrame.ShowChartButton.textcolor = textColor
detailsFramework:AddRoundedCornersToFrame(readyFrame.ShowChartButton.widget, roundedCornerPreset)
--disable feature check box (dont show this again)
local on_switch_enable = function(self, _, value)
Details.mythic_plus.show_damage_graphic = not value
end
local elapsedTimeLabel = DetailsFramework:CreateLabel(readyFrame, "Run Time:", textSize, textColor)
local elapsedTimeLabel = DetailsFramework:CreateLabel(contentFrame, "Run Time:", textSize, textColor)
elapsedTimeLabel:SetPoint("topleft", leftAnchor, "bottomleft", 0, -8)
local elapsedTimeAmount = DetailsFramework:CreateLabel(readyFrame, "00:00", textSize, textColor)
local elapsedTimeAmount = DetailsFramework:CreateLabel(contentFrame, "00:00", textSize, textColor)
elapsedTimeAmount:SetPoint("left", elapsedTimeLabel, "left", 130, 0)
local timeNotInCombatLabel = DetailsFramework:CreateLabel(readyFrame, "Time not in combat:", textSize, "orangered")
local timeNotInCombatLabel = DetailsFramework:CreateLabel(contentFrame, "Time not in combat:", textSize, "orangered")
timeNotInCombatLabel:SetPoint("topleft", elapsedTimeLabel, "bottomleft", 0, -5)
local timeNotInCombatAmount = DetailsFramework:CreateLabel(readyFrame, "00:00", textSize, "orangered")
local timeNotInCombatAmount = DetailsFramework:CreateLabel(contentFrame, "00:00", textSize, "orangered")
timeNotInCombatAmount:SetPoint("left", timeNotInCombatLabel, "left", 130, 0)
local youBeatTheTimerLabel = DetailsFramework:CreateLabel(readyFrame, "", textSize, "white")
local youBeatTheTimerLabel = DetailsFramework:CreateLabel(contentFrame, "", textSize, "white")
youBeatTheTimerLabel:SetPoint("topleft", timeNotInCombatLabel, "bottomleft", 0, -5)
--local keystoneUpgradeLabel = DetailsFramework:CreateLabel(readyFrame, "Keystone Upgrade:", textSize, "white")
--keystoneUpgradeLabel:SetPoint("topleft", youBeatTheTimerLabel, "bottomleft", 0, -5)
local rantingLabel = DetailsFramework:CreateLabel(readyFrame, "", textSize, textColor)
local rantingLabel = DetailsFramework:CreateLabel(contentFrame, "", textSize, textColor)
--rantingLabel:SetPoint("topleft", keystoneUpgradeLabel, "bottomleft", 0, -5)
rantingLabel:SetPoint("topleft", youBeatTheTimerLabel, "bottomleft", 0, -5)
@@ -580,7 +813,7 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
Details222.MythicPlus.BackgroundTexture = backgroundTexture
--]=]
local notAgainSwitch, notAgainLabel = DetailsFramework:CreateSwitch(readyFrame, on_switch_enable, not Details.mythic_plus.show_damage_graphic, _, _, _, _, _, _, _, _, _, Loc ["STRING_MINITUTORIAL_BOOKMARK4"], DetailsFramework:GetTemplate("switch", "OPTIONS_CHECKBOX_BRIGHT_TEMPLATE"), "GameFontHighlightLeft")
local notAgainSwitch, notAgainLabel = DetailsFramework:CreateSwitch(contentFrame, on_switch_enable, not Details.mythic_plus.show_damage_graphic, _, _, _, _, _, _, _, _, _, Loc ["STRING_MINITUTORIAL_BOOKMARK4"], DetailsFramework:GetTemplate("switch", "OPTIONS_CHECKBOX_BRIGHT_TEMPLATE"), "GameFontHighlightLeft")
notAgainSwitch:ClearAllPoints()
notAgainLabel:SetPoint("left", notAgainSwitch, "right", 2, 0)
notAgainSwitch:SetPoint("bottomleft", readyFrame, "bottomleft", 5, 5)
@@ -596,17 +829,67 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
end --end of creating of the readyFrame
--mythic+ finished, showing the readyFrame for the user
local readyFrame = mythicDungeonFrames.ReadyFrame
readyFrame:Show()
readyFrame.StartTextDotAnimation()
readyFrame.TopRedLineTexture:Hide()
readyFrame.BottomRedLineTexture:Hide()
readyFrame.ContentFrame:SetAlpha(0)
readyFrame.Level:SetText(Details222.MythicPlus.Level or "")
--hide the lootSquare
for i = 1, #readyFrame.PlayerBanners do
--hide the lootSquare
readyFrame.PlayerBanners[i].LootSquare:Hide()
end
for i = 1, #readyFrame.PlayerBanners do
readyFrame.PlayerBanners[i]:Hide()
end
C_Timer.After(0, function()
readyFrame.OpeningAnimation:Play()
end)
--readyFrame.YellowSpikeCircle:SetAlpha(1)
--readyFrame.YellowSpikeCircle.OnShowAnimation:Play()
C_Timer.After(readyFrame.entryAnimationDuration+0.05, function()
readyFrame.TopRedLineTexture:Show()
readyFrame.BottomRedLineTexture:Show()
readyFrame.TopRedLineTexture.Animation:Play()
readyFrame.BottomRedLineTexture.Animation:Play()
C_Timer.After(0.3, function()
readyFrame.ContentFrameFadeInAnimation:Play()
end)
end)
readyFrame.StartTextDotAnimation()
--local mapID = select(8, GetInstanceInfo())
local overallMythicDungeonCombat = Details:GetCurrentCombat()
--if the latest segment isn't the overall mythic dungeon segment, then find it
if (overallMythicDungeonCombat:GetCombatType() ~= DETAILS_SEGMENTTYPE_MYTHICDUNGEON_OVERALL) then
--get a table with all segments
local segments = Details:GetCombatSegments()
for i = 1, #segments do
local segment = segments[i]
if (segment:GetCombatType() == DETAILS_SEGMENTTYPE_MYTHICDUNGEON_OVERALL) then
overallMythicDungeonCombat = segment
break
end
end
end
if (not overallMythicDungeonCombat.is_mythic_dungeon) then
return
end
readyFrame.DungeonBackdropTexture:SetTexture(overallMythicDungeonCombat.is_mythic_dungeon.DungeonTexture)
wipe(readyFrame.playerCacheByName)
--update the run time and time not in combat
@@ -614,7 +897,6 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
readyFrame.ElapsedTimeAmountLabel.text = DetailsFramework:IntegerToTimer(elapsedTime)
C_Timer.After(1.5, function()
local overallMythicDungeonCombat = Details:GetCurrentCombat()
--print("overall combat type:", overallMythicDungeonCombat:GetCombatType(), overallMythicDungeonCombat:GetCombatType() == DETAILS_SEGMENTTYPE_MYTHICDUNGEON_OVERALL)
if (overallMythicDungeonCombat:GetCombatType() == DETAILS_SEGMENTTYPE_MYTHICDUNGEON_OVERALL) then
local combatTime = overallMythicDungeonCombat:GetCombatTime()
@@ -647,29 +929,27 @@ function mythicDungeonFrames.ShowEndOfMythicPlusPanel(bIsDebug)
readyFrame.RantingLabel.text = ""
end
for i = 1, #readyFrame.PlayerBanners do
readyFrame.PlayerBanners[i]:Hide()
end
local playersFound = 0
local playerBannerIndex = 1
do --update the player banner
if (updatPlayerBanner("player", playerBannerIndex)) then
playersFound = playersFound + 1
C_Timer.After(0.6, function()
local playersFound = 0
local playerBannerIndex = 1
do --update the player banner
C_Timer.After(RandomFloatInRange(0.1, 0.15), function()
if (updatPlayerBanner("player", playerBannerIndex)) then
playersFound = playersFound + 1
end
end)
end
end
local unitCount = 1
for bannerIndex = 2, #readyFrame.PlayerBanners do
if (updatPlayerBanner("party"..unitCount, bannerIndex)) then
playersFound = playersFound + 1
local unitCount = 1
for bannerIndex = 2, #readyFrame.PlayerBanners do
C_Timer.After(RandomFloatInRange(bannerIndex/5-0.075, bannerIndex/5+0.075), function()
if (updatPlayerBanner("party"..unitCount, bannerIndex)) then
playersFound = playersFound + 1
end
unitCount = unitCount + 1
end)
end
unitCount = unitCount + 1
end
for i = playersFound+1, #readyFrame.PlayerBanners do
readyFrame.PlayerBanners[i]:Hide()
end
end)
C_Timer.After(2.5, updateKeysStoneLevel)
end