improve visibility driver logic and API
This commit is contained in:
+9
-15
@@ -268,7 +268,9 @@ function module:CreateStanceMap()
|
||||
self.stancemap = defstancemap
|
||||
end
|
||||
|
||||
function ActionBar:UpdateStates(noHideDriver)
|
||||
function ActionBar:UpdateStates()
|
||||
if not self.buttons then return end
|
||||
self:InitVisibilityDriver()
|
||||
self.statebutton = {}
|
||||
if not module.stancemap and module.DefaultStanceMap[playerclass] then
|
||||
module.stancemap = module.DefaultStanceMap[playerclass]
|
||||
@@ -277,7 +279,7 @@ function ActionBar:UpdateStates(noHideDriver)
|
||||
self:AddButtonStates(i)
|
||||
end
|
||||
|
||||
local statedriver, hidedriver = {}, {}
|
||||
local statedriver = {}
|
||||
if self:GetStateOption("possess") then
|
||||
self:AddButtonStates(11)
|
||||
table_insert(statedriver, "[bonusbar:5]11")
|
||||
@@ -292,7 +294,7 @@ function ActionBar:UpdateStates(noHideDriver)
|
||||
local page = self:GetStateOption(v)
|
||||
if page and page ~= 0 then
|
||||
if page == -1 then
|
||||
table_insert(hidedriver, fmt("[modifier:%s]hide", v))
|
||||
self:RegisterVisibilityCondition(fmt("[modifier:%s]hide", v))
|
||||
else
|
||||
table_insert(statedriver, fmt("[modifier:%s]%s", v, page))
|
||||
end
|
||||
@@ -316,14 +318,14 @@ function ActionBar:UpdateStates(noHideDriver)
|
||||
local prowl = self:GetStanceState("prowl")
|
||||
if prowl then
|
||||
if prowl == -1 then
|
||||
table_insert(hidedriver, fmt("[bonusbar:%s,stealth:1]hide", v.index))
|
||||
self:RegisterVisibilityCondition(fmt("[bonusbar:%s,stealth:1]hide", v.index))
|
||||
else
|
||||
table_insert(statedriver, fmt("[bonusbar:%s,stealth:1]%s", v.index, prowl))
|
||||
end
|
||||
end
|
||||
end
|
||||
if state == -1 then
|
||||
table_insert(hidedriver, fmt("[bonusbar:%s]hide", v.index))
|
||||
self:RegisterVisibilityCondition(fmt("[bonusbar:%s]hide", v.index))
|
||||
else
|
||||
table_insert(statedriver, fmt("[bonusbar:%s]%s", v.index, state))
|
||||
end
|
||||
@@ -333,24 +335,16 @@ function ActionBar:UpdateStates(noHideDriver)
|
||||
end
|
||||
|
||||
table_insert(statedriver, tostring(self:GetDefaultState() or 0))
|
||||
table_insert(hidedriver, "show")
|
||||
|
||||
RegisterStateDriver(self, "page", table_concat(statedriver, ";"))
|
||||
self:SetAttribute("statemap-page", "$input")
|
||||
|
||||
if not noHideDriver then
|
||||
RegisterStateDriver(self, "visibility", table_concat(hidedriver, ";"))
|
||||
self:SetAttribute("statemap-visibility", "$input")
|
||||
self:SetAttribute("state-visibility", self:GetAttribute("state-visibility"))
|
||||
else
|
||||
UnregisterStateDriver(self, "visibility")
|
||||
self:Show()
|
||||
end
|
||||
|
||||
self:ApplyStateButton()
|
||||
|
||||
SecureStateHeader_Refresh(self)
|
||||
self:SetAttribute("state", self:GetAttribute("state-page"))
|
||||
|
||||
self:ApplyVisibilityDriver()
|
||||
end
|
||||
|
||||
function ActionBar:GetStanceState(stance)
|
||||
|
||||
Reference in New Issue
Block a user