# HG changeset patch # User belphegorr # Date 1344547221 -10800 # Node ID 195f9cbd6df63077925cbfcd3f37b48fb38e63e3 # Parent 4802191f6a09a640de009af7c993c75c364c8c24 Modified Animate.lua: Modified event removal function to check if removed event is before current one, added optional parameter to RemoveEventFunc for optional checking of parameter list identicity. diff -r 4802191f6a09 -r 195f9cbd6df6 share/hedgewars/Data/Scripts/Animate.lua --- a/share/hedgewars/Data/Scripts/Animate.lua Thu Aug 02 05:52:56 2012 +0300 +++ b/share/hedgewars/Data/Scripts/Animate.lua Fri Aug 10 00:20:21 2012 +0300 @@ -1,5 +1,6 @@ local animPos, lastx, lasty, jumpTypes, jumpTimes, moveDirs, jumpStarted -local backJumped, jTimer, awTime, globalWait, stageEvents, seNum +local backJumped, jTimer, awTime, globalWait, stageEvents, seNum, curEvent +local needtoDecrease local AnimList, AnimListNum local FunctionList, FunctionListNum local skipFuncList @@ -63,6 +64,8 @@ globalWait = 0 stageEvents = {} seNum = 0 + curEvent = 0 + needToDecrease = 0 AnimList = {} AnimListNum = 0 FunctionList = {} @@ -339,13 +342,19 @@ if stageEvents[evNum] ~= nil then seNum = seNum - 1 table.remove(stageEvents, evNum) + if evNum < curEvent then + return true + end + end + if evNum < curEvent then + needToDecrease = needToDecrease + 1 end end -function RemoveEventFunc(cFunc) +function RemoveEventFunc(cFunc, cArgs) local i = 1 while i <= seNum do - if stageEvents[i].cFunc == cFunc then + if stageEvents[i].cFunc == cFunc and (cArgs == nil or cArgs == stageEvents[i].cArgs) then RemoveEvent(i) i = i - 1 end @@ -357,8 +366,13 @@ function CheckEvents() local i = 1 while i <= seNum do + curEvent = i if stageEvents[i].cFunc(unpack(stageEvents[i].cArgs)) then stageEvents[i].dFunc(unpack(stageEvents[i].dArgs)) + if needToDecrease > 0 then + i = i - needToDecrease + needToDecrease = 0 + end if stageEvents[i].evType ~= 1 then RemoveEvent(i) i = i - 1 @@ -366,6 +380,7 @@ end i = i + 1 end + curEvent = 0 end -------------------------------------Misc---------------------------------