General development and bug fixes (see commit description).

- Fixed the deaths display, where the windows wasn't usig custom text scripts.
- Fixed an issue with custom displays, where it was unable to use class colors in their texts.
- More development and bug fixes on the new Mythic+ Run Completion panel.
- Framework Update.
This commit is contained in:
Tercio Jose
2024-02-13 13:24:28 -03:00
parent 18e7464cef
commit 2fd02eebb1
19 changed files with 5685 additions and 1758 deletions
+137 -136
View File
@@ -2,6 +2,7 @@
local _ = nil
_detalhes.custom_function_cache = {}
local addonName, Details222 = ...
local Details = _detalhes
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--local pointers
@@ -11,17 +12,17 @@
local tinsert = table.insert
local ipairs = ipairs
local unpack = table.unpack or unpack
local _GetSpellInfo = _detalhes.getspellinfo
local _GetSpellInfo = Details.getspellinfo
local IsInRaid = IsInRaid
local IsInGroup = IsInGroup
local stringReplace = _detalhes.string.replace
local stringReplace = Details.string.replace
local Loc = LibStub("AceLocale-3.0"):GetLocale("Details")
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--constants
local classCustom = _detalhes.atributo_custom
local classCustom = Details.atributo_custom
classCustom.mt = {__index = classCustom}
local combatContainers = {
@@ -35,7 +36,7 @@
classCustom._InstanceLastCombatShown = {}
classCustom._TargetActorsProcessed = {}
local ToKFunctions = _detalhes.ToKFunctions
local ToKFunctions = Details.ToKFunctions
local SelectedToKFunction = ToKFunctions[1]
local UsingCustomRightText = false
local UsingCustomLeftText = false
@@ -86,25 +87,25 @@
local func
local scriptTypeName = "search"
if (_detalhes.custom_function_cache [instanceObject.customName]) then
func = _detalhes.custom_function_cache [instanceObject.customName]
if (Details.custom_function_cache [instanceObject.customName]) then
func = Details.custom_function_cache [instanceObject.customName]
else
local errortext
func, errortext = loadstring (customObject.script)
if (func) then
DetailsFramework:SetEnvironment(func)
_detalhes.custom_function_cache [instanceObject.customName] = func
Details.custom_function_cache [instanceObject.customName] = func
else
_detalhes:Msg("|cFFFF9900error compiling code for custom display " .. (instanceObject.customName or "") .. " |r:", errortext)
Details:Msg("|cFFFF9900error compiling code for custom display " .. (instanceObject.customName or "") .. " |r:", errortext)
end
if (customObject.tooltip) then
local tooltip_script, errortext = loadstring (customObject.tooltip)
if (tooltip_script) then
DetailsFramework:SetEnvironment(tooltip_script)
_detalhes.custom_function_cache [instanceObject.customName .. "Tooltip"] = tooltip_script
Details.custom_function_cache [instanceObject.customName .. "Tooltip"] = tooltip_script
else
_detalhes:Msg("|cFFFF9900error compiling tooltip code for custom display " .. (instanceObject.customName or "") .. " |r:", errortext)
Details:Msg("|cFFFF9900error compiling tooltip code for custom display " .. (instanceObject.customName or "") .. " |r:", errortext)
end
scriptTypeName = "tooltip"
end
@@ -113,9 +114,9 @@
local total_script, errortext = loadstring (customObject.total_script)
if (total_script) then
DetailsFramework:SetEnvironment(total_script)
_detalhes.custom_function_cache [instanceObject.customName .. "Total"] = total_script
Details.custom_function_cache [instanceObject.customName .. "Total"] = total_script
else
_detalhes:Msg("|cFFFF9900error compiling total code for custom display " .. (instanceObject.customName or "") .. " |r:", errortext)
Details:Msg("|cFFFF9900error compiling total code for custom display " .. (instanceObject.customName or "") .. " |r:", errortext)
end
scriptTypeName = "total"
end
@@ -124,24 +125,24 @@
local percent_script, errortext = loadstring (customObject.percent_script)
if (percent_script) then
DetailsFramework:SetEnvironment(percent_script)
_detalhes.custom_function_cache [instanceObject.customName .. "Percent"] = percent_script
Details.custom_function_cache [instanceObject.customName .. "Percent"] = percent_script
else
_detalhes:Msg("|cFFFF9900error compiling percent code for custom display " .. (instanceObject.customName or "") .. " |r:", errortext)
Details:Msg("|cFFFF9900error compiling percent code for custom display " .. (instanceObject.customName or "") .. " |r:", errortext)
end
scriptTypeName = "percent"
end
end
if (not func) then
_detalhes:Msg(Loc ["STRING_CUSTOM_FUNC_INVALID"], func)
_detalhes:EndRefresh (instanceObject, 0, combatObject, combatObject [1])
Details:Msg(Loc ["STRING_CUSTOM_FUNC_INVALID"], func)
Details:EndRefresh (instanceObject, 0, combatObject, combatObject [1])
end
local okey, _total, _top, _amount = pcall (func, combatObject, instance_container, instanceObject)
if (not okey) then
local errorText = _total
_detalhes:Msg("|cFFFF9900error on display " .. customObject:GetName() .. " (" .. scriptTypeName .. ")|r:", errorText)
return _detalhes:EndRefresh(instanceObject, 0, combatObject, combatObject[1])
Details:Msg("|cFFFF9900error on display " .. customObject:GetName() .. " (" .. scriptTypeName .. ")|r:", errorText)
return Details:EndRefresh(instanceObject, 0, combatObject, combatObject[1])
end
total = _total or 0
@@ -178,7 +179,7 @@
end
end
instanceObject:EsconderScrollBar()
return _detalhes:EndRefresh (instanceObject, total, combatObject, nil)
return Details:EndRefresh (instanceObject, total, combatObject, nil)
end
if (amount > #instance_container._ActorTable) then
@@ -195,8 +196,8 @@
-- key name value need to be formated
if (customObject) then
local percent_script = _detalhes.custom_function_cache [instanceObject.customName .. "Percent"]
local total_script = _detalhes.custom_function_cache [instanceObject.customName .. "Total"]
local percent_script = Details.custom_function_cache [instanceObject.customName .. "Percent"]
local total_script = Details.custom_function_cache [instanceObject.customName .. "Total"]
local okey
for index, actor in ipairs(instance_container._ActorTable) do
@@ -206,8 +207,8 @@
if (percent_script) then
okey, percent = pcall (percent_script, floor(actor.value), top, total, combatObject, instanceObject, actor)
if (not okey) then
_detalhes:Msg("|cFFFF9900percent script error|r:", percent)
return _detalhes:EndRefresh (instanceObject, 0, combatObject, combatObject [1])
Details:Msg("|cFFFF9900percent script error|r:", percent)
return Details:EndRefresh (instanceObject, 0, combatObject, combatObject [1])
end
else
percent = format ("%.1f", floor(actor.value) / total * 100)
@@ -216,8 +217,8 @@
if (total_script) then
local okey, value = pcall (total_script, floor(actor.value), top, total, combatObject, instanceObject, actor)
if (not okey) then
_detalhes:Msg("|cFFFF9900total script error|r:", value)
return _detalhes:EndRefresh (instanceObject, 0, combatObject, combatObject [1])
Details:Msg("|cFFFF9900total script error|r:", value)
return Details:EndRefresh (instanceObject, 0, combatObject, combatObject [1])
end
if (type(value) == "number") then
@@ -252,7 +253,7 @@
classCustom:Refresh (instanceObject, instance_container, combatObject, force, total, top, customObject)
return _detalhes:EndRefresh (instanceObject, total, combatObject, combatObject [container_index])
return Details:EndRefresh (instanceObject, total, combatObject, combatObject [container_index])
end
@@ -288,11 +289,11 @@
elseif (source == "[raid]") then
if (_detalhes.in_combat and instance.segmento == 0 and not export) then
if (Details.in_combat and instance.segmento == 0 and not export) then
if (container_index == 1) then
combat_container = _detalhes.cache_damage_group
combat_container = Details.cache_damage_group
elseif (container_index == 2) then
combat_container = _detalhes.cache_healing_group
combat_container = Details.cache_healing_group
end
end
@@ -319,7 +320,7 @@
end
elseif (source == "[player]") then
local pindex = combat [container_index]._NameIndexTable [_detalhes.playername]
local pindex = combat [container_index]._NameIndexTable [Details.playername]
if (pindex) then
local actor = combat [container_index]._ActorTable [pindex]
local actortotal = func (_, actor, source, target, spellid, combat, instance_container)
@@ -379,8 +380,8 @@
end
end
local percent_script = _detalhes.custom_function_cache [instance.customName .. "Percent"]
local total_script = _detalhes.custom_function_cache [instance.customName .. "Total"]
local percent_script = Details.custom_function_cache [instance.customName .. "Percent"]
local total_script = Details.custom_function_cache [instance.customName .. "Total"]
local bars_show_data = instance.row_info.textR_show_data
local bars_brackets = instance:GetBarBracket()
@@ -399,7 +400,7 @@
local row1 = barContainer [1]
row1.minha_tabela = nil
row1.lineText1:SetText(Loc ["STRING_TOTAL"])
row1.lineText4:SetText(_detalhes:ToK2 (total) .. " (" .. _detalhes:ToK (total / combatElapsedTime) .. ")")
row1.lineText4:SetText(Details:ToK2 (total) .. " (" .. Details:ToK (total / combatElapsedTime) .. ")")
row1:SetValue(100)
local r, g, b = unpack(instance.total_bar.color)
@@ -435,7 +436,7 @@
local row1 = barContainer [1]
row1.minha_tabela = nil
row1.lineText1:SetText(Loc ["STRING_TOTAL"])
row1.lineText4:SetText(_detalhes:ToK2 (total) .. " (" .. _detalhes:ToK (total / combatElapsedTime) .. ")")
row1.lineText4:SetText(Details:ToK2 (total) .. " (" .. Details:ToK (total / combatElapsedTime) .. ")")
row1:SetValue(100)
local r, g, b = unpack(instance.total_bar.color)
@@ -493,8 +494,8 @@
--local value, top, total, combat, instance = ...
okey, percent = pcall (percent_script, self.value, top, total, combat, instance, self)
if (not okey) then
_detalhes:Msg("|cFFFF9900error on custom display function|r:", percent)
return _detalhes:EndRefresh (instance, 0, combat, combat [1])
Details:Msg("|cFFFF9900error on custom display function|r:", percent)
return Details:EndRefresh (instance, 0, combat, combat [1])
end
else
if (percentage_type == 1) then
@@ -512,8 +513,8 @@
if (total_script) then
local okey, value = pcall (total_script, self.value, top, total, combat, instance, self)
if (not okey) then
_detalhes:Msg("|cFFFF9900error on custom display function|r:", value)
return _detalhes:EndRefresh (instance, 0, combat, combat [1])
Details:Msg("|cFFFF9900error on custom display function|r:", value)
return Details:EndRefresh (instance, 0, combat, combat [1])
end
if (instance.use_multi_fontstrings) then
@@ -554,7 +555,7 @@
-- update tooltip function --
if (self.id) then
local school = _detalhes.spell_school_cache[self.nome]
local school = Details.spell_school_cache[self.nome]
if (school) then
local schoolColor = Details.spells_school[school]
if (not schoolColor) then
@@ -611,7 +612,7 @@
esta_barra.last_value = esta_porcentagem --reseta o ultimo valor da barra
if (_detalhes.is_using_row_animations and forcar) then
if (Details.is_using_row_animations and forcar) then
esta_barra.tem_animacao = 0
esta_barra:SetScript("OnUpdate", nil)
end
@@ -620,7 +621,7 @@
elseif (esta_porcentagem ~= esta_barra.last_value) then --continua mostrando a mesma tabela ento compara a porcentagem
--apenas atualizar
if (_detalhes.is_using_row_animations) then
if (Details.is_using_row_animations) then
local upRow = barras_container [whichRowLine-1]
if (upRow) then
@@ -641,14 +642,14 @@
end
end
function classCustom:RefreshBarra(esta_barra, instancia, from_resize)
function classCustom:RefreshBarra(thisBar, instanceObject, bFromResize)
local class, enemy, arena_enemy, arena_ally = self.classe, self.enemy, self.arena_enemy, self.arena_ally
if (from_resize) then
if (bFromResize) then
if (self.id) then
local school = _detalhes.spell_school_cache[self.nome]
if (school) then
local schoolColor = Details.spells_school[school]
local schoolData = Details.spell_school_cache[self.nome]
if (schoolData) then
local schoolColor = Details.spells_school[schoolData]
if (not schoolColor) then
schoolColor = Details.spells_school[1]
end
@@ -662,64 +663,64 @@
end
end
_detalhes:SetBarColors(esta_barra, instancia, actor_class_color_r, actor_class_color_g, actor_class_color_b)
self:SetBarColors(thisBar, instanceObject, actor_class_color_r, actor_class_color_g, actor_class_color_b)
--we need a customized icon settings for custom displays.
if (self.classe == "UNKNOW") then
esta_barra.icone_classe:SetTexture("Interface\\LFGFRAME\\LFGROLE_BW")
esta_barra.icone_classe:SetTexCoord(.25, .5, 0, 1)
esta_barra.icone_classe:SetVertexColor(1, 1, 1)
thisBar.icone_classe:SetTexture("Interface\\LFGFRAME\\LFGROLE_BW")
thisBar.icone_classe:SetTexCoord(.25, .5, 0, 1)
thisBar.icone_classe:SetVertexColor(1, 1, 1)
elseif (self.classe == "UNGROUPPLAYER") then
if (self.enemy) then
if (_detalhes.faction_against == "Horde") then
esta_barra.icone_classe:SetTexture("Interface\\ICONS\\Achievement_Character_Orc_Male")
esta_barra.icone_classe:SetTexCoord(0, 1, 0, 1)
if (Details.faction_against == "Horde") then
thisBar.icone_classe:SetTexture("Interface\\ICONS\\Achievement_Character_Orc_Male")
thisBar.icone_classe:SetTexCoord(0, 1, 0, 1)
else
esta_barra.icone_classe:SetTexture("Interface\\ICONS\\Achievement_Character_Human_Male")
esta_barra.icone_classe:SetTexCoord(0, 1, 0, 1)
thisBar.icone_classe:SetTexture("Interface\\ICONS\\Achievement_Character_Human_Male")
thisBar.icone_classe:SetTexCoord(0, 1, 0, 1)
end
else
if (_detalhes.faction_against == "Horde") then
esta_barra.icone_classe:SetTexture("Interface\\ICONS\\Achievement_Character_Human_Male")
esta_barra.icone_classe:SetTexCoord(0, 1, 0, 1)
if (Details.faction_against == "Horde") then
thisBar.icone_classe:SetTexture("Interface\\ICONS\\Achievement_Character_Human_Male")
thisBar.icone_classe:SetTexCoord(0, 1, 0, 1)
else
esta_barra.icone_classe:SetTexture("Interface\\ICONS\\Achievement_Character_Orc_Male")
esta_barra.icone_classe:SetTexCoord(0, 1, 0, 1)
thisBar.icone_classe:SetTexture("Interface\\ICONS\\Achievement_Character_Orc_Male")
thisBar.icone_classe:SetTexCoord(0, 1, 0, 1)
end
end
esta_barra.icone_classe:SetVertexColor(1, 1, 1)
thisBar.icone_classe:SetVertexColor(1, 1, 1)
elseif (self.classe == "PET") then
esta_barra.icone_classe:SetTexture(instancia.row_info.icon_file)
esta_barra.icone_classe:SetTexCoord(0.25, 0.49609375, 0.75, 1)
esta_barra.icone_classe:SetVertexColor(actor_class_color_r, actor_class_color_g, actor_class_color_b)
thisBar.icone_classe:SetTexture(instanceObject.row_info.icon_file)
thisBar.icone_classe:SetTexCoord(0.25, 0.49609375, 0.75, 1)
thisBar.icone_classe:SetVertexColor(actor_class_color_r, actor_class_color_g, actor_class_color_b)
else
if (self.id) then
esta_barra.icone_classe:SetTexCoord(0.078125, 0.921875, 0.078125, 0.921875)
esta_barra.icone_classe:SetTexture(self.icon)
thisBar.icone_classe:SetTexCoord(0.078125, 0.921875, 0.078125, 0.921875)
thisBar.icone_classe:SetTexture(self.icon)
else
if (instancia.row_info.use_spec_icons) then
if (instanceObject.row_info.use_spec_icons) then
if ((self.spec and self.spec ~= 0) or (self.my_actor.spec and self.my_actor.spec ~= 0)) then
esta_barra.icone_classe:SetTexture(instancia.row_info.spec_file)
esta_barra.icone_classe:SetTexCoord(unpack(_detalhes.class_specs_coords[self.spec or self.my_actor.spec]))
thisBar.icone_classe:SetTexture(instanceObject.row_info.spec_file)
thisBar.icone_classe:SetTexCoord(unpack(Details.class_specs_coords[self.spec or self.my_actor.spec]))
else
esta_barra.icone_classe:SetTexture([[Interface\AddOns\Details\images\classes_small]])
esta_barra.icone_classe:SetTexCoord(unpack(Details.class_coords[self.classe]))
thisBar.icone_classe:SetTexture([[Interface\AddOns\Details\images\classes_small]])
thisBar.icone_classe:SetTexCoord(unpack(Details.class_coords[self.classe]))
end
else
esta_barra.icone_classe:SetTexture(instancia.row_info.icon_file)
esta_barra.icone_classe:SetTexCoord(unpack(Details.class_coords[self.classe]))
thisBar.icone_classe:SetTexture(instanceObject.row_info.icon_file)
thisBar.icone_classe:SetTexCoord(unpack(Details.class_coords[self.classe]))
end
end
esta_barra.icone_classe:SetVertexColor(1, 1, 1)
thisBar.icone_classe:SetVertexColor(1, 1, 1)
end
--left text
self:SetBarLeftText (esta_barra, instancia, enemy, arena_enemy, arena_ally, UsingCustomLeftText)
self:SetBarLeftText(thisBar, instanceObject, enemy, arena_enemy, arena_ally, UsingCustomLeftText)
esta_barra.lineText1:SetSize(esta_barra:GetWidth() - esta_barra.lineText4:GetStringWidth() - 20, 15)
thisBar.lineText1:SetSize(thisBar:GetWidth() - thisBar.lineText4:GetStringWidth() - 20, 15)
end
@@ -829,7 +830,7 @@
end
if (class == "UNKNOW") then
--try once again
class = _detalhes:GetClass(actor.nome or actor.name)
class = Details:GetClass(actor.nome or actor.name)
if (class and class ~= "UNKNOW") then
actor.classe = class
end
@@ -839,7 +840,7 @@
local newActor = setmetatable({
nome = actor.nome or actor.name,
classe = class,
value = _detalhes:GetOrderNumber(),
value = Details:GetOrderNumber(),
is_custom = true,
color = actor.color,
}, classCustom.mt)
@@ -847,7 +848,7 @@
newActor.customColor = actor.customColor
newActor.name_complement = name_complement
newActor.displayName = actor.displayName or (_detalhes:GetOnlyName(newActor.nome) .. (name_complement or ""))
newActor.displayName = actor.displayName or (Details:GetOnlyName(newActor.nome) .. (name_complement or ""))
newActor:SetSpecId(actor.spec)
@@ -935,19 +936,19 @@
local actorObject = self.my_actor
if (actorObject.id) then
_detalhes:AddTooltipSpellHeaderText (select(1, _GetSpellInfo(actorObject.id)), "yellow", 1, select(3, _GetSpellInfo(actorObject.id)), 0.90625, 0.109375, 0.15625, 0.875, false, 18)
Details:AddTooltipSpellHeaderText (select(1, _GetSpellInfo(actorObject.id)), "yellow", 1, select(3, _GetSpellInfo(actorObject.id)), 0.90625, 0.109375, 0.15625, 0.875, false, 18)
else
_detalhes:AddTooltipSpellHeaderText (customObject:GetName(), "yellow", 1, customObject:GetIcon(), 0.90625, 0.109375, 0.15625, 0.875, false, 18)
Details:AddTooltipSpellHeaderText (customObject:GetName(), "yellow", 1, customObject:GetIcon(), 0.90625, 0.109375, 0.15625, 0.875, false, 18)
end
_detalhes:AddTooltipHeaderStatusbar (1, 1, 1, 0.6)
Details:AddTooltipHeaderStatusbar (1, 1, 1, 0.6)
if (customObject:IsScripted()) then
if (customObject.tooltip) then
local func = _detalhes.custom_function_cache [instanceObject.customName .. "Tooltip"]
local func = Details.custom_function_cache [instanceObject.customName .. "Tooltip"]
local okey, errortext = pcall(func, actorObject, instanceObject.showing, instanceObject, keydown)
if (not okey) then
_detalhes:Msg("|cFFFF9900error on custom display tooltip function|r:", errortext)
Details:Msg("|cFFFF9900error on custom display tooltip function|r:", errortext)
return false
end
end
@@ -1044,14 +1045,14 @@
function classCustom:RemoveCustom (index)
if (not _detalhes.tabela_instancias) then
if (not Details.tabela_instancias) then
--do not remove customs while the addon is loading.
return
end
table.remove (_detalhes.custom, index)
table.remove (Details.custom, index)
for _, instance in ipairs(_detalhes.tabela_instancias) do
for _, instance in ipairs(Details.tabela_instancias) do
if (instance.atributo == 5 and instance.sub_atributo == index) then
instance:ResetAttribute()
elseif (instance.atributo == 5 and instance.sub_atributo > index) then
@@ -1062,33 +1063,33 @@
end
end
_detalhes.switch:OnRemoveCustom (index)
Details.switch:OnRemoveCustom (index)
end
--export for plugins
function _detalhes:RemoveCustomObject (object_name)
for index, object in ipairs(_detalhes.custom) do
function Details:RemoveCustomObject (object_name)
for index, object in ipairs(Details.custom) do
if (object.name == object_name) then
return classCustom:RemoveCustom (index)
end
end
end
function _detalhes:ResetCustomFunctionsCache()
Details:Destroy(_detalhes.custom_function_cache)
function Details:ResetCustomFunctionsCache()
Details:Destroy(Details.custom_function_cache)
end
function _detalhes.refresh:r_atributo_custom()
function Details.refresh:r_atributo_custom()
--check for non used temp displays
if (_detalhes.tabela_instancias) then
if (Details.tabela_instancias) then
for i = #_detalhes.custom, 1, -1 do
local custom_object = _detalhes.custom [i]
for i = #Details.custom, 1, -1 do
local custom_object = Details.custom [i]
if (custom_object.temp) then
--check if there is a instance showing this custom
local showing = false
for index, instance in ipairs(_detalhes.tabela_instancias) do
for index, instance in ipairs(Details.tabela_instancias) do
if (instance.atributo == 5 and instance.sub_atributo == i) then
showing = true
end
@@ -1102,37 +1103,37 @@
end
--restore metatable and indexes
for index, custom_object in ipairs(_detalhes.custom) do
for index, custom_object in ipairs(Details.custom) do
setmetatable(custom_object, classCustom)
custom_object.__index = classCustom
end
end
function _detalhes.clear:c_atributo_custom()
for _, custom_object in ipairs(_detalhes.custom) do
function Details.clear:c_atributo_custom()
for _, custom_object in ipairs(Details.custom) do
custom_object.__index = nil
end
end
function classCustom:UpdateSelectedToKFunction()
SelectedToKFunction = ToKFunctions [_detalhes.ps_abbreviation]
FormatTooltipNumber = ToKFunctions [_detalhes.tooltip.abbreviation]
TooltipMaximizedMethod = _detalhes.tooltip.maximize_method
SelectedToKFunction = ToKFunctions [Details.ps_abbreviation]
FormatTooltipNumber = ToKFunctions [Details.tooltip.abbreviation]
TooltipMaximizedMethod = Details.tooltip.maximize_method
classCustom:UpdateDamageDoneBracket()
classCustom:UpdateHealingDoneBracket()
end
function _detalhes:InstallCustomObject (object)
function Details:InstallCustomObject (object)
local have = false
if (object.script_version) then
for _, custom in ipairs(_detalhes.custom) do
for _, custom in ipairs(Details.custom) do
if (custom.name == object.name and (custom.script_version and custom.script_version >= object.script_version) ) then
have = true
break
end
end
else
for _, custom in ipairs(_detalhes.custom) do
for _, custom in ipairs(Details.custom) do
if (custom.name == object.name) then
have = true
break
@@ -1141,27 +1142,27 @@
end
if (not have) then
for i, custom in ipairs(_detalhes.custom) do
for i, custom in ipairs(Details.custom) do
if (custom.name == object.name) then
table.remove (_detalhes.custom, i)
table.remove (Details.custom, i)
break
end
end
setmetatable(object, _detalhes.atributo_custom)
object.__index = _detalhes.atributo_custom
_detalhes.custom [#_detalhes.custom+1] = object
setmetatable(object, Details.atributo_custom)
object.__index = Details.atributo_custom
Details.custom [#Details.custom+1] = object
end
end
function Details222.GetCustomDisplayIDByName(customDisplayName)
for customDisplayID, customObject in ipairs(_detalhes.custom) do
for customDisplayID, customObject in ipairs(Details.custom) do
if (customObject.name == customDisplayName) then
return customDisplayID
end
end
end
function _detalhes:AddDefaultCustomDisplays()
function Details:AddDefaultCustomDisplays()
local PotionUsed = {
name = Loc ["STRING_CUSTOM_POT_DEFAULT"],
icon = [[Interface\ICONS\INV_Potion_03]],
@@ -1280,8 +1281,8 @@
table.remove (self.custom, i)
end
end
setmetatable(PotionUsed, _detalhes.atributo_custom)
PotionUsed.__index = _detalhes.atributo_custom
setmetatable(PotionUsed, Details.atributo_custom)
PotionUsed.__index = Details.atributo_custom
self.custom [#self.custom+1] = PotionUsed
end
@@ -1366,8 +1367,8 @@
table.remove (self.custom, i)
end
end
setmetatable(Healthstone, _detalhes.atributo_custom)
Healthstone.__index = _detalhes.atributo_custom
setmetatable(Healthstone, Details.atributo_custom)
Healthstone.__index = Details.atributo_custom
self.custom [#self.custom+1] = Healthstone
end
@@ -1430,8 +1431,8 @@
table.remove (self.custom, i)
end
end
setmetatable(DamageActivityTime, _detalhes.atributo_custom)
DamageActivityTime.__index = _detalhes.atributo_custom
setmetatable(DamageActivityTime, Details.atributo_custom)
DamageActivityTime.__index = Details.atributo_custom
self.custom [#self.custom+1] = DamageActivityTime
end
@@ -1492,8 +1493,8 @@
table.remove (self.custom, i)
end
end
setmetatable(HealActivityTime, _detalhes.atributo_custom)
HealActivityTime.__index = _detalhes.atributo_custom
setmetatable(HealActivityTime, Details.atributo_custom)
HealActivityTime.__index = Details.atributo_custom
self.custom [#self.custom+1] = HealActivityTime
end
@@ -1588,8 +1589,8 @@
end
end
if (not have) then
setmetatable(CC_Done, _detalhes.atributo_custom)
CC_Done.__index = _detalhes.atributo_custom
setmetatable(CC_Done, Details.atributo_custom)
CC_Done.__index = Details.atributo_custom
for i, custom in ipairs(self.custom) do
if (custom.name == Loc ["STRING_CUSTOM_CC_DONE"]) then
@@ -1722,8 +1723,8 @@
end
end
if (not have) then
setmetatable(CC_Received, _detalhes.atributo_custom)
CC_Received.__index = _detalhes.atributo_custom
setmetatable(CC_Received, Details.atributo_custom)
CC_Received.__index = Details.atributo_custom
for i, custom in ipairs(self.custom) do
if (custom.name == Loc ["STRING_CUSTOM_CC_RECEIVED"]) then
@@ -1982,8 +1983,8 @@
end
end
if (not have) then
setmetatable(MySpells, _detalhes.atributo_custom)
MySpells.__index = _detalhes.atributo_custom
setmetatable(MySpells, Details.atributo_custom)
MySpells.__index = Details.atributo_custom
for i, custom in ipairs(self.custom) do
if (custom.name == Loc ["STRING_CUSTOM_MYSPELLS"]) then
@@ -2074,8 +2075,8 @@
end
end
if (not have) then
setmetatable(DamageOnSkullTarget, _detalhes.atributo_custom)
DamageOnSkullTarget.__index = _detalhes.atributo_custom
setmetatable(DamageOnSkullTarget, Details.atributo_custom)
DamageOnSkullTarget.__index = Details.atributo_custom
for i, custom in ipairs(self.custom) do
if (custom.name == Loc ["STRING_CUSTOM_DAMAGEONSKULL"]) then
@@ -2204,8 +2205,8 @@
end
end
if (not have) then
setmetatable(DamageOnAnyTarget, _detalhes.atributo_custom)
DamageOnAnyTarget.__index = _detalhes.atributo_custom
setmetatable(DamageOnAnyTarget, Details.atributo_custom)
DamageOnAnyTarget.__index = Details.atributo_custom
for i, custom in ipairs(self.custom) do
if (custom.name == Loc ["STRING_CUSTOM_DAMAGEONANYMARKEDTARGET"]) then
@@ -2390,8 +2391,8 @@
table.remove (self.custom, i)
end
end
setmetatable(DynamicOverallDamage, _detalhes.atributo_custom)
DynamicOverallDamage.__index = _detalhes.atributo_custom
setmetatable(DynamicOverallDamage, Details.atributo_custom)
DynamicOverallDamage.__index = Details.atributo_custom
self.custom [#self.custom+1] = DynamicOverallDamage
end
@@ -2491,13 +2492,13 @@
table.remove (self.custom, i)
end
end
setmetatable(DamageOnShields, _detalhes.atributo_custom)
DamageOnShields.__index = _detalhes.atributo_custom
setmetatable(DamageOnShields, Details.atributo_custom)
DamageOnShields.__index = Details.atributo_custom
self.custom [#self.custom+1] = DamageOnShields
end
---------------------------------------
_detalhes:ResetCustomFunctionsCache()
Details:ResetCustomFunctionsCache()
end
+19 -6
View File
@@ -327,8 +327,18 @@ function Details.Sort4Reverse(table1, table2) --[[exported]]
return table1[4] < table2[4]
end
function Details:GetTextColor(instanceObject, actorObject)
if (instanceObject.row_info.textL_class_colors) then
function Details:GetTextColor(instanceObject, textSide)
local actorObject = self
textSide = textSide or "left"
local bUseClassColor = false
if (textSide == "left") then
bUseClassColor = instanceObject.row_info.textL_class_colors
elseif (textSide == "right") then
bUseClassColor = instanceObject.row_info.textR_class_colors
end
if (bUseClassColor) then
return unpack(Details.class_colors[actorObject.classe or "UNKNOW"])
else
return unpack(instanceObject.row_info.fixed_text_color)
@@ -3179,9 +3189,12 @@ function Details:SetBarLeftText(bar, instance, enemy, arenaEnemy, arenaAlly, usi
barNumber = bar.colocacao .. ". "
end
--translate cyrillic alphabet to western alphabet by Vardex (https://github.com/Vardex May 22, 2019)
if (instance.row_info.textL_translit_text) then
self.displayName = Translit:Transliterate(self.displayName, "!")
if (not self.transliteratedName) then
--translate cyrillic alphabet to western alphabet by Vardex (https://github.com/Vardex May 22, 2019)
self.transliteratedName = Translit:Transliterate(self.displayName, "!")
end
self.displayName = self.transliteratedName or self.displayName
end
if (enemy) then
@@ -3282,12 +3295,12 @@ function Details:SetBarColors(bar, instance, r, g, b, a) --[[exported]] --~color
end
if (instance.row_info.textL_class_colors) then
local textColor_Red, textColor_Green, textColor_Blue = Details:GetTextColor(instance, self)
local textColor_Red, textColor_Green, textColor_Blue = self:GetTextColor(instance, "left")
bar.lineText1:SetTextColor(textColor_Red, textColor_Green, textColor_Blue) --the r, g, b color passed are the color used on the bar, so if the bar is not using class color, the text is painted with the fixed color for the bar
end
if (instance.row_info.textR_class_colors) then
local textColor_Red, textColor_Green, textColor_Blue = Details:GetTextColor(instance, self)
local textColor_Red, textColor_Green, textColor_Blue = self:GetTextColor(instance, "right")
bar.lineText2:SetTextColor(textColor_Red, textColor_Green, textColor_Blue)
bar.lineText3:SetTextColor(textColor_Red, textColor_Green, textColor_Blue)
bar.lineText4:SetTextColor(textColor_Red, textColor_Green, textColor_Blue)
+3 -4
View File
@@ -1372,15 +1372,14 @@ function healingClass:ToolTip_HealingDone (instancia, numero, barra, keydown)
--TOP Curados
ActorSkillsContainer = self.targets
for target_name, amount in pairs(ActorSkillsContainer) do
for targetName, amount in pairs(ActorSkillsContainer) do
if (amount > 0) then
--translate cyrillic alphabet to western alphabet by Vardex (https://github.com/Vardex May 22, 2019)
if (instancia.row_info.textL_translit_text) then
target_name = Translit:Transliterate(target_name, "!")
targetName = Translit:Transliterate(targetName, "!")
end
tinsert(ActorHealingTargets, {target_name, amount, amount / ActorTotal * 100})
tinsert(ActorHealingTargets, {targetName, amount, amount / ActorTotal * 100})
end
end
_table_sort (ActorHealingTargets, _detalhes.Sort2)
+59 -29
View File
@@ -574,55 +574,85 @@ function atributo_misc:ReportSingleDebuffUptimeLine (misc_actor, instance)
return _detalhes:Reportar (report_table, {_no_current = true, _no_inverse = true, _custom = true})
end
---index[1] is the death log
---index[2] is the death time
---index[3] is the name of the player
---index[4] is the class of the player
---index[5] is the max health
---index[6] is the time of the fight as string
---@field death boolean
---@field last_cooldown table
---@field dead_at number --combat time when the player died
---@field spec number
---update a row in an instance (window) showing death logs
---@param morte table
---@param deathTable table
---@param whichRowLine number
---@param rankPosition number
---@param instance table
function atributo_misc:UpdateDeathRow(morte, whichRowLine, rankPosition, instance) --todo: change this function name
morte["dead"] = true
local thisRow = instance.barras[whichRowLine]
---@param instanceObject table
function atributo_misc:UpdateDeathRow(deathTable, whichRowLine, rankPosition, instanceObject) --todo: change this function name
local playerName, playerClass, deathTime, deathCombatTime, deathTimeString, playerMaxHealth, deathEvents, lastCooldown, spec = Details:UnpackDeathTable(deathTable)
deathTable["dead"] = true
local thisRow = instanceObject.barras[whichRowLine]
if (not thisRow) then
print("DEBUG: problema com <instancia.esta_barra> "..whichRowLine.." "..rankPosition)
return
end
thisRow.minha_tabela = morte
thisRow.minha_tabela = deathTable
morte.nome = morte[3] --void an issue while resizing the window
morte.minha_barra = whichRowLine
deathTable.nome = playerName
deathTable.minha_barra = whichRowLine
thisRow.colocacao = rankPosition
if (not getmetatable(morte)) then
setmetatable(morte, {__call = RefreshBarraMorte})
morte._custom = true
if (not getmetatable(deathTable)) then
setmetatable(deathTable, {__call = RefreshBarraMorte})
deathTable._custom = true
end
local bUseCustomLeftText = instanceObject.row_info.textL_enable_custom_text
local actorObject = instanceObject:GetCombat():GetContainer(DETAILS_ATTRIBUTE_MISC):GetActor(playerName)
if (actorObject) then
actorObject:SetBarLeftText(thisRow, instanceObject, false, false, false, bUseCustomLeftText)
else
Details:SetBarLeftText(thisRow, instanceObject, false, false, false, bUseCustomLeftText)
end
if (instanceObject.row_info.textL_class_colors) then
local textColor_Red, textColor_Green, textColor_Blue = actorObject:GetTextColor(instanceObject, "left")
thisRow.lineText1:SetTextColor(textColor_Red, textColor_Green, textColor_Blue) --the r, g, b color passed are the color used on the bar, so if the bar is not using class color, the text is painted with the fixed color for the bar
end
if (instanceObject.row_info.textR_class_colors) then
local textColor_Red, textColor_Green, textColor_Blue = actorObject:GetTextColor(instanceObject, "right")
thisRow.lineText4:SetTextColor(textColor_Red, textColor_Green, textColor_Blue) --the r, g, b color passed are the color used on the bar, so if the bar is not using class color, the text is painted with the fixed color for the bar
end
thisRow.lineText1:SetText(rankPosition .. ". " .. morte[3]:gsub(("%-.*"), ""))
thisRow.lineText2:SetText("")
thisRow.lineText3:SetText("")
thisRow.lineText4:SetText(morte[6])
thisRow.lineText4:SetText(deathTimeString)
local r, g, b, a = actorObject:GetBarColor()
actorObject:SetBarColors(thisRow, instanceObject, r, g, b, a)
thisRow:SetValue(100)
if (thisRow.hidden or thisRow.fading_in or thisRow.faded) then
Details.FadeHandler.Fader(thisRow, "out")
end
--seta a cor da barra e a cor do texto caso eles esteja mostrando com a cor da classe
local r, g, b, a = unpack(_detalhes.class_colors[morte[4]])
_detalhes:SetBarColors(thisRow, instance, r, g, b, a)
if (instance.row_info.use_spec_icons) then
local nome = morte[3]
local spec = instance.showing (1, nome) and instance.showing (1, nome).spec or (instance.showing (2, nome) and instance.showing (2, nome).spec)
if (instanceObject.row_info.use_spec_icons) then
local nome = deathTable[3]
local spec = instanceObject.showing (1, nome) and instanceObject.showing (1, nome).spec or (instanceObject.showing (2, nome) and instanceObject.showing (2, nome).spec)
if (spec and spec ~= 0) then
thisRow.icone_classe:SetTexture(instance.row_info.spec_file)
thisRow.icone_classe:SetTexture(instanceObject.row_info.spec_file)
thisRow.icone_classe:SetTexCoord(unpack(_detalhes.class_specs_coords[spec]))
else
if (CLASS_ICON_TCOORDS [morte[4]]) then
thisRow.icone_classe:SetTexture(instance.row_info.icon_file)
thisRow.icone_classe:SetTexCoord(unpack(CLASS_ICON_TCOORDS [morte[4]]))
if (CLASS_ICON_TCOORDS [deathTable[4]]) then
thisRow.icone_classe:SetTexture(instanceObject.row_info.icon_file)
thisRow.icone_classe:SetTexCoord(unpack(CLASS_ICON_TCOORDS [deathTable[4]]))
else
local texture, l, r, t, b = Details:GetUnknownClassIcon()
thisRow.icone_classe:SetTexture(texture)
@@ -630,9 +660,9 @@ function atributo_misc:UpdateDeathRow(morte, whichRowLine, rankPosition, instanc
end
end
else
if (CLASS_ICON_TCOORDS [morte[4]]) then
thisRow.icone_classe:SetTexture(instance.row_info.icon_file)
thisRow.icone_classe:SetTexCoord(unpack(CLASS_ICON_TCOORDS [morte[4]]))
if (CLASS_ICON_TCOORDS [deathTable[4]]) then
thisRow.icone_classe:SetTexture(instanceObject.row_info.icon_file)
thisRow.icone_classe:SetTexCoord(unpack(CLASS_ICON_TCOORDS [deathTable[4]]))
else
local texture, l, r, t, b = Details:GetUnknownClassIcon()
thisRow.icone_classe:SetTexture(texture)
@@ -642,8 +672,8 @@ function atributo_misc:UpdateDeathRow(morte, whichRowLine, rankPosition, instanc
thisRow.icone_classe:SetVertexColor(1, 1, 1)
if (thisRow.mouse_over and not instance.baseframe.isMoving) then --precisa atualizar o tooltip
gump:UpdateTooltip (whichRowLine, thisRow, instance)
if (thisRow.mouse_over and not instanceObject.baseframe.isMoving) then --precisa atualizar o tooltip
gump:UpdateTooltip (whichRowLine, thisRow, instanceObject)
end
thisRow.lineText1:SetSize(thisRow:GetWidth() - thisRow.lineText4:GetStringWidth() - 20, 15)