# HG changeset patch # User Flick # Date 1246297396 0 # Node ID 799c6ea9da7bc9cb5b724d5f0e5428d950f4cb61 # Parent d2f289c3bae632137ce513ad04b398cf2078efdf added vehicle exit floater some fixes for vehicle exit button on main bars still some lingering settexcoords issues on the vehicle exit icon diff -r d2f289c3bae6 -r 799c6ea9da7b classes/ActionButton.lua --- a/classes/ActionButton.lua Sat Jun 13 00:13:52 2009 +0000 +++ b/classes/ActionButton.lua Mon Jun 29 17:43:16 2009 +0000 @@ -259,13 +259,19 @@ function Action:InstallVehicle() local f = self:GetFrame() if self.idx == 7 and self:GetBarConfig().vehicle then - -- install vehicle-exit button on 7th button (only) - f:SetAttribute("_childupdate-vehicle", _childupdate_vehicleExit) - f:SetAttribute("macrotext","/run VehicleExit()") - self:GetBar():GetFrame().ShowVehicleExit = function(bar,show) - self:ShowVehicleExit(show) + if not self.vehicleInstalled then + self.vehicleInstalled = true + -- install vehicle-exit button on 7th button (only) + f:SetAttribute("_childupdate-vehicle", _childupdate_vehicleExit) + f:SetAttribute("macrotext","/run VehicleExit()") + self:GetBar():GetFrame().ShowVehicleExit = function(bar,show) + self:ShowVehicleExit(show) + end end - else + -- setscale blows away tex coords + self:UpdateIcon() + elseif self.vehicleInstalled then + self.vehicleInstalled = false f:SetAttribute("_childupdate-vehicle",nil) f:SetAttribute("macrotext",nil) end @@ -375,7 +381,7 @@ if self.vehicleExitMode then texture = "Interface\\Vehicles\\UI-Vehicles-Button-Exit-Up" icon:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375) - icon:SetVertexColor(1,0,0) + icon:SetVertexColor(1,1,1) else icon:SetTexCoord(0,1,0,1) end @@ -389,11 +395,7 @@ icon:Hide() self.frames.cooldown:Hide() self.rangeTimer = nil - if self.vehicleExitMode then - f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2") - else - f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot") - end + f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot") end end @@ -455,15 +457,34 @@ function Action:UpdateUsable() local isUsable, notEnoughMana = IsUsableAction(self.actionID) - if isUsable or self.vehicleExitMode then - self.frames.icon:SetVertexColor(1.0, 1.0, 1.0) - self.frames.normalTexture:SetVertexColor(1.0, 1.0, 1.0) + local noRange = IsActionInRange(self.actionID) == 0 + + isUsable = self.vehicleExitMode or (isUsable and not noRange) + + if isUsable then + if self.usableStatus ~= "usable" then + self.frames.icon:SetVertexColor(1.0, 1.0, 1.0) + self.frames.normalTexture:SetVertexColor(1.0, 1.0, 1.0) + self.usableStatus = "usable" + end + elseif noRange then + if self.usableStatus ~= "norange" then + self.frames.icon:SetVertexColor(1.0,0.1,0.1) + self.frames.normalTexture:SetVertexColor(1.0, 1.0, 1.0) + self.usableStatus = "norange" + end elseif notEnoughMana then - self.frames.icon:SetVertexColor(0.5, 0.5, 1.0) - self.frames.normalTexture:SetVertexColor(0.5, 0.5, 1.0) + if self.usableStatus ~= "oom" then + self.frames.icon:SetVertexColor(0.5, 0.5, 1.0) + self.frames.normalTexture:SetVertexColor(0.5, 0.5, 1.0) + self.usableStatus = "oom" + end else - self.frames.icon:SetVertexColor(0.4, 0.4, 0.4) - self.frames.normalTexture:SetVertexColor(1.0, 1.0, 1.0) + if self.usableStatus ~= "unusable" then + self.frames.icon:SetVertexColor(0.4, 0.4, 0.4) + self.frames.normalTexture:SetVertexColor(1.0, 1.0, 1.0) + self.usableStatus = "unusable" + end end end @@ -513,13 +534,7 @@ rangeTimer = rangeTimer - elapsed self.rangeTimer = rangeTimer if rangeTimer <= 0 then - if self.vehicleExitMode then - self.frames.icon:SetVertexColor(1,1,1) - elseif IsActionInRange(self.actionID) == 0 then - self.frames.icon:SetVertexColor(1.0,0.1,0.1) - else - self:UpdateUsable() - end + self:UpdateUsable() self.rangeTimer = TOOLTIP_UPDATE_TIME end end diff -r d2f289c3bae6 -r 799c6ea9da7b classes/Bar.lua --- a/classes/Bar.lua Sat Jun 13 00:13:52 2009 +0000 +++ b/classes/Bar.lua Mon Jun 29 17:43:16 2009 +0000 @@ -115,7 +115,7 @@ local _onstate_unitexists = -- function( self, stateid, newstate ) [[ - unithide = not newstate + unithide = not newstate or newstate == "hide" ]] .. _reaction_refresh local _onclick = -- function( self, button, down ) diff -r d2f289c3bae6 -r 799c6ea9da7b classes/VehicleExitButton.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/classes/VehicleExitButton.lua Mon Jun 29 17:43:16 2009 +0000 @@ -0,0 +1,64 @@ +local ReAction = ReAction +local format = string.format + +ReAction:UpdateRevision("$Revision: 154 $") + +-- +-- VExitButton Button class +-- +local Super = ReAction.Button +local VExitButton = setmetatable( { }, { __index = Super } ) +ReAction.Button.VehicleExit = VExitButton + +function VExitButton:New( idx, config, bar ) + local name = format("ReAction_%s_VehicleExit_%d",bar:GetName(),idx) + + self = Super.New(self, name, config, bar, idx, "SecureFrameTemplate, ActionButtonTemplate", "Button") + + -- frame setup + local f = self:GetFrame() + self.frames.icon:SetTexture("Interface\\Vehicles\\UI-Vehicles-Button-Exit-Up") + self.frames.icon:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375) + + -- attribute setup + -- (none) + + -- non secure scripts + f:SetScript("OnClick", VehicleExit) + f:SetScript("OnEnter", function(frame) GameTooltip_AddNewbieTip(frame, LEAVE_VEHICLE, 1.0, 1.0, 1.0, nil) end) + f:SetScript("OnLeave", GameTooltip_Hide) + f:SetScript("OnEvent", function(frame, evt, ...) self:OnEvent(evt,...) end) + + -- event registration + f:EnableMouse(true) + f:RegisterForClicks("AnyUp") + f:RegisterEvent("UPDATE_BINDINGS") + + -- attach to skinner + bar:SkinButton(self) + + self:Refresh() + self:UpdateHotkey() + + return self +end + +function VExitButton:GetActionID() + return 1 +end + +function VExitButton:Refresh() + Super.Refresh(self) + -- it seems that setscale kills the texcoord, have to refresh it + self.frames.icon:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375) +end + +function VExitButton:OnEvent(event, ...) + if self[event] then + self[event](self, event, ...) + end +end + +function VExitButton:UPDATE_BINDINGS() + self:UpdateHotkey() +end diff -r d2f289c3bae6 -r 799c6ea9da7b classes/classes.xml --- a/classes/classes.xml Sat Jun 13 00:13:52 2009 +0000 +++ b/classes/classes.xml Mon Jun 29 17:43:16 2009 +0000 @@ -10,5 +10,6 @@