improve visibility driver logic and API

This commit is contained in:
Hendrik Leppkes
2008-06-21 13:42:26 +00:00
parent 31cc52cbff
commit 4e23013c64
3 changed files with 54 additions and 41 deletions
+9 -15
View File
@@ -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)