comparison ObjectiveTracker/Block.lua @ 46:aa693607b813

Block - use Animation:IsPlaying() to determine whether a block should be ignored during cleanup; fixes abandoned quest ghosts
author Nenue
date Tue, 26 Apr 2016 15:05:38 -0400
parents dd1ae565f559
children
comparison
equal deleted inserted replaced
45:dd1ae565f559 46:aa693607b813
139 self.InfoBlock[index] = block 139 self.InfoBlock[index] = block
140 block.posIndex = tMove(free, used, block) 140 block.posIndex = tMove(free, used, block)
141 print(' |cFF00FF00('..source..')|r |cFF0088FF'..self.name..'|r.|cFF00FFBBusedBlocks['..block.posIndex..'] =|r', block:GetName()) 141 print(' |cFF00FF00('..source..')|r |cFF0088FF'..self.name..'|r.|cFF00FFBBusedBlocks['..block.posIndex..'] =|r', block:GetName())
142 end 142 end
143 143
144 block.blockFadeOut:SetScript('OnFinished', blockFadeOut_OnFinished) 144 block.blockFadeOut:SetScript('OnFinished', blockFadeOut_OnFinished)
145 block:SetScript('OnHide', function(self) 145 block:SetScript('OnHide', function(self)
146 fprint(self:GetName(), '|cFF00FF00HIDE|r', debugstack(1,3,1)) 146 fprint(self:GetName(), '|cFF00FF00HIDE|r', debugstack(1,3,1))
147 if(self.DebugTab:IsShown()) then 147 if(self.DebugTab:IsShown()) then
148 self.DebugTab:Hide() 148 self.DebugTab:Hide()
149 end 149 end
150 self.blockFadeOut:SetScript('OnFinished', blockFadeOut_OnFinished) 150 self.blockFadeOut:SetScript('OnFinished', blockFadeOut_OnFinished)
151 self.isAnimating = nil 151 end)
152 end)
153 print(' used/free: |cFFFFFF00' .. #self.usedBlocks .. '|r/|cFF00FFFF'..#self.freeBlocks ..'|r') 152 print(' used/free: |cFFFFFF00' .. #self.usedBlocks .. '|r/|cFF00FFFF'..#self.freeBlocks ..'|r')
154 return block 153 return block
155 end 154 end
156 155
157 --- begins a blockFadeOut animation and fires FreeBlock when that's done 156 --- begins a blockFadeOut animation and fires FreeBlock when that's done
158 function Default:ClearBlock (block) 157 function Default:ClearBlock (block)
159 -- double ensure multiple finish scripts from firing 158 if block.blockFadeOut:IsPlaying() then return end
160 if block.isAnimating then 159
161 return
162 end
163 block.isAnimating = true
164 block.blockFadeOut:SetScript('OnFinished', nil) 160 block.blockFadeOut:SetScript('OnFinished', nil)
165 block.blockFadeOut:SetScript('OnFinished', function(anim) 161 block.blockFadeOut:SetScript('OnFinished', function(anim)
166 --@debug@ 162 --@debug@
167 fprint(anim:GetName(), '|cFFFFFF00FINISHED|r', debugstack())--@end-debug@ 163 fprint(anim:GetName(), '|cFFFFFF00FINISHED|r', debugstack())--@end-debug@
168 anim:SetScript('OnFinished', blockFadeOut_OnFinished) 164 anim:SetScript('OnFinished', blockFadeOut_OnFinished)
169 self:FreeBlock(block) 165 self:FreeBlock(block)
170 block.isAnimating = nil
171 end) 166 end)
172 block.blockFadeOut:Play() 167 block.blockFadeOut:Play()
173 end 168 end
174 169
175 --- fired by OnFinished scripts; does the actual table swapping 170 --- fired by OnFinished scripts; does the actual table swapping