chatbox=peripheral.wrap("right")
modNuit='off'
redstone.setOutput("back",false)
encours=false
config={
	debutNuit=19,
	finNuit=6,
	preTime={
		nuit=20,
		matin=5,
		soir=18,
		midi=12
	}
}
chatbox.say('Reboot',9999,false,'Gestion du temps')	

function calcul(debut,jusqua,letime)
	if debut>jusqua then
		print(letime..'>'..debut..' or '..letime..'<'..jusqua)
		return letime>debut or letime<jusqua  
	else 
		print(letime..'>'..debut..' and '..letime..'<'..jusqua)
		return letime>debut and letime<jusqua 
	end
end
function avanceTemps(jusqua,ignoreModNuit)
	-- securite une seul modification temporel
	if encours==false then
		encours=true
		
		-- Enregistrement du debut
		letime=os.time()
		debut=letime-0.1
					
		chatbox.say('avance du temps jusqu\'a '..jusqua,9999,false,'Gestion du temps')

		redstone.setOutput("back",true)
		while ( calcul(debut,jusqua,letime) and (ignoreModNuit or modNuit=='off') ) do		
			os.sleep(1)
			letime=os.time()
		end
		redstone.setOutput("back",false)
		encours=false
	else
		chatbox.say('Deja encours',9999,false,'Gestion du temps')	
	end
end


function gestionTemps()
	while true do
		if modNuit=='off' then
			letime=os.time()
			if letime>config.debutNuit or letime<config.finNuit then
				avanceTemps(config.finNuit,false)
			end
		end
		os.sleep(20)
	end
end
function gestionCommande()

	while true do
		local event, player, args = os.pullEvent("command")
		
		if args[1]=='nuit' then
			if args[2]=='on' then
				modNuit='on'
				chatbox.say('Mode nuit : on',9999,false,'Gestion du temps')	
			elseif args[2]=='off' then
				modNuit='off'
				chatbox.say('Mode nuit : off',9999,false,'Gestion du temps')	
			else
				if modNuit=='off' then
					chatbox.say('Mode nuit : off',9999,false,'Gestion du temps')	
				else
					chatbox.say('Mode nuit : on',9999,false,'Gestion du temps')	
				end
			end
		elseif args[1]=='time' then
			verChiffre=tonumber(args[2])
			if verChiffre==nil then
				if config.preTime[args[2]] then
					avanceTemps(config.preTime[args[2]],true)
				else
					liste=''
					table.foreach(config.preTime,function(nom,temp)
						liste=liste..' '..nom
					end)
					chatbox.say('Commande invalide, pre reglage : '..liste,9999,false,'Gestion du temps')	
				end
			else
				avanceTemps(verChiffre,true)			
			end			
		end
	end
end

parallel.waitForAll(gestionTemps,gestionCommande)