Mercurial > wow > reaction
diff classes/VehicleExitButton.lua @ 234:0e20f65375d5
Reworked button creation to not use goofy event driven semantics.
author | Flick |
---|---|
date | Tue, 22 Mar 2011 17:05:51 -0700 |
parents | 158c9299185b |
children |
line wrap: on
line diff
--- a/classes/VehicleExitButton.lua Tue Mar 22 11:48:09 2011 -0700 +++ b/classes/VehicleExitButton.lua Tue Mar 22 17:05:51 2011 -0700 @@ -28,7 +28,7 @@ ReAction.Button.VehicleExit = VExitButton ReAction:RegisterBarType(VExitButton) -function VExitButton:New( idx, config, bar ) +function VExitButton:New( config, bar, idx ) local name = format("ReAction_%s_VehicleExit_%d",bar:GetName(),idx) self = Super.New(self, name, config, bar, idx, "SecureFrameTemplate, ActionButtonTemplate", "Button") @@ -61,6 +61,11 @@ return self end +function VExitButton:SetupBar(bar) + Super.SetupBar(self,bar) + self:UpdateRegistration(bar) +end + function VExitButton:GetActionID() return 1 end @@ -80,3 +85,24 @@ function VExitButton:UPDATE_BINDINGS() self:UpdateHotkey() end + +function VExitButton:UpdateRegistration(bar) + -- auto show/hide when on a vehicle + local config = bar:GetConfig() + local f = bar:GetFrame() + if config.withControls then + if bar.vehicleExitStateRegistered then + UnregisterStateDriver(f, "unitexists") + bar.vehicleExitStateRegistered = false + end + bar:RegisterUnitWatch("vehicle",true) + else + bar:RegisterUnitWatch("vehicle",false) + if not bar.vehicleExitStateRegistered then + f:SetAttribute("unit","vehicle") + RegisterStateDriver(f, "unitexists", "[target=vehicle,exists,novehicleui] show; hide") -- spoof onstate-unitexists + bar.vehicleExitStateRegistered = true + end + end +end +