Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions CustomiseDialog/WidgetsConfiguration.lua
Original file line number Diff line number Diff line change
Expand Up @@ -547,9 +547,34 @@ addonTable.CustomiseDialog.WidgetsConfig = {
return details.color
end,
},
{
label = addonTable.Locales.HIDE_IN_COMBAT,
kind = "dropdown",
getInitData = function()
return {
addonTable.Locales.ALWAYS,
addonTable.Locales.NEVER,
}, {
"Always",
"Never",
}
end,
setter = function(details, value)
details.combatState = value
end,
getter = function(details)
return details.combatState or "Never"
end
},
},
},
},
["elite"] = {
{
label = addonTable.Locales.GENERAL,
entries = {},
},
},
["castIcon"] = {
{
label = addonTable.Locales.GENERAL,
Expand Down
6 changes: 5 additions & 1 deletion Display/CannotInterruptMarker.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---@class addonTablePlatynator
local addonTable = select(2, ...)

addonTable.Display.CannotInterruptMarkerMixin = {}
addonTable.Display.CannotInterruptMarkerMixin = CreateFromMixins(addonTable.Display.CombatVisibilityMixin)

function addonTable.Display.CannotInterruptMarkerMixin:SetUnit(unit)
self.unit = unit
Expand All @@ -17,6 +17,7 @@ function addonTable.Display.CannotInterruptMarkerMixin:SetUnit(unit)
self:RegisterUnitEvent("UNIT_SPELLCAST_INTERRUPTED", self.unit)
self:RegisterUnitEvent("UNIT_SPELLCAST_FAILED", self.unit)

self:RegisterCombatEvents()

self:ApplyCasting()
else
Expand Down Expand Up @@ -47,6 +48,9 @@ function addonTable.Display.CannotInterruptMarkerMixin:ApplyCasting()
else
self.marker:SetShown(notInterruptible)
end
if self:ShouldHideForCombat() then
self.marker:Hide()
end
else
self.marker:Hide()
end
Expand Down
18 changes: 17 additions & 1 deletion Display/CastIconMarker.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ local borderPool = CreateTexturePool(UIParent, "BACKGROUND", 0, nil, function(_,
tex:SetColorTexture(0, 0, 0)
end)

addonTable.Display.CastIconMarkerMixin = {}
addonTable.Display.CastIconMarkerMixin = CreateFromMixins(addonTable.Display.CombatVisibilityMixin)

function addonTable.Display.CastIconMarkerMixin:PostInit()
if self.details.square then
Expand Down Expand Up @@ -33,6 +33,8 @@ function addonTable.Display.CastIconMarkerMixin:SetUnit(unit)
self:RegisterUnitEvent("UNIT_SPELLCAST_INTERRUPTED", self.unit)
self:RegisterUnitEvent("UNIT_SPELLCAST_FAILED", self.unit)

self:RegisterCombatEvents()

self:ApplyCasting()
else
self:UnregisterAllEvents()
Expand All @@ -56,6 +58,12 @@ function addonTable.Display.CastIconMarkerMixin:OnEvent(eventName, ...)
if self.background then
self.background:Show()
end
if self:ShouldHideForCombat() then
self.marker:Hide()
if self.background then
self.background:Hide()
end
end
self.timer = C_Timer.NewTimer(0.8, function()
if self.interrupted then
self.interrupted = nil
Expand All @@ -65,6 +73,8 @@ function addonTable.Display.CastIconMarkerMixin:OnEvent(eventName, ...)
end
end
end)
elseif eventName == "PLAYER_REGEN_ENABLED" or eventName == "PLAYER_REGEN_DISABLED" then
self:ApplyCasting()
else
self:ApplyCasting()
end
Expand All @@ -82,6 +92,12 @@ function addonTable.Display.CastIconMarkerMixin:ApplyCasting()
if self.background then
self.background:Show()
end
if self:ShouldHideForCombat() then
self.marker:Hide()
if self.background then
self.background:Hide()
end
end
elseif not self.interrupted then
self.marker:Hide()
if self.background then
Expand Down
39 changes: 28 additions & 11 deletions Display/EliteMarker.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---@class addonTablePlatynator
local addonTable = select(2, ...)

addonTable.Display.EliteMarkerMixin = {}
addonTable.Display.EliteMarkerMixin = CreateFromMixins(addonTable.Display.CombatVisibilityMixin)

function addonTable.Display.EliteMarkerMixin:PostInit()
local markerDetails = addonTable.Assets.Markers[self.details.asset]
Expand All @@ -15,24 +15,41 @@ function addonTable.Display.EliteMarkerMixin:PostInit()
end
end

function addonTable.Display.EliteMarkerMixin:Update()
local classification = UnitClassification(self.unit)
if classification == "elite" or classification == "worldboss" then
self.marker:Show()
self.marker:SetTexture(self.eliteTexture)
elseif classification == "rareelite" then
self.marker:Show()
self.marker:SetTexture(self.rareEliteTexture)
else
self.marker:Hide()
return
end

if self:ShouldHideForCombat() then
self.marker:Hide()
end
end

function addonTable.Display.EliteMarkerMixin:SetUnit(unit)
self.unit = unit
self:UnregisterAllEvents()
if self.unit then
local classification = UnitClassification(self.unit)
if classification == "elite" or classification == "worldboss" then
self.marker:Show()
self.marker:SetTexture(self.eliteTexture)
elseif classification == "rareelite" then
self.marker:Show()
self.marker:SetTexture(self.rareEliteTexture)
else
self.marker:Hide()
end
self:RegisterCombatEvents()
self:Update()
else
self:Strip()
end
end

function addonTable.Display.EliteMarkerMixin:OnEvent(event)
if event == "PLAYER_REGEN_ENABLED" or event == "PLAYER_REGEN_DISABLED" then
self:Update()
end
end

function addonTable.Display.EliteMarkerMixin:Strip()
self:UnregisterAllEvents()
end
6 changes: 5 additions & 1 deletion Display/PvPMarker.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---@class addonTablePlatynator
local addonTable = select(2, ...)

addonTable.Display.PvPMarkerMixin = {}
addonTable.Display.PvPMarkerMixin = CreateFromMixins(addonTable.Display.CombatVisibilityMixin)

function addonTable.Display.PvPMarkerMixin:SetUnit(unit)
self.unit = unit
if self.unit and addonTable.Constants.IsRetail then
self:RegisterUnitEvent("UNIT_CLASSIFICATION_CHANGED", self.unit)
self:RegisterCombatEvents()

self.showClassification = C_PvP.IsPVPMap()

Expand Down Expand Up @@ -53,6 +54,9 @@ function addonTable.Display.PvPMarkerMixin:Update()
if atlas then
self.marker:Show()
self.marker:SetAtlas(atlas)
if self:ShouldHideForCombat() then
self.marker:Hide()
end
else
self.marker:Hide()
end
Expand Down
12 changes: 10 additions & 2 deletions Display/QuestMarker.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---@class addonTablePlatynator
local addonTable = select(2, ...)

addonTable.Display.QuestMarkerMixin = {}
addonTable.Display.QuestMarkerMixin = CreateFromMixins(addonTable.Display.CombatVisibilityMixin)

function addonTable.Display.QuestMarkerMixin:SetUnit(unit)
self.unit = unit
if self.unit then
self:RegisterEvent("QUEST_LOG_UPDATE")
self:RegisterCombatEvents()
self:UpdateMarker()
else
self:Strip()
Expand All @@ -19,8 +20,15 @@ end

function addonTable.Display.QuestMarkerMixin:UpdateMarker()
self.marker:SetShown(C_QuestLog.UnitIsRelatedToActiveQuest and C_QuestLog.UnitIsRelatedToActiveQuest(self.unit))
if self:ShouldHideForCombat() then
self.marker:Hide()
end
end

function addonTable.Display.QuestMarkerMixin:OnEvent(eventName, ...)
self:UpdateMarker()
if eventName == "PLAYER_REGEN_ENABLED" or eventName == "PLAYER_REGEN_DISABLED" then
self:UpdateMarker()
else
self:UpdateMarker()
end
end
14 changes: 11 additions & 3 deletions Display/RaidMarker.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---@class addonTablePlatynator
local addonTable = select(2, ...)

addonTable.Display.RaidMarkerMixin = {}
addonTable.Display.RaidMarkerMixin = CreateFromMixins(addonTable.Display.CombatVisibilityMixin)

function addonTable.Display.RaidMarkerMixin:SetUnit(unit)
self.unit = unit
if self.unit then
self:RegisterEvent("RAID_TARGET_UPDATE")
self:RegisterCombatEvents()
self:UpdateMarker()
else
self:Strip()
Expand All @@ -18,8 +19,12 @@ function addonTable.Display.RaidMarkerMixin:Strip()
self.marker:SetTexCoord(0, 1, 0, 1)
end

function addonTable.Display.RaidMarkerMixin:OnEvent()
self:UpdateMarker()
function addonTable.Display.RaidMarkerMixin:OnEvent(eventName)
if eventName == "PLAYER_REGEN_ENABLED" or eventName == "PLAYER_REGEN_DISABLED" then
self:UpdateMarker()
else
self:UpdateMarker()
end
end

local fontString = UIParent:CreateFontString(nil, nil, "GameFontNormal")
Expand All @@ -29,6 +34,9 @@ function addonTable.Display.RaidMarkerMixin:UpdateMarker()
if type(index) ~= "nil" then
self.marker:Show()
SetRaidTargetIconTexture(self.marker, index)
if self:ShouldHideForCombat() then
self.marker:Hide()
end
else
self.marker:Hide()
end
Expand Down
27 changes: 21 additions & 6 deletions Display/RareMarker.lua
Original file line number Diff line number Diff line change
@@ -1,19 +1,34 @@
---@class addonTablePlatynator
local addonTable = select(2, ...)

addonTable.Display.RareMarkerMixin = {}
addonTable.Display.RareMarkerMixin = CreateFromMixins(addonTable.Display.CombatVisibilityMixin)

function addonTable.Display.RareMarkerMixin:SetUnit(unit)
self.unit = unit
self:UnregisterAllEvents()
if self.unit then
local classification = UnitClassification(self.unit)
if classification == "rare" then
self.marker:Show()
else
self:RegisterCombatEvents()
self:Update()
else
self:Strip()
end
end

function addonTable.Display.RareMarkerMixin:OnEvent(eventName)
if eventName == "PLAYER_REGEN_ENABLED" or eventName == "PLAYER_REGEN_DISABLED" then
self:Update()
end
end

function addonTable.Display.RareMarkerMixin:Update()
local classification = UnitClassification(self.unit)
if classification == "rare" then
self.marker:Show()
if self:ShouldHideForCombat() then
self.marker:Hide()
end
else
self:Strip()
self.marker:Hide()
end
end

Expand Down
17 changes: 17 additions & 0 deletions Display/Utilities.lua
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,20 @@ function addonTable.Display.Utilities.IsInRelevantInstance()
local _, instanceType = GetInstanceInfo()
return instanceType == "raid" or instanceType == "party" or instanceType == "arenas"
end

addonTable.Display.CombatVisibilityMixin = {}

function addonTable.Display.CombatVisibilityMixin:RegisterCombatEvents()
if self.details.combatState and self.details.combatState ~= "Never" then
self:RegisterEvent("PLAYER_REGEN_DISABLED")
self:RegisterEvent("PLAYER_REGEN_ENABLED")
end
end

function addonTable.Display.CombatVisibilityMixin:ShouldHideForCombat()
local inCombat = UnitAffectingCombat("player")
if self.details.combatState == "Always" and inCombat then
return true
end
return false
end
4 changes: 4 additions & 0 deletions Locales.lua
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,10 @@ L["IMPORTANT_CAST"] = "Important Cast"
L["INTERRUPTED_CAST"] = "Interrupted cast"
L["UNINTERRUPTABLE"] = "Uninterruptable"

L["HIDE_IN_COMBAT"] = "Hide in combat"
L["ALWAYS"] = "Always"
L["NEVER"] = "Never"

L["WHAT_TO_EXPORT"] = "What to export?"
L["STYLE"] = "Style"
L["PROFILE"] = "Profile"
Expand Down