from retail
This commit is contained in:
@@ -2828,10 +2828,17 @@ Private.event_prototypes = {
|
||||
store = true
|
||||
},
|
||||
{
|
||||
name = "extraSpellId",
|
||||
display = WeakAuras.newFeatureString .. L["Extra Spell Id"],
|
||||
init = "arg",
|
||||
enable = function(trigger)
|
||||
return trigger.subeventSuffix and (trigger.subeventSuffix == "_INTERRUPT" or trigger.subeventSuffix == "_DISPEL" or trigger.subeventSuffix == "_DISPEL_FAILED" or trigger.subeventSuffix == "_STOLEN" or trigger.subeventSuffix == "_AURA_BROKEN_SPELL")
|
||||
end
|
||||
}, -- extraSpellId ignored with SPELL_INTERRUPT
|
||||
end,
|
||||
type = "spell",
|
||||
showExactOption = false,
|
||||
store = true,
|
||||
conditionType = "number"
|
||||
},
|
||||
{
|
||||
name = "extraSpellName",
|
||||
display = L["Extra Spell Name"],
|
||||
|
||||
+111
-56
@@ -44,7 +44,12 @@ local properties = {
|
||||
softMax = 72,
|
||||
step = 1,
|
||||
default = 12
|
||||
}
|
||||
},
|
||||
displayText = {
|
||||
display = L["Text"],
|
||||
setter = "ChangeText",
|
||||
type = "string"
|
||||
},
|
||||
}
|
||||
|
||||
WeakAuras.regionPrototype.AddProperties(properties, default);
|
||||
@@ -172,8 +177,13 @@ local function modify(parent, region, data)
|
||||
end
|
||||
end
|
||||
|
||||
local UpdateText
|
||||
if Private.ContainsAnyPlaceHolders(data.displayText) then
|
||||
local containsCustomText = false
|
||||
if Private.ContainsCustomPlaceHolder(data.displayText) then
|
||||
containsCustomText = true
|
||||
end
|
||||
|
||||
local formatters
|
||||
do
|
||||
local getter = function(key, default)
|
||||
local fullKey = "displayText_format_" .. key
|
||||
if (data[fullKey] == nil) then
|
||||
@@ -181,67 +191,102 @@ local function modify(parent, region, data)
|
||||
end
|
||||
return data[fullKey]
|
||||
end
|
||||
local formatters = Private.CreateFormatters(data.displayText, getter)
|
||||
UpdateText = function()
|
||||
local textStr = data.displayText;
|
||||
textStr = Private.ReplacePlaceHolders(textStr, region, nil, false, formatters);
|
||||
if (textStr == nil or textStr == "") then
|
||||
textStr = " ";
|
||||
end
|
||||
|
||||
local texts = {}
|
||||
tinsert(texts, data.displayText)
|
||||
|
||||
if type(data.conditions) == "table" then
|
||||
for _, condition in ipairs(data.conditions) do
|
||||
if type(condition.changes) == "table" then
|
||||
for _, change in ipairs(condition.changes) do
|
||||
if type(change.property) == "string"
|
||||
and change.property == "displayText"
|
||||
and type(change.value) == "string"
|
||||
and Private.ContainsAnyPlaceHolders(change.value)
|
||||
then
|
||||
if not containsCustomText and Private.ContainsCustomPlaceHolder(change.value) then
|
||||
containsCustomText = true
|
||||
end
|
||||
tinsert(texts, change.value)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
formatters = Private.CreateFormatters(texts, getter)
|
||||
end
|
||||
|
||||
local customTextFunc = nil
|
||||
if containsCustomText and data.customText and data.customText ~= "" then
|
||||
customTextFunc = WeakAuras.LoadFunction("return "..data.customText)
|
||||
end
|
||||
|
||||
function region:ConfigureTextUpdate()
|
||||
local UpdateText
|
||||
if self.displayText and Private.ContainsAnyPlaceHolders(self.displayText) then
|
||||
UpdateText = function()
|
||||
local textStr = self.displayText;
|
||||
textStr = Private.ReplacePlaceHolders(textStr, self, nil, false, formatters);
|
||||
if (textStr == nil or textStr == "") then
|
||||
textStr = " ";
|
||||
end
|
||||
|
||||
SetText(textStr)
|
||||
end
|
||||
end
|
||||
|
||||
local Update
|
||||
if customTextFunc and self.displayText and Private.ContainsCustomPlaceHolder(self.displayText) then
|
||||
Update = function()
|
||||
self.values.custom = Private.RunCustomTextFunc(self, customTextFunc)
|
||||
UpdateText()
|
||||
end
|
||||
else
|
||||
Update = UpdateText or function() end
|
||||
end
|
||||
|
||||
local TimerTick
|
||||
if Private.ContainsPlaceHolders(self.displayText, "p") then
|
||||
TimerTick = UpdateText
|
||||
end
|
||||
|
||||
local FrameTick
|
||||
if customTextFunc and data.customTextUpdate == "update" then
|
||||
if Private.ContainsCustomPlaceHolder(self.displayText) then
|
||||
FrameTick = function()
|
||||
self.values.custom = Private.RunCustomTextFunc(self, customTextFunc)
|
||||
UpdateText()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
self.Update = Update
|
||||
self.FrameTick = FrameTick
|
||||
self.TimerTick = TimerTick
|
||||
|
||||
if not UpdateText then
|
||||
local textStr = self.displayText
|
||||
textStr = textStr:gsub("\\n", "\n");
|
||||
SetText(textStr)
|
||||
end
|
||||
end
|
||||
|
||||
local customTextFunc = nil
|
||||
if(Private.ContainsCustomPlaceHolder(data.displayText) and data.customText) then
|
||||
customTextFunc = WeakAuras.LoadFunction("return "..data.customText)
|
||||
end
|
||||
|
||||
local Update
|
||||
if customTextFunc then
|
||||
if UpdateText then
|
||||
Update = function()
|
||||
region.values.custom = Private.RunCustomTextFunc(region, customTextFunc)
|
||||
UpdateText()
|
||||
end
|
||||
function region:ConfigureSubscribers()
|
||||
if self.FrameTick then
|
||||
self.subRegionEvents:AddSubscriber("FrameTick", self)
|
||||
else
|
||||
self.subRegionEvents:RemoveSubscriber("FrameTick", self)
|
||||
end
|
||||
else
|
||||
Update = UpdateText or function() end
|
||||
end
|
||||
|
||||
local TimerTick
|
||||
if Private.ContainsPlaceHolders(data.displayText, "p") then
|
||||
TimerTick = UpdateText
|
||||
end
|
||||
|
||||
local FrameTick
|
||||
if customTextFunc and data.customTextUpdate == "update" then
|
||||
FrameTick = function()
|
||||
region.values.custom = Private.RunCustomTextFunc(region, customTextFunc)
|
||||
UpdateText()
|
||||
if self.TimerTick then
|
||||
self.subRegionEvents:AddSubscriber("TimerTick", self, true)
|
||||
else
|
||||
self.subRegionEvents:RemoveSubscriber("TimerTick", self)
|
||||
end
|
||||
if self.Update and self.state then
|
||||
self:Update()
|
||||
end
|
||||
end
|
||||
|
||||
region.Update = Update
|
||||
region.FrameTick = FrameTick
|
||||
region.TimerTick = TimerTick
|
||||
if TimerTick then
|
||||
region.subRegionEvents:AddSubscriber("TimerTick", region, true)
|
||||
else
|
||||
region.subRegionEvents:RemoveSubscriber("TimerTick", region)
|
||||
end
|
||||
|
||||
if FrameTick then
|
||||
region.subRegionEvents:AddSubscriber("FrameTick", region)
|
||||
else
|
||||
region.subRegionEvents:RemoveSubscriber("FrameTick", region)
|
||||
end
|
||||
|
||||
if not UpdateText then
|
||||
local textStr = data.displayText
|
||||
textStr = textStr:gsub("\\n", "\n");
|
||||
SetText(textStr)
|
||||
end
|
||||
|
||||
function region:Color(r, g, b, a)
|
||||
@@ -279,6 +324,16 @@ local function modify(parent, region, data)
|
||||
region.text:SetTextHeight(size)
|
||||
end
|
||||
|
||||
function region:ChangeText(msg)
|
||||
self.displayText = msg
|
||||
self:ConfigureTextUpdate()
|
||||
self:ConfigureSubscribers()
|
||||
end
|
||||
|
||||
region.displayText = data.displayText
|
||||
region:ConfigureTextUpdate()
|
||||
region:ConfigureSubscribers()
|
||||
|
||||
WeakAuras.regionPrototype.modifyFinish(parent, region, data);
|
||||
end
|
||||
|
||||
|
||||
+11
-2
@@ -4561,7 +4561,8 @@ end
|
||||
function Private.CreateFormatters(input, getter, withoutColor)
|
||||
local seenSymbols = {}
|
||||
local formatters = {}
|
||||
Private.ParseTextStr(input, function(symbol)
|
||||
|
||||
local parseFn = function(symbol)
|
||||
if not seenSymbols[symbol] then
|
||||
local _, sym = string.match(symbol, "(.+)%.(.+)")
|
||||
sym = sym or symbol
|
||||
@@ -4576,7 +4577,15 @@ function Private.CreateFormatters(input, getter, withoutColor)
|
||||
end
|
||||
end
|
||||
seenSymbols[symbol] = true
|
||||
end)
|
||||
end
|
||||
|
||||
if type(input) == "string" then
|
||||
Private.ParseTextStr(input, parseFn)
|
||||
elseif type(input) == "table" then
|
||||
for _, v in ipairs(input) do
|
||||
Private.ParseTextStr(v, parseFn)
|
||||
end
|
||||
end
|
||||
|
||||
return formatters
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user