local ecran=peripheral.wrap("right")

sauvegarde=fs.open("ouvert","r")
local ouvert=sauvegarde.readAll()
sauvegarde.close()

function barre(pour)
	local maxX=math.ceil(pour*39)
	ecran.setBackgroundColor(colors.black)
	ecran.clear()
	local y=1
	while y<=5 do
		ecran.setCursorPos(1,y)
		ecran.setTextColor(colors.white)
		ecran.setBackgroundColor(colors.white)
		local i=1
		while i<=maxX do
			ecran.write("X")
			i=i+1
		end
		y=y+1
	end
end
function sleepDown(seconde,depart,total)
	local now=1
	while now<=seconde do
		os.sleep(1)
		depart=depart-1
		barre(depart/total)
		now=now+1
	end
end
function sleepUp(seconde,depart,total)
	local now=1
	while now<=seconde do
		os.sleep(1)
		depart=depart+1
		barre(depart/total)
		now=now+1
	end
end

rs.setOutput("top",true) -- ecluse (true stoper)
rs.setOutput("back",false) -- eponge (false ranger)
print("ouvert : "..ouvert)
if ouvert=="sec" then
	barre(1)
	rs.setOutput("left",false) -- porte sec 
	rs.setOutput("bottom",true) -- porte eau
	rs.setOutput("back",true)
	os.sleep(1)
	rs.setOutput("back",false)
else
	barre(0)
	rs.setOutput("left",true) -- porte sec 
	rs.setOutput("bottom",false) -- porte eau
end




function ouvrir() 
	barre(1)
	sleepDown(1,32,32)
	rs.setOutput("left",true) -- porte sec 
	sleepDown(2,31,32)
	rs.setOutput("top",false) -- ecluse (true stoper)
	sleepDown(28,29,32)
	rs.setOutput("top",true) -- ecluse (true stoper)
	sleepDown(1,1,32)
	rs.setOutput("bottom",false) -- porte eau
	sauvegarde=fs.open("ouvert","w")
	sauvegarde.write("eau")
	sauvegarde.close()
	ouvert="eau"
end
function fermer()
	barre(0)
	sleepUp(1,0,7)
	rs.setOutput("bottom",true) -- porte eau
	sleepUp(2,1,7)
	rs.setOutput("back",true) -- eponge (false ranger)
	sleepUp(2,3,7)
	rs.setOutput("back",false)
	sleepUp(1,5,7)
	rs.setOutput("left",false) -- porte sec 
	sleepUp(1,6,7)
	sauvegarde=fs.open("ouvert","w")
	sauvegarde.write("sec")
	sauvegarde.close()
	ouvert="sec"
end

function redEcoute()
	while true do
		local e, side, xp, yp= os.pullEvent("redstone")
		print("Ouvrir")
		if rs.getInput("front") then
			if ouvert=="sec" then
				ouvrir() 
			else
				fermer()
			end
		end
	end
end
function ecranEcoute()
	while true do
		local e, side, xp, yp= os.pullEvent("monitor_touch")
		print("Ouvrir")
		if ouvert=="sec" then
			ouvrir() 
		else
			fermer()
		end
	end
end
parallel.waitForAll(redEcoute,ecranEcoute)