
.namespace s09_c01

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

function Reset(playdialog)
situation = 0 --situation 0 :on a rien, situation 1:on tient quelquechose
valachg = 0 -- c'est la valeur que l'on échange d'un tableau a l'autre
i1 = 4 -- increment qui permet de parcourir le tab a rebours pour récuperer le disque du dessus 
i2 = 1 -- increment qui permet de parcourir le tab pour vérifier le premier emplacement disponible 0 dans le tableau.
basefrom = 0 -- var permettant de recuperer la base d'origine du disque que l'on vient de prendre
tab1 = {4,3,2,1}
tab2 = {0,0,0,0}
tab3 = {0,0,0,0}
tabgraph = {59,46,13,-4}-- tableau avec des données de placement graphique
gagne = 0
varg = 4
nbrdisque = 4
nbrcoupmini = 2^nbrdisque - 1 + 10
--nbrdecoupjoue.Text = "Vous avez joué 0 coups"
-- nbrminimal.Text = "Vous devez jouer "..nbrcoupmini.." coups au maximum"
nbrcoupjoue = 0
placejuste = 0
disque1.Position_X = base1.Position_X + tabgraph[1]
disque1.Position_Y = 409 - 73
disque2.Position_X = base1.Position_X + tabgraph[2]
disque2.Position_Y = 452 - 73
disque3.Position_X = base1.Position_X + tabgraph[3]
disque3.Position_Y = 475 - 73
disque4.Position_X = base1.Position_X + tabgraph[4]
disque4.Position_Y = 507 - 73
hanoi_label.Flags_Visible=false

resolve=false -- est ce que le resoudage(?) est en cours
seconds=0 
resolver = 0 -- permet de placer 
	if playdialog == true then
		SequencePlayer.PlaySequence("GP_905",self,nil)
	end

end


function OnUpdate()
	
	-- OPLog.Log("tab1 : "..tab1[1]..","..tab1[2]..","..tab1[3]..","..tab1[4])
	-- OPLog.Log("tab2 : "..tab2[1]..","..tab2[2]..","..tab2[3]..","..tab2[4])
	-- OPLog.Log("tab3 : "..tab3[1]..","..tab3[2]..","..tab3[3]..","..tab3[4])
	-- OPLog.Log("situation : "..situation)
	-- OPLog.Log("valeur à échanger : "..valachg)
	-- OPLog.Log("i1 : "..i1)
	-- OPLog.Log("gagne : "..gagne)
	-- OPLog.Log("d : "..deltatime)


	
	
	
	--condition de victoire
	
	if tab3[1] == 4 and tab3[2] == 3 and tab3[3] == 2 and tab3[4] == 1 and gagne==0 then --and nbrcoupjoue < nbrcoupmini then
		gagne=1
		Itsawin()
	end
	
	-- condition de defaite
	
	if nbrcoupjoue > nbrcoupmini and gagne==0 then
		Reset(true)
		PlaySoundEffect("int_closeupfail")
	end
	
	--Verifie le nombre de coup joué
	
	
	-- clic and drop
	if valachg==1 then
		Cursor.ChangeCursor(3)
		disque1.Position_X=Cursor.Position_X
		disque1.Position_Y=Cursor.Position_Y + 40
	elseif valachg==2 then
		Cursor.ChangeCursor(3)
		disque2.Position_X=Cursor.Position_X
		disque2.Position_Y=Cursor.Position_Y + 40
	elseif valachg==3 then
		Cursor.ChangeCursor(3)
		disque3.Position_X=Cursor.Position_X 
		disque3.Position_Y=Cursor.Position_Y + 40
	elseif valachg==4 then
		Cursor.ChangeCursor(3)
		disque4.Position_X=Cursor.Position_X
		disque4.Position_Y=Cursor.Position_Y + 40
	end
	--Résolution automatique du mini-jeu.
	
	if resolve == true then
		deltatime=OPTime.GetTime()-now
		now=OPTime.GetTime()
		seconds = seconds + deltatime
		-- OPLog.Log("s : "..seconds)
		-- OPLog.Log("r : "..resolver)
		if seconds > 0.5 then
			resolver = resolver + 1
			seconds = 0
		end
		if resolver > 0 then 
			if disque4.Position_Y ~= 507 - 73 then
				disque4.Position_Y = disque4.Position_Y + 1
			end
		end
		if resolver > 1 then 
			if disque3.Position_Y ~= 475 - 73 then
				disque3.Position_Y = disque3.Position_Y + 1
			end
		end
		if resolver > 2 then 
			if disque2.Position_Y ~= 452 - 73 then
				disque2.Position_Y = disque2.Position_Y + 1
			end
		end
		if resolver > 3 then 
			if disque1.Position_Y ~= 409 - 73 then
				disque1.Position_Y = disque1.Position_Y + 1
			elseif disque1.Position_Y == 409 - 73 then
				gagne=1
				resolve=false
				Itsawin()
			end
		end
	end
	
end

function OnEnter() 
	SequencePlayer.Enabled = true
	SequencePlayer.PlaySequence("GP_901",self,nil)
	--SearchInterface.Enabled = false	
	--SequencePlayer.Enabled = true
	-- interfaceclsp.Enabled = true
end

function Itsawin() 
	if gagne==1 then
		PlaySoundEffect("gmp_dring")
		NavigationManager.SwitchTo(nil,"s09_SearchSite")
		SampleLevel.Set("s09_sonnette","done")
	else
		resolve = true
		now=OPTime.GetTime()
		disque1.Position_X =  base3.Position_X + tabgraph[1]
		disque1.Position_Y = 175 - 73
		disque2.Position_X = base3.Position_X + tabgraph[2]
		disque2.Position_Y = 232 - 73
		disque3.Position_X = base3.Position_X + tabgraph[3]
		disque3.Position_Y = 268 - 73
		disque4.Position_X = base3.Position_X + tabgraph[4]
		disque4.Position_Y = 322 - 73
	end
end



function OnSequenceEnd(dialogue)
	if dialogue == "GP_901" then
		SequencePlayer.PlaySequence("AI_"..GetCurrentManager().Name,self,nil,"help")
		return true
	end
end