Round of fixes of the new breakdown
This commit is contained in:
+1
-1
@@ -51,6 +51,7 @@
|
||||
---@class point : string @string(topleft, topright, bottomleft, bottomright, top, bottom, left, right, center) is a string that represents a point on a frame. Points are used to position frames relative to each other.
|
||||
|
||||
---@class uiobject
|
||||
---@field GetObjectType fun(self: uiobject) : string
|
||||
---@field Show fun(self: uiobject) make the object be shown on the user screen
|
||||
---@field Hide fun(self: uiobject) make the object be hidden from the user screen
|
||||
---@field SetShown fun(self: uiobject, state: boolean) show or hide the object
|
||||
@@ -142,7 +143,6 @@
|
||||
---@field GetNumPoints fun(self: frame) : number
|
||||
---@field GetNumRegions fun(self: frame) : number
|
||||
---@field GetName fun(self: frame) : string
|
||||
---@field GetObjectType fun(self: frame) : string
|
||||
---@field GetChildren fun(self: frame) : frame[]
|
||||
---@field GetRegions fun(self: frame) : region[]
|
||||
---@field CreateTexture fun(self: frame, name: string|nil, layer: "background"|"border"|"artwork"|"overlay"|"highlight", inherits: string|nil, subLayer: number|nil) : texture
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
|
||||
|
||||
local dversion = 423
|
||||
local dversion = 424
|
||||
local major, minor = "DetailsFramework-1.0", dversion
|
||||
local DF, oldminor = LibStub:NewLibrary(major, minor)
|
||||
|
||||
|
||||
+14
-5
@@ -93,8 +93,9 @@ detailsFramework.HeaderFunctions = {
|
||||
---@cast self df_headerchild
|
||||
|
||||
for i = 1, #self.FramesToAlign do
|
||||
local frame = self.FramesToAlign[i]
|
||||
frame:ClearAllPoints()
|
||||
---@type uiobject
|
||||
local uiObject = self.FramesToAlign[i]
|
||||
uiObject:ClearAllPoints()
|
||||
|
||||
---@type df_headercolumnframe
|
||||
local columnHeader = columnHeaderFrames[i]
|
||||
@@ -103,12 +104,20 @@ detailsFramework.HeaderFunctions = {
|
||||
|
||||
if (columnHeader.columnAlign == "right") then
|
||||
offset = columnHeader:GetWidth()
|
||||
if (frame:GetObjectType() == "FontString") then
|
||||
frame:SetJustifyH("right")
|
||||
end
|
||||
|
||||
if (uiObject:GetObjectType() == "FontString") then
|
||||
---@cast uiObject fontstring
|
||||
if (columnHeader.columnAlign == "right") then
|
||||
uiObject:SetJustifyH("right")
|
||||
elseif (columnHeader.columnAlign == "left") then
|
||||
uiObject:SetJustifyH("left")
|
||||
elseif (columnHeader.columnAlign == "center") then
|
||||
uiObject:SetJustifyH("center")
|
||||
end
|
||||
end
|
||||
|
||||
frame:SetPoint(columnHeader.columnAlign, self, anchor, columnHeader.XPosition + columnHeader.columnOffset + offset, 0)
|
||||
uiObject:SetPoint(columnHeader.columnAlign, self, anchor, columnHeader.XPosition + columnHeader.columnOffset + offset, 0)
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -1104,7 +1104,7 @@ end
|
||||
thisLine.icone_classe:SetTexture(spellIcon)
|
||||
thisLine.icone_classe:SetTexCoord(0.078125, 0.921875, 0.078125, 0.921875)
|
||||
thisLine.icone_classe:SetVertexColor(1, 1, 1)
|
||||
if(thisLine.mouse_over and not instancia.baseframe.isMoving) then
|
||||
if(thisLine.mouse_over and not instance.baseframe.isMoving) then
|
||||
local classIcon = thisLine:GetClassIcon()
|
||||
thisLine.iconHighlight:SetTexture(classIcon:GetTexture())
|
||||
thisLine.iconHighlight:SetTexCoord(classIcon:GetTexCoord())
|
||||
|
||||
@@ -28,6 +28,11 @@ local spellTable_FieldsToSum = {
|
||||
["absorbed"] = true,
|
||||
["overheal"] = true,
|
||||
["totaldenied"] = true,
|
||||
["e_amt"] = true,
|
||||
["e_dmg"] = true,
|
||||
["e_heal"] = true,
|
||||
["e_lvl"] = true,
|
||||
["e_total"] = true,
|
||||
}
|
||||
|
||||
---@class spelltablemixin
|
||||
@@ -90,16 +95,21 @@ Details.SpellTableMixin = {
|
||||
local spellTable = spellTables[i]
|
||||
if (spellTable) then
|
||||
for key, value in pairs(spellTable) do
|
||||
---@cast key string
|
||||
---@cast value number
|
||||
if (spellTable_FieldsToSum[key]) then
|
||||
targetTable[key] = (targetTable[key] or 0) + value
|
||||
--evoker empowerment levels
|
||||
if (key == "e_lvl" or key == "e_heal" or key == "e_dmg") then
|
||||
targetTable[key] = targetTable[key] or {}
|
||||
for level, amount in pairs(value) do
|
||||
targetTable[key][level] = (targetTable[key][level] or 0) + amount
|
||||
end
|
||||
else
|
||||
targetTable[key] = (targetTable[key] or 0) + value
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
}
|
||||
|
||||
--detailsFramework:Mixin(Details, Details.SpellTableMixin)
|
||||
@@ -94,6 +94,7 @@ function Details:OpenBreakdownWindow(instanceObject, actorObject, bFromAttribute
|
||||
|
||||
--create the player list frame in the left side of the window
|
||||
Details.PlayerBreakdown.CreatePlayerListFrame()
|
||||
Details.PlayerBreakdown.CreateDumpDataFrame()
|
||||
|
||||
if (not Details.row_singleclick_overwrite[mainAttribute] or not Details.row_singleclick_overwrite[mainAttribute][subAttribute]) then
|
||||
Details:CloseBreakdownWindow()
|
||||
@@ -337,6 +338,25 @@ function Details:CloseBreakdownWindow()
|
||||
end
|
||||
end
|
||||
|
||||
function Details.PlayerBreakdown.CreateDumpDataFrame()
|
||||
breakdownWindow.dumpDataFrame = CreateFrame("frame", "$parentDumpTableFrame", DetailsBreakdownWindowPlayerScrollBox, "BackdropTemplate")
|
||||
breakdownWindow.dumpDataFrame:SetPoint("topleft", DetailsBreakdownWindowPlayerScrollBox, "topleft", 0, 0)
|
||||
breakdownWindow.dumpDataFrame:SetPoint("bottomright", DetailsBreakdownWindowPlayerScrollBox, "bottomright", 0, 0)
|
||||
breakdownWindow.dumpDataFrame:SetFrameLevel(DetailsBreakdownWindowPlayerScrollBox:GetFrameLevel() + 10)
|
||||
detailsFramework:ApplyStandardBackdrop(breakdownWindow.dumpDataFrame, true)
|
||||
breakdownWindow.dumpDataFrame:Hide()
|
||||
|
||||
--create a details framework special lua editor
|
||||
breakdownWindow.dumpDataFrame.luaEditor = detailsFramework:NewSpecialLuaEditorEntry(breakdownWindow.dumpDataFrame, 1, 1, "text", "$parentCodeEditorWindow")
|
||||
breakdownWindow.dumpDataFrame.luaEditor:SetPoint("topleft", breakdownWindow.dumpDataFrame, "topleft", 2, -2)
|
||||
breakdownWindow.dumpDataFrame.luaEditor:SetPoint("bottomright", breakdownWindow.dumpDataFrame, "bottomright", -2, 2)
|
||||
breakdownWindow.dumpDataFrame.luaEditor:SetFrameLevel(breakdownWindow.dumpDataFrame:GetFrameLevel()+1)
|
||||
breakdownWindow.dumpDataFrame.luaEditor:SetBackdrop({})
|
||||
|
||||
--hide the scroll bar
|
||||
DetailsBreakdownWindowPlayerScrollBoxDumpTableFrameCodeEditorWindowScrollBar:Hide()
|
||||
end
|
||||
|
||||
function breakdownWindow:CreateRightSideBar() --not enabled
|
||||
breakdownWindow.RightSideBar = CreateFrame("frame", nil, breakdownWindow, "BackdropTemplate")
|
||||
breakdownWindow.RightSideBar:SetWidth(20)
|
||||
|
||||
@@ -130,8 +130,8 @@ local spellContainerColumnData = {
|
||||
--the align seems to be bugged as the left is aligning in the center and center is on the left side
|
||||
{name = "icon", width = 22, label = "", align = "left", enabled = true, offset = columnOffset},
|
||||
{name = "target", width = 22, label = "", align = "left", enabled = true, offset = columnOffset},
|
||||
{name = "rank", label = "#", width = 16, align = "left", enabled = true, offset = columnOffset, dataType = "number"},
|
||||
{name = "expand", label = "^", width = 16, align = "center", enabled = true, offset = columnOffset},
|
||||
{name = "rank", label = "#", width = 16, align = "center", enabled = true, offset = 6, dataType = "number"},
|
||||
{name = "expand", label = "^", width = 16, align = "left", enabled = true, offset = -4}, --maybe -3
|
||||
{name = "name", label = "spell name", width = 246, align = "left", enabled = true, offset = columnOffset},
|
||||
{name = "amount", label = "total", key = "total", selected = true, width = 50, align = "left", enabled = true, canSort = true, sortKey = "total", dataType = "number", order = "DESC", offset = columnOffset},
|
||||
{name = "persecond", label = "ps", key = "total", width = 50, align = "left", enabled = false, canSort = true, sortKey = "ps", offset = columnOffset, order = "DESC", dataType = "number"},
|
||||
@@ -503,10 +503,27 @@ local onEnterSpellBar = function(spellBar, motion) --parei aqui: precisa por nom
|
||||
if (IsShiftKeyDown()) then
|
||||
if (type(spellId) == "number") then
|
||||
GameCooltip:Preset(2)
|
||||
GameCooltip:SetOwner(spellBar, "ANCHOR_TOPRIGHT")
|
||||
GameCooltip:SetOwner(spellBar)
|
||||
GameCooltip:AddLine(Loc ["ABILITY_ID"] .. ": " .. spellBar.spellId)
|
||||
GameCooltip:Show()
|
||||
|
||||
local t = combatObject:GetActor(1, actorName).spells._ActorTable[spellId]
|
||||
|
||||
local textToEditor = ""
|
||||
for key, value in pairs(t) do
|
||||
if (type(value) ~= "function" and type(value) ~= "table") then
|
||||
textToEditor = textToEditor .. key .. " = " .. tostring(value) .. "\n"
|
||||
end
|
||||
end
|
||||
|
||||
breakdownWindow.dumpDataFrame:Show()
|
||||
breakdownWindow.dumpDataFrame.luaEditor:SetText(textToEditor)
|
||||
--hide the scroll bar
|
||||
DetailsBreakdownWindowPlayerScrollBoxDumpTableFrameCodeEditorWindowScrollBar:Hide()
|
||||
end
|
||||
|
||||
elseif (breakdownWindow.dumpDataFrame:IsShown()) then
|
||||
breakdownWindow.dumpDataFrame:Hide()
|
||||
end
|
||||
|
||||
if (spellId == 98021) then --spirit link totem
|
||||
@@ -562,6 +579,69 @@ local onEnterSpellBar = function(spellBar, motion) --parei aqui: precisa por nom
|
||||
blockLine3.rightText:SetText(Loc ["STRING_DPS"] .. ": " .. Details:CommaValue(spellBar.perSecond)) --dps
|
||||
end
|
||||
|
||||
local emporwerSpell = spellTable.e_total
|
||||
if (emporwerSpell) then
|
||||
local empowerLevelSum = spellTable.e_total --total sum of empower levels
|
||||
local empowerAmount = spellTable.e_amt --amount of casts with empower
|
||||
local empowerAmountPerLevel = spellTable.e_lvl --{[1] = 4; [2] = 9; [3] = 15}
|
||||
local empowerDamagePerLevel = spellTable.e_dmg --{[1] = 54548745, [2] = 74548745}
|
||||
|
||||
---@type breakdownspellblock
|
||||
local empowerBlock = spellBlockContainer:GetBlock(blockIndex)
|
||||
blockIndex = blockIndex + 1
|
||||
|
||||
local level1AverageDamage = "0"
|
||||
local level2AverageDamage = "0"
|
||||
local level3AverageDamage = "0"
|
||||
local level4AverageDamage = "0"
|
||||
local level5AverageDamage = "0"
|
||||
|
||||
if (empowerDamagePerLevel[1]) then
|
||||
level1AverageDamage = Details:Format(empowerDamagePerLevel[1] / empowerAmountPerLevel[1])
|
||||
end
|
||||
if (empowerDamagePerLevel[2]) then
|
||||
level2AverageDamage = Details:Format(empowerDamagePerLevel[2] / empowerAmountPerLevel[2])
|
||||
end
|
||||
if (empowerDamagePerLevel[3]) then
|
||||
level3AverageDamage = Details:Format(empowerDamagePerLevel[3] / empowerAmountPerLevel[3])
|
||||
end
|
||||
if (empowerDamagePerLevel[4]) then
|
||||
level4AverageDamage = Details:Format(empowerDamagePerLevel[4] / empowerAmountPerLevel[4])
|
||||
end
|
||||
if (empowerDamagePerLevel[5]) then
|
||||
level5AverageDamage = Details:Format(empowerDamagePerLevel[5] / empowerAmountPerLevel[5])
|
||||
end
|
||||
|
||||
empowerBlock:Show()
|
||||
empowerBlock:SetValue(100)
|
||||
|
||||
empowerBlock.sparkTexture:SetPoint("left", empowerBlock, "left", empowerBlock:GetWidth() + spellBreakdownSettings.blockspell_spark_offset, 0)
|
||||
empowerBlock:SetColor(0.200, 0.576, 0.498, 0.6)
|
||||
|
||||
local blockLine1, blockLine2, blockLine3 = empowerBlock:GetLines()
|
||||
blockLine1.leftText:SetText("Spell Empower Average Level: " .. string.format("%.2f", empowerLevelSum / empowerAmount))
|
||||
|
||||
if (level1AverageDamage ~= "0") then
|
||||
blockLine2.leftText:SetText("Level 1 Avg: " .. level1AverageDamage .. " (" .. (empowerAmountPerLevel[1] or 0) .. ")")
|
||||
end
|
||||
|
||||
if (level2AverageDamage ~= "0") then
|
||||
blockLine2.centerText:SetText("Level 2 Avg: " .. level2AverageDamage .. " (" .. (empowerAmountPerLevel[2] or 0) .. ")")
|
||||
end
|
||||
|
||||
if (level3AverageDamage ~= "0") then
|
||||
blockLine2.rightText:SetText("Level 3 Avg: " .. level3AverageDamage .. " (" .. (empowerAmountPerLevel[3] or 0) .. ")")
|
||||
end
|
||||
|
||||
if (level4AverageDamage ~= "0") then
|
||||
blockLine3.leftText:SetText("Level 4 Avg: " .. level4AverageDamage .. " (" .. (empowerAmountPerLevel[4] or 0) .. ")")
|
||||
end
|
||||
|
||||
if (level5AverageDamage ~= "0") then
|
||||
blockLine3.rightText:SetText("Level 5 Avg: " .. level5AverageDamage .. " (" .. (empowerAmountPerLevel[5] or 0) .. ")")
|
||||
end
|
||||
end
|
||||
|
||||
--check if there's normal hits and build the block
|
||||
---@type number
|
||||
local normalHitsAmt = spellTable.n_amt
|
||||
@@ -620,68 +700,6 @@ local onEnterSpellBar = function(spellBar, motion) --parei aqui: precisa por nom
|
||||
blockLine3.rightText:SetText(Loc ["STRING_DPS"] .. ": " .. Details:CommaValue(spellTable.c_total / critTempoPercent))
|
||||
end
|
||||
|
||||
local emporwerSpell = spellTable.e_total
|
||||
if (emporwerSpell) then
|
||||
local empowerLevelSum = spellTable.e_total --total sum of empower levels
|
||||
local empowerAmount = spellTable.e_amt --amount of casts with empower
|
||||
local empowerAmountPerLevel = spellTable.e_lvl --{[1] = 4; [2] = 9; [3] = 15}
|
||||
local empowerDamagePerLevel = spellTable.e_dmg --{[1] = 54548745, [2] = 74548745}
|
||||
|
||||
---@type breakdownspellblock
|
||||
local empowerBlock = spellBlockContainer:GetBlock(blockIndex)
|
||||
empowerBlock:Show()
|
||||
blockIndex = blockIndex + 1
|
||||
|
||||
local level1AverageDamage = "0"
|
||||
local level2AverageDamage = "0"
|
||||
local level3AverageDamage = "0"
|
||||
local level4AverageDamage = "0"
|
||||
local level5AverageDamage = "0"
|
||||
|
||||
if (empowerDamagePerLevel[1]) then
|
||||
level1AverageDamage = Details:Format(empowerDamagePerLevel[1] / empowerAmountPerLevel[1])
|
||||
end
|
||||
if (empowerDamagePerLevel[2]) then
|
||||
level2AverageDamage = Details:Format(empowerDamagePerLevel[2] / empowerAmountPerLevel[2])
|
||||
end
|
||||
if (empowerDamagePerLevel[3]) then
|
||||
level3AverageDamage = Details:Format(empowerDamagePerLevel[3] / empowerAmountPerLevel[3])
|
||||
end
|
||||
if (empowerDamagePerLevel[4]) then
|
||||
level4AverageDamage = Details:Format(empowerDamagePerLevel[4] / empowerAmountPerLevel[4])
|
||||
end
|
||||
if (empowerDamagePerLevel[5]) then
|
||||
level5AverageDamage = Details:Format(empowerDamagePerLevel[5] / empowerAmountPerLevel[5])
|
||||
end
|
||||
|
||||
empowerBlock:SetValue(100)
|
||||
empowerBlock.sparkTexture:SetPoint("left", empowerBlock, "left", empowerBlock:GetWidth() + spellBreakdownSettings.blockspell_spark_offset, 0)
|
||||
empowerBlock:SetColor(0.200, 0.576, 0.498, 0.6)
|
||||
|
||||
local blockLine1, blockLine2, blockLine3 = empowerBlock:GetLines()
|
||||
blockLine1.leftText:SetText("Spell Empower Average Level: " .. string.format("%.2f", empowerLevelSum / empowerAmount))
|
||||
|
||||
if (level1AverageDamage ~= "0") then
|
||||
blockLine2.leftText:SetText("Level 1 Avg: " .. level1AverageDamage .. " (" .. (empowerAmountPerLevel[1] or 0) .. ")")
|
||||
end
|
||||
|
||||
if (level2AverageDamage ~= "0") then
|
||||
blockLine2.centerText:SetText("Level 2 Avg: " .. level2AverageDamage .. " (" .. (empowerAmountPerLevel[2] or 0) .. ")")
|
||||
end
|
||||
|
||||
if (level3AverageDamage ~= "0") then
|
||||
blockLine2.rightText:SetText("Level 3 Avg: " .. level3AverageDamage .. " (" .. (empowerAmountPerLevel[3] or 0) .. ")")
|
||||
end
|
||||
|
||||
if (level4AverageDamage ~= "0") then
|
||||
blockLine3.leftText:SetText("Level 4 Avg: " .. level4AverageDamage .. " (" .. (empowerAmountPerLevel[4] or 0) .. ")")
|
||||
end
|
||||
|
||||
if (level5AverageDamage ~= "0") then
|
||||
blockLine3.rightText:SetText("Level 5 Avg: " .. level5AverageDamage .. " (" .. (empowerAmountPerLevel[5] or 0) .. ")")
|
||||
end
|
||||
end
|
||||
|
||||
if (trinketData[spellId]) then
|
||||
---@type trinketdata
|
||||
local trinketInfo = trinketData[spellId]
|
||||
@@ -838,6 +856,10 @@ local onLeaveSpellBar = function(spellBar)
|
||||
if (not spellsTab.HasSelectedSpellBar()) then
|
||||
spellsTab.GetSpellBlockFrame():ClearBlocks()
|
||||
end
|
||||
|
||||
if (breakdownWindow.dumpDataFrame:IsShown()) then
|
||||
breakdownWindow.dumpDataFrame:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
---on mouse down a breakdownspellbar in the breakdown window
|
||||
@@ -1619,7 +1641,7 @@ local updateSpellBar = function(spellBar, index, actorName, combatObject, scroll
|
||||
|
||||
--statusbar color by school
|
||||
local r, g, b = Details:GetSpellSchoolColor(spellTable.spellschool or 1)
|
||||
spellBar.statusBar:SetStatusBarColor(r, g, b, 1)
|
||||
spellBar.statusBar:SetStatusBarColor(r, g, b, 0.963)
|
||||
|
||||
spellBar.average = value / spellTable.counter
|
||||
spellBar.combatTime = combatTime
|
||||
@@ -1631,6 +1653,7 @@ local updateSpellBar = function(spellBar, index, actorName, combatObject, scroll
|
||||
if (header.name == "icon") then --ok
|
||||
spellBar.spellIcon:Show()
|
||||
spellBar.spellIcon:SetTexture(spellIcon)
|
||||
spellBar.spellIcon:SetAlpha(0.92)
|
||||
spellBar:AddFrameToHeaderAlignment(spellBar.spellIconFrame)
|
||||
|
||||
elseif (header.name == "target") then --the tab does not have knownledge about the targets of the spell, it must be passed over
|
||||
@@ -1663,7 +1686,16 @@ local updateSpellBar = function(spellBar, index, actorName, combatObject, scroll
|
||||
spellBar.expandButton:SetScript("OnClick", onClickExpandButton)
|
||||
|
||||
--update the texture taking the state of the expanded value
|
||||
spellBar.expandButton.texture:SetTexture(bIsSpellExpaded and [[Interface\BUTTONS\Arrow-Up-Down]] or [[Interface\BUTTONS\Arrow-Down-Down]])
|
||||
if (bIsSpellExpaded) then
|
||||
spellBar.expandButton.texture:SetTexture([[Interface\AddOns\Details\images\arrow_face_down]])
|
||||
spellBar.expandButton.texture:SetTexCoord(0, 1, 1, 0)
|
||||
else
|
||||
spellBar.expandButton.texture:SetTexture([[Interface\AddOns\Details\images\arrow_face_down]])
|
||||
spellBar.expandButton.texture:SetTexCoord(0, 1, 0, 1)
|
||||
end
|
||||
|
||||
spellBar.expandButton.texture:SetAlpha(0.7)
|
||||
spellBar.expandButton.texture:SetSize(16, 16)
|
||||
end
|
||||
|
||||
elseif (header.name == "name") then --ok
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Reference in New Issue
Block a user