Mercurial > wow > reaction
comparison classes/ActionButton.lua @ 145:42cade25d40d
Fixed display bugs with vehicle support
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Mon, 27 Apr 2009 18:10:04 +0000 |
parents | 0de0e64a970f |
children | 806a61b331a0 |
comparison
equal
deleted
inserted
replaced
144:e5b5f2aa48e2 | 145:42cade25d40d |
---|---|
44 [[ | 44 [[ |
45 local action = nil | 45 local action = nil |
46 if (doVehicle and mcVehicleState == "vehicle") or | 46 if (doVehicle and mcVehicleState == "vehicle") or |
47 (doMindControl and mcVehicleState == "mc") then | 47 (doMindControl and mcVehicleState == "mc") then |
48 local idx = self:GetAttribute("bar-idx") | 48 local idx = self:GetAttribute("bar-idx") |
49 if idx and idx <= 12 then | 49 local maxN = (doVehicle and mcVehicleState == "vehicle") and 7 or 12 |
50 if idx and idx <= maxN then | |
50 action = 120 + idx | 51 action = 120 + idx |
51 else | 52 else |
52 action = 0 | 53 action = 0 |
53 end | 54 end |
54 elseif page and state and page[state] then | 55 elseif page and state and page[state] then |
78 local _childupdate_vehicleExit = -- function(self, snippetid, message) | 79 local _childupdate_vehicleExit = -- function(self, snippetid, message) |
79 [[ | 80 [[ |
80 local show = (mcVehicleState == "vehicle") | 81 local show = (mcVehicleState == "vehicle") |
81 if show and doVehicle then | 82 if show and doVehicle then |
82 self:SetAttribute("type","macro") | 83 self:SetAttribute("type","macro") |
83 self:SetAttribute("macrotext","/run VehicleExit()") | |
84 self:Show() | 84 self:Show() |
85 else | 85 else |
86 self:SetAttribute("type","action") | 86 self:SetAttribute("type","action") |
87 end | 87 end |
88 control:CallMethod("ShowVehicleExit",show) | 88 control:CallMethod("ShowVehicleExit",show) |
227 function Action:Destroy() | 227 function Action:Destroy() |
228 local f = self:GetFrame() | 228 local f = self:GetFrame() |
229 local c = self:GetConfig() | 229 local c = self:GetConfig() |
230 | 230 |
231 f:SetAttribute("_childupdate-vehicle",nil) | 231 f:SetAttribute("_childupdate-vehicle",nil) |
232 f:SetAttribute("action",c.actionID) -- so that Destroy releases the right one | 232 f:SetAttribute("action",c.actionID) -- so that Super.Destroy releases the right one |
233 | 233 |
234 if c.pageactions and #c.pageactions > 1 then | 234 if c.pageactions and #c.pageactions > 1 then |
235 for i = 2, #c.pageactions do | 235 for i = 2, #c.pageactions do |
236 self:ReleaseActionID(c.pageactions[i]) | 236 self:ReleaseActionID(c.pageactions[i]) |
237 self:ReleaseActionID(id) | 237 self:ReleaseActionID(id) |
255 self:ShowGrid(not self:GetBarConfig().hideEmpty) | 255 self:ShowGrid(not self:GetBarConfig().hideEmpty) |
256 self:UpdateAction() | 256 self:UpdateAction() |
257 end | 257 end |
258 | 258 |
259 function Action:InstallVehicle() | 259 function Action:InstallVehicle() |
260 local f = self:GetFrame() | |
260 if self.idx == 7 and self:GetBarConfig().vehicle then | 261 if self.idx == 7 and self:GetBarConfig().vehicle then |
261 -- install vehicle-exit button on 7th button (only) | 262 -- install vehicle-exit button on 7th button (only) |
262 self:GetFrame():SetAttribute("_childupdate-vehicle", _childupdate_vehicleExit) | 263 f:SetAttribute("_childupdate-vehicle", _childupdate_vehicleExit) |
264 f:SetAttribute("macrotext","/run VehicleExit()") | |
263 self:GetBar():GetFrame().ShowVehicleExit = function(bar,show) | 265 self:GetBar():GetFrame().ShowVehicleExit = function(bar,show) |
264 self:ShowVehicleExit(show) | 266 self:ShowVehicleExit(show) |
265 end | 267 end |
266 else | 268 else |
267 self:GetFrame():SetAttribute("_childupdate-vehicle",nil) | 269 f:SetAttribute("_childupdate-vehicle",nil) |
270 f:SetAttribute("macrotext",nil) | |
268 end | 271 end |
269 end | 272 end |
270 | 273 |
271 function Action:ShowGrid( show ) | 274 function Action:ShowGrid( show ) |
272 if not InCombatLockdown() then | 275 if not InCombatLockdown() then |
366 local action = self.actionID | 369 local action = self.actionID |
367 local texture = GetActionTexture(action) | 370 local texture = GetActionTexture(action) |
368 local icon = self.frames.icon | 371 local icon = self.frames.icon |
369 local hotkey = self.frames.hotkey | 372 local hotkey = self.frames.hotkey |
370 local f = self:GetFrame() | 373 local f = self:GetFrame() |
374 | |
375 if self.vehicleExitMode then | |
376 texture = "Interface\\Vehicles\\UI-Vehicles-Button-Exit-Up" | |
377 icon:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375) | |
378 icon:SetVertexColor(1,0,0) | |
379 else | |
380 icon:SetTexCoord(0,1,0,1) | |
381 end | |
382 | |
371 if texture then | 383 if texture then |
372 icon:SetTexture(texture) | 384 icon:SetTexture(texture) |
373 icon:Show() | 385 icon:Show() |
374 self.rangeTimer = -1 | 386 self.rangeTimer = -1 |
375 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2") | 387 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2") |
376 else | 388 else |
377 icon:Hide() | 389 icon:Hide() |
378 self.frames.cooldown:Hide() | 390 self.frames.cooldown:Hide() |
379 self.rangeTimer = nil | 391 self.rangeTimer = nil |
380 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot") | 392 if self.vehicleExitMode then |
393 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2") | |
394 else | |
395 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot") | |
396 end | |
381 end | 397 end |
382 end | 398 end |
383 | 399 |
384 function Action:UpdateBorder() | 400 function Action:UpdateBorder() |
385 local action = self.actionID | 401 local action = self.actionID |
437 end | 453 end |
438 end | 454 end |
439 | 455 |
440 function Action:UpdateUsable() | 456 function Action:UpdateUsable() |
441 local isUsable, notEnoughMana = IsUsableAction(self.actionID) | 457 local isUsable, notEnoughMana = IsUsableAction(self.actionID) |
442 if isUsable then | 458 if isUsable or self.vehicleExitMode then |
443 self.frames.icon:SetVertexColor(1.0, 1.0, 1.0) | 459 self.frames.icon:SetVertexColor(1.0, 1.0, 1.0) |
444 self.frames.normalTexture:SetVertexColor(1.0, 1.0, 1.0) | 460 self.frames.normalTexture:SetVertexColor(1.0, 1.0, 1.0) |
445 elseif notEnoughMana then | 461 elseif notEnoughMana then |
446 self.frames.icon:SetVertexColor(0.5, 0.5, 1.0) | 462 self.frames.icon:SetVertexColor(0.5, 0.5, 1.0) |
447 self.frames.normalTexture:SetVertexColor(0.5, 0.5, 1.0) | 463 self.frames.normalTexture:SetVertexColor(0.5, 0.5, 1.0) |
495 local rangeTimer = self.rangeTimer | 511 local rangeTimer = self.rangeTimer |
496 if rangeTimer then | 512 if rangeTimer then |
497 rangeTimer = rangeTimer - elapsed | 513 rangeTimer = rangeTimer - elapsed |
498 self.rangeTimer = rangeTimer | 514 self.rangeTimer = rangeTimer |
499 if rangeTimer <= 0 then | 515 if rangeTimer <= 0 then |
500 if IsActionInRange(self.actionID) == 0 then | 516 if self.vehicleExitMode then |
517 self.frames.icon:SetVertexColor(1,1,1) | |
518 elseif IsActionInRange(self.actionID) == 0 then | |
501 self.frames.icon:SetVertexColor(1.0,0.1,0.1) | 519 self.frames.icon:SetVertexColor(1.0,0.1,0.1) |
502 else | 520 else |
503 self:UpdateUsable() | 521 self:UpdateUsable() |
504 end | 522 end |
505 self.rangeTimer = TOOLTIP_UPDATE_TIME | 523 self.rangeTimer = TOOLTIP_UPDATE_TIME |
584 doVehicle = self:GetAttribute("vehicle") | 602 doVehicle = self:GetAttribute("vehicle") |
585 control:ChildUpdate() | 603 control:ChildUpdate() |
586 ]]) | 604 ]]) |
587 | 605 |
588 f:SetAttribute("_onstate-mc", _onstate_mc) | 606 f:SetAttribute("_onstate-mc", _onstate_mc) |
589 RegisterStateDriver(f, "mc", "[target=vehicle,exists] vehicle; [bonusbar:5] mc; none") | 607 RegisterStateDriver(f, "mc", "[target=vehicle,exists,bonusbar:5] vehicle; [bonusbar:5] mc; none") |
590 | 608 |
591 f:SetAttribute("lockbuttons",config.lockButtons) | 609 f:SetAttribute("lockbuttons",config.lockButtons) |
592 f:SetAttribute("lockbuttonscombat",config.lockButtonsCombat) | 610 f:SetAttribute("lockbuttonscombat",config.lockButtonsCombat) |
593 f:Execute( | 611 f:Execute( |
594 [[ | 612 [[ |
609 ]]) | 627 ]]) |
610 end | 628 end |
611 | 629 |
612 | 630 |
613 function Action:ShowVehicleExit(show) | 631 function Action:ShowVehicleExit(show) |
614 local f = self:GetFrame() | 632 self.vehicleExitMode = show and self:GetBarConfig().vehicle |
615 local tx = f.vehicleExitTexture | 633 self:UpdateIcon() |
616 if show and self:GetBarConfig().vehicle then | |
617 if not tx then | |
618 tx = f:CreateTexture(nil,"ARTWORK") | |
619 tx:SetAllPoints() | |
620 -- copied from Blizzard/VehicleMenuBar.lua SkinsData | |
621 tx:SetTexture("Interface\\Vehicles\\UI-Vehicles-Button-Exit-Up") | |
622 tx:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375) | |
623 f.vehicleExitTexture = tx | |
624 end | |
625 tx:Show() | |
626 f.vehicleExitMode = true | |
627 elseif tx then | |
628 tx:SetTexCoord(0,1,0,1) | |
629 tx:Hide() | |
630 f.vehicleExitMode = false | |
631 end | |
632 end | 634 end |
633 | 635 |
634 function Action:OnEnter( ) | 636 function Action:OnEnter( ) |
635 self:SetTooltip() | 637 self:SetTooltip() |
636 end | 638 end |