Mercurial > wow > devian
comparison Dock.lua @ 58:0a9a6740ea5d v2.1
- Discarded use of blizzard functions never meant for the wild (http://forums.wowace.com/showthread.php?t=20397)
- Fixed dock buttons not highlighting properly
- Fixed dock buttons not dropping after selection change
- Mouse input is disabled during player movement
| author | Nenue |
|---|---|
| date | Tue, 12 Jan 2016 04:50:37 -0500 |
| parents | c3166f700438 |
| children | 516ceb31703d |
comparison
equal
deleted
inserted
replaced
| 57:0d2967941745 | 58:0a9a6740ea5d |
|---|---|
| 74 local b = (db[sign..'_alpha_on']-db[sign..'_alpha_off']) | 74 local b = (db[sign..'_alpha_on']-db[sign..'_alpha_off']) |
| 75 local dur = (a / b) * db[sign..'_fade_out'] | 75 local dur = (a / b) * db[sign..'_fade_out'] |
| 76 return dur, alph, db[sign..'_alpha_off'] | 76 return dur, alph, db[sign..'_alpha_off'] |
| 77 end | 77 end |
| 78 | 78 |
| 79 local function queueFade (self, duration, from, to) | |
| 80 self:SetAlpha(to) | |
| 81 end | |
| 82 | |
| 79 function D.UpdateBeacon(beacon) | 83 function D.UpdateBeacon(beacon) |
| 80 local db = D.db | 84 local db = D.db |
| 81 local isActive = (beacon.raised or beacon.selected) | 85 local isActive = (beacon.raised or beacon.selected or beacon.newMessage) |
| 82 if isActive then | 86 if isActive then |
| 83 UIFrameFadeIn(beacon, getFadeInArgs('dock_button', beacon)) | 87 --print(beacon:GetName(), 'active, fade in') |
| 88 queueFade(beacon, getFadeInArgs('dock_button', beacon)) | |
| 84 end | 89 end |
| 90 | |
| 85 if beacon.showName or isActive then | 91 if beacon.showName or isActive then |
| 86 UIFrameFadeIn(beacon.caption, getFadeInArgs('dock_button', beacon.caption)) | 92 --print(beacon:GetName(), 'show name, fade in name') |
| 93 queueFade(beacon.caption, getFadeInArgs('dock_button', beacon.caption)) | |
| 87 end | 94 end |
| 88 | 95 |
| 89 if not isActive then | 96 if not isActive then |
| 90 UIFrameFadeOut(beacon, getFadeOutArgs('dock_button', beacon)) | 97 queueFade(beacon, getFadeOutArgs('dock_button', beacon)) |
| 91 end | 98 end |
| 99 | |
| 92 if (not beacon.showName) and (not isActive) then | 100 if (not beacon.showName) and (not isActive) then |
| 93 UIFrameFadeOut(beacon.caption,getFadeOutArgs('dock_button', beacon.caption)) | 101 --print(beacon:GetName(), 'no name no active, fade out') |
| 102 queueFade(beacon.caption,getFadeOutArgs('dock_button', beacon.caption)) | |
| 94 end | 103 end |
| 95 end | 104 end |
| 96 | 105 |
| 97 --- Dock interactions | 106 local function FrameFade(frame) |
| 107 if not D.fader then | |
| 108 D.fader = CreateFrame('Frame', 'DevianFaderFrame', UIParent):CreateAnimationGroup('fader'):CreateAnimation('Alpha', 'FadeIn') | |
| 109 end | |
| 110 end | |
| 111 | |
| 112 --- Dock interaction framescript | |
| 98 function D.DockHighlight(beacon) | 113 function D.DockHighlight(beacon) |
| 99 db = D.db | 114 db = D.db |
| 100 local self = D.dock | 115 local self = D.dock |
| 101 local mouseOverDock | 116 local mouseOverDock = false |
| 102 if self:IsMouseOver() then | 117 if self:IsMouseOver() then |
| 103 mouseOverDock = true | 118 mouseOverDock = true |
| 104 end | 119 end |
| 105 | 120 |
| 106 if beacon and beacon:IsMouseOver() then | 121 if beacon then |
| 122 --print(beacon:GetName(), ' highlighter got beacon') | |
| 107 mouseOverDock = true | 123 mouseOverDock = true |
| 108 if not beacon.raised then | 124 if not beacon.raised then |
| 125 --print(beacon:GetName(), ' beacon not raised') | |
| 109 beacon.raised = true | 126 beacon.raised = true |
| 110 D.UpdateBeacon(beacon) | 127 D.UpdateBeacon(beacon) |
| 128 | |
| 129 -- IsMouseOver can still return false during its frame's OnEnter | |
| 130 beacon.inc = 0 | |
| 131 beacon:SetScript('OnUpdate', function(self) | |
| 132 if not self:IsMouseOver() then | |
| 133 self.inc = self.inc + 1 | |
| 134 --print(self:GetName(),self.inc) | |
| 135 if self.inc > 10 then | |
| 136 --print(self:GetName(), 'lost mouseover, terminating OnUpdate') | |
| 137 self.raised = nil | |
| 138 D.UpdateBeacon(self) | |
| 139 self:SetScript('OnUpdate', nil) | |
| 140 end | |
| 141 end | |
| 142 end) | |
| 111 end | 143 end |
| 112 elseif beacon.raised and beacon.index ~= db.current_channel then | 144 elseif beacon.raised and beacon.index ~= db.current_channel then |
| 113 beacon.raised = nil | 145 beacon.raised = nil |
| 114 D.UpdateBeacon(beacon) | 146 D.UpdateBeacon(beacon) |
| 147 --beacon:SetScript('OnUpdate', nil) | |
| 115 end | 148 end |
| 116 | 149 |
| 117 if mouseOverDock then | 150 if mouseOverDock then |
| 118 -- Raise it up | 151 -- Raise it up |
| 119 if not self.raised then | 152 if not self.raised then |
| 120 self.raised = true | 153 |
| 121 UIFrameFadeIn(self, getFadeInArgs('dock', self)) | 154 self.raised = true |
| 155 queueFade(self, getFadeInArgs('dock', self)) | |
| 122 end | 156 end |
| 123 elseif self.raised then | 157 elseif self.raised then |
| 124 -- Drop it down | 158 -- Drop it down |
| 125 self.raised = nil | 159 self.raised = nil |
| 126 UIFrameFadeOut(self, getFadeOutArgs('dock', self)) | 160 queueFade(self, getFadeOutArgs('dock', self)) |
| 161 for k, v in pairs(self.buttons) do | |
| 162 v.raised = nil | |
| 163 D.UpdateBeacon(v) | |
| 164 end | |
| 127 end | 165 end |
| 128 | 166 |
| 129 end | 167 end |
