comparison 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
comparison
equal deleted inserted replaced
233:9b9f5fc84d34 234:0e20f65375d5
26 { __index = Super } ) 26 { __index = Super } )
27 27
28 ReAction.Button.VehicleExit = VExitButton 28 ReAction.Button.VehicleExit = VExitButton
29 ReAction:RegisterBarType(VExitButton) 29 ReAction:RegisterBarType(VExitButton)
30 30
31 function VExitButton:New( idx, config, bar ) 31 function VExitButton:New( config, bar, idx )
32 local name = format("ReAction_%s_VehicleExit_%d",bar:GetName(),idx) 32 local name = format("ReAction_%s_VehicleExit_%d",bar:GetName(),idx)
33 33
34 self = Super.New(self, name, config, bar, idx, "SecureFrameTemplate, ActionButtonTemplate", "Button") 34 self = Super.New(self, name, config, bar, idx, "SecureFrameTemplate, ActionButtonTemplate", "Button")
35 35
36 -- frame setup 36 -- frame setup
59 self:UpdateHotkey() 59 self:UpdateHotkey()
60 60
61 return self 61 return self
62 end 62 end
63 63
64 function VExitButton:SetupBar(bar)
65 Super.SetupBar(self,bar)
66 self:UpdateRegistration(bar)
67 end
68
64 function VExitButton:GetActionID() 69 function VExitButton:GetActionID()
65 return 1 70 return 1
66 end 71 end
67 72
68 function VExitButton:Refresh() 73 function VExitButton:Refresh()
78 end 83 end
79 84
80 function VExitButton:UPDATE_BINDINGS() 85 function VExitButton:UPDATE_BINDINGS()
81 self:UpdateHotkey() 86 self:UpdateHotkey()
82 end 87 end
88
89 function VExitButton:UpdateRegistration(bar)
90 -- auto show/hide when on a vehicle
91 local config = bar:GetConfig()
92 local f = bar:GetFrame()
93 if config.withControls then
94 if bar.vehicleExitStateRegistered then
95 UnregisterStateDriver(f, "unitexists")
96 bar.vehicleExitStateRegistered = false
97 end
98 bar:RegisterUnitWatch("vehicle",true)
99 else
100 bar:RegisterUnitWatch("vehicle",false)
101 if not bar.vehicleExitStateRegistered then
102 f:SetAttribute("unit","vehicle")
103 RegisterStateDriver(f, "unitexists", "[target=vehicle,exists,novehicleui] show; hide") -- spoof onstate-unitexists
104 bar.vehicleExitStateRegistered = true
105 end
106 end
107 end
108