annotate VehicleExitButton.lua @ 279:5b9c0164a491

Fixed a number of problems with drag corners in config mode - Fixed button resizing via dragging not updating until a reload - Fixed pet/stance/vehicle buttons not always displaying in config mode - Fixed error spam when making too many pet/bag buttons
author Flick
date Wed, 11 May 2011 16:19:17 -0700
parents 4e325f1ea6e1
children e337b39dc491
rev   line source
Flick@276 1 local _, ns = ...
Flick@276 2 local ReAction = ns.ReAction
flickerstreak@218 3 local L = ReAction.L
flickerstreak@159 4 local format = string.format
flickerstreak@159 5
flickerstreak@159 6 --
flickerstreak@159 7 -- VExitButton Button class
flickerstreak@159 8 --
flickerstreak@218 9 local buttonTypeID = "VehicleExit"
flickerstreak@159 10 local Super = ReAction.Button
flickerstreak@218 11 local VExitButton = setmetatable(
flickerstreak@218 12 {
flickerstreak@218 13 defaultBarConfig = {
flickerstreak@218 14 type = buttonTypeID ,
flickerstreak@218 15 btnWidth = 36,
flickerstreak@218 16 btnHeight = 36,
flickerstreak@218 17 btnRows = 1,
flickerstreak@218 18 btnColumns = 1,
flickerstreak@222 19 spacing = 3,
flickerstreak@222 20 buttons = { }
flickerstreak@218 21 },
flickerstreak@218 22
flickerstreak@218 23 barType = L["Exit Vehicle Floater"],
Flick@231 24 buttonTypeID = buttonTypeID
flickerstreak@218 25 },
flickerstreak@218 26 { __index = Super } )
flickerstreak@223 27
flickerstreak@159 28 ReAction.Button.VehicleExit = VExitButton
flickerstreak@223 29 ReAction:RegisterBarType(VExitButton)
flickerstreak@159 30
Flick@234 31 function VExitButton:New( config, bar, idx )
Flick@277 32 self = Super.New(self, config, bar, idx, "SecureFrameTemplate, ActionButtonTemplate", "Button")
flickerstreak@159 33
flickerstreak@159 34 -- frame setup
flickerstreak@159 35 local f = self:GetFrame()
flickerstreak@159 36 self.frames.icon:SetTexture("Interface\\Vehicles\\UI-Vehicles-Button-Exit-Up")
flickerstreak@159 37 self.frames.icon:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375)
flickerstreak@159 38
flickerstreak@159 39 -- attribute setup
flickerstreak@159 40 -- (none)
flickerstreak@159 41
flickerstreak@159 42 -- non secure scripts
flickerstreak@159 43 f:SetScript("OnClick", VehicleExit)
flickerstreak@159 44 f:SetScript("OnEnter", function(frame) GameTooltip_AddNewbieTip(frame, LEAVE_VEHICLE, 1.0, 1.0, 1.0, nil) end)
flickerstreak@159 45 f:SetScript("OnLeave", GameTooltip_Hide)
flickerstreak@159 46 f:SetScript("OnEvent", function(frame, evt, ...) self:OnEvent(evt,...) end)
flickerstreak@159 47
flickerstreak@159 48 -- event registration
flickerstreak@159 49 f:RegisterEvent("UPDATE_BINDINGS")
flickerstreak@159 50
flickerstreak@159 51 -- attach to skinner
flickerstreak@159 52 bar:SkinButton(self)
flickerstreak@159 53
flickerstreak@159 54 self:Refresh()
flickerstreak@159 55 self:UpdateHotkey()
flickerstreak@159 56
flickerstreak@159 57 return self
flickerstreak@159 58 end
flickerstreak@159 59
Flick@234 60 function VExitButton:SetupBar(bar)
Flick@234 61 Super.SetupBar(self,bar)
Flick@234 62 self:UpdateRegistration(bar)
Flick@234 63 end
Flick@234 64
flickerstreak@159 65 function VExitButton:GetActionID()
flickerstreak@159 66 return 1
flickerstreak@159 67 end
flickerstreak@159 68
Flick@249 69 function VExitButton:AcquireActionID()
Flick@249 70 -- don't use pool
Flick@249 71 end
Flick@249 72
Flick@249 73 function VExitButton:ReleaseActionID()
Flick@249 74 -- don't use pool
Flick@249 75 end
Flick@249 76
flickerstreak@159 77 function VExitButton:Refresh()
flickerstreak@159 78 Super.Refresh(self)
flickerstreak@159 79 -- it seems that setscale kills the texcoord, have to refresh it
flickerstreak@159 80 self.frames.icon:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375)
flickerstreak@159 81 end
flickerstreak@159 82
flickerstreak@159 83 function VExitButton:OnEvent(event, ...)
flickerstreak@159 84 if self[event] then
flickerstreak@159 85 self[event](self, event, ...)
flickerstreak@159 86 end
flickerstreak@159 87 end
flickerstreak@159 88
flickerstreak@159 89 function VExitButton:UPDATE_BINDINGS()
flickerstreak@159 90 self:UpdateHotkey()
flickerstreak@159 91 end
Flick@234 92
Flick@234 93 function VExitButton:UpdateRegistration(bar)
Flick@234 94 -- auto show/hide when on a vehicle
Flick@234 95 local config = bar:GetConfig()
Flick@234 96 local f = bar:GetFrame()
Flick@279 97 if config.withControls or ReAction:GetConfigMode() then
Flick@234 98 if bar.vehicleExitStateRegistered then
Flick@234 99 UnregisterStateDriver(f, "unitexists")
Flick@234 100 bar.vehicleExitStateRegistered = false
Flick@234 101 end
Flick@279 102 bar:RegisterUnitWatch("vehicle",not ReAction:GetConfigMode())
Flick@234 103 else
Flick@234 104 bar:RegisterUnitWatch("vehicle",false)
Flick@234 105 if not bar.vehicleExitStateRegistered then
Flick@234 106 f:SetAttribute("unit","vehicle")
Flick@234 107 RegisterStateDriver(f, "unitexists", "[target=vehicle,exists,novehicleui] show; hide") -- spoof onstate-unitexists
Flick@234 108 bar.vehicleExitStateRegistered = true
Flick@234 109 end
Flick@234 110 end
Flick@234 111 end
Flick@234 112