
--ca centraliser toutes les fonctions de type ,move,fade,soundfade ...
.namespace ProgessiveAction

--Script qui centralise le concept des faders et spritemover, et autres ??

CurrentAction={}
TIMER=0.015 --valeur que l'on peut changer aprés, selon la fluidité
g_timer = nil

function Act() --function spécifique à chaque script
	return
end

function CheckEnd()
	return false
end

function Finish()

end

function StartTimer()
    g_timer=GlobalFunctions.CreateTimerSystem(self.Name,TIMER,false,true,false, self)
    g_timer.Enabled=true
    g_timer.Start()
	self.CanTimeOut=true
end

--a appelé lors du lancement
function CheckTimer()
	if g_timer == nil then
		StartTimer()
	end
end

function OnUpdateUnit()

end

function OnUpdate(dt)
	self.CanTimeOut=true
	OnUpdateUnit(dt)
end

function OnTimeOut()
	if self.CanTimeOut then
		if CurrentAction==nil then
			OPLog.Log('erreur ! CurrentAction=nil '..self.Name)
		end
		if table.getn(CurrentAction) == 0 then
			OPUnitFactory.CloseUnit(g_timer)
			g_timer = nil
		end
		
		for u,action in pairs(CurrentAction) do
			if not CheckEnd(action) then
				newact = Act(action)
				if newact~=nil then
					CurrentAction[u] = newact
				end
			else
				table.remove(CurrentAction,u)
				Finish(action)
			end
		end
		self.CanTimeOut=false
	end
end
