
.namespace s06_c01

function OnEnable()
	Closeup.OnEnable("MiniGame")
	Reset()
	gamestart=true
end

function Reset()
	-- SearchInterface.Enabled = false	
	posxini=236
	posyini=498
	grappin1.Position_X = posxini
	grappin1.Position_Y = posyini
	traj.Lifetime=0
	grappin1.Rotation=0
	fire=0
	y=0
	x=0
	v1=2 --puissance minimale
	v2=15-- puissance maximale
	v=v1
	a=0
	a1=0
	vo=0
	hol=0 -- hol= high or low 0=angle augmente 1= angle descend 
	holf=0 --identique à hol mais pour le scale de la fleche
	cond1 = 0 --condition d'entrée pour recuperer le temps de depart du mouvement de rotation de la fleche
	cond2 = 0 --condition d'entrée pour recuperer le temps de depart de la puissance
	cond3 = 1 --condition d'entrée pour recuperer le temps de depart de la trajectoire
	cond4 = 0 --condition pour lancer GP607 une fois.
	y1=0
	x1=0
	angle=0
	tempsquipasse3=0
	now=0
	switchto=0
end

function OnEnter() 
	--SearchInterface.Enabled = false	
	SequencePlayer.Enabled = true
	SequencePlayer.PlaySequence("GP_606",self,nil)
	
	
	--SequencePlayer.PlaySequence("GP_607",nil,nil) -- echec
	--equencePlayer.PlaySequence("GP_608",nil,nil) -- reussite
	--interfaceclsp.Enabled = true
end

function Itsawin()
	
	if switchto==0 then
		a1 = 32
		vo = 12
		fire = 2
	else
		PlaySoundEffect("int_closeupwin")
		fire=3
		NavigationManager.SwitchTo(nil,"s06_c02")
		-- interfaceclsp.Enabled = false
		switchto=1
	end	
end

function OnUpdate()
	
	deltatime=OPTime.GetTime()-now
	now=OPTime.GetTime()

	-- OPLog.Log("angle de depart : "..a1)
	-- OPLog.Log("vitesse initiale : "..vo)
	-- OPLog.Log("y : "..y)
	--OPLog.Log("y : "..tempsquipasse3)
	
	-- af1=GetFourCorner(arbre_feuille1)
	-- af2=GetFourCorner(arbre_feuille2)
	-- atronc=GetFourCorner(arbre_tronc)
	
	--trajectoire en fonction de la vitesse et de l'angle
	if  fire==2 then
		y =(-9.81*x^2)/(2*(vo^2)*(math.cos(math.rad(a1)))^2)+math.tan(math.rad(a1))*x
		x=x+(5*deltatime)
		x1=grappin1.Position_X
		y1=grappin1.Position_Y
		
		-- trajectoire du gamesprite
		grappin1.Position_X = grappin1.Position_X + x
		grappin1.Position_Y = grappin1.Position_Y - y
		
		-- angle du grappin dans la trajectoire
		angle=math.deg(math.atan((grappin1.Position_Y-y1)/(grappin1.Position_X-x1)))
		grappin1.Rotation = math.rad(angle)
		traj.Direction = math.rad(angle)
		traj.Lifetime=50 --durée de vie des particules
		if traj.Position_X > 400 then
			traj.CreationPerSec = 9
		else
			traj.CreationPerSec = 5
		end
		
	end
		
	if grappin1.Position_Y > 560 then
		x = 0
		y = 0
		grappin1.Rotation = 0
		if cond4 == 0 then
			cond4 = 1
		end
	end
	
	if cond4 == 1 then --fail
		SequencePlayer.PlaySequence("GP_607",self,nil)
		cond4 = 2
		PlaySoundEffect("int_closeupfail")
	end
	
	--affiche la trajectoire en particule
	traj.Position_X=grappin1.Position_X
	traj.Position_Y=grappin1.Position_Y + 22
	
	--cible 
	if  switchto==0 and (grappin1.Position_X + 50) > cible.Position_X and (grappin1.Position_X + 50) < (cible.Position_X + 54)  and (grappin1.Position_Y + 25) > cible.Position_Y and (grappin1.Position_Y + 25) < (cible.Position_Y + 156) then
		SequencePlayer.PlaySequence("GP_608",self,nil)
		x = 0
		y = 0
		grappin1.Rotation = 0
		fire = 3
		switchto=1
	end
	

	--Mouvement de la fleche de trajectoire
	
	fleche.Rotation = math.rad(-a)
	
	if cond1 == 0 then
		tempsdepart2 = OPTime.GetTime()
		cond1 = 1
	end
	
	tempsquipasse = now - tempsdepart2
	
	if fire==0 then
	grappin1.Rotation=math.rad(-a)
		if hol==0 and tempsquipasse > 0.05 then
			a=a+4
			cond1=0
			elseif hol==1 and tempsquipasse > 0.05 then
			a=a-4
			cond1=0
		end
	
		if a > 80 then
			hol=1
		end
	
		if a <= 10 then
			hol=0
		end
	end
	
	-- Mouvement de la puissance
	
	jauge.Scale_X=(180/(v2-v1))*v-((180*v1)/(v2-v1))+1
	
	if cond2 == 0 then
		tempsdepart3 = OPTime.GetTime()
		cond2 = 1
	end
	
	tempsquipasse2 = now - tempsdepart3
	
	if fire==1 then
			
		if holf==0 and tempsquipasse2 > 0.05 then
			v = v + 1
			cond2=0
		elseif holf==1 and tempsquipasse2 > 0.05 then
			v = v - 1
			cond2=0
		end
	
		if v >= v2 then
			holf=1
		end
	
		if v <= v1 then
			holf=0
		end
	end
	
end

function OnSequenceEnd(dialogue)
	if dialogue == "GP_606" then
		SequencePlayer.PlaySequence("AI_"..GetCurrentManager().Name,self,nil,"help")
		return true
	end
	
	if dialogue == "GP_607" then
		traj.Lifetime=0
		grappin1.Rotation=0
		grappin1.Position_X = posxini
		grappin1.Position_Y = posyini
		v = v1	--reinitialise la puissance
		fire=0
		a1=0
		vo=0
		x=0
		y=0
		cond3=0
		cond4=0
	end
	
	if dialogue == "GP_608" then
		Itsawin()

	end
end

