local craftable={}
craftable[0]={
	nom='Eau',
	qte=3,
	recette={
		{nom="Canne a peche",qte=1,item="minecraft:fishing_rod",degat=0},
		{nom="Canne a sucre",qte=1,item="minecraft:reeds",degat=0},
		{nom="Poudre d'os",qte=1,item="minecraft:dye",degat=15},
		{nom="Lingot de manacier",qte=3,item="Botania:manaResource",degat=0}
	}
}
craftable[1]={
	nom='Feu',
	qte=3,
	recette={
		{nom="Verrue de nether",qte=1,item="minecraft:nether_wart",degat=0},
		{nom="Poudre a canon",qte=1,item="minecraft:gunpowder",degat=0},
		{nom="Brique du nether",qte=1,item="minecraft:netherbrick",degat=0},
		{nom="Lingot de manacier",qte=3,item="Botania:manaResource",degat=0}
	}
}
craftable[2]={
	nom='Terre',
	qte=3,
	recette={
		{nom="Champignon",qte=1,item="minecraft:brown_mushroom",degat=0},
		{nom="Roche",qte=1,item="minecraft:stone",degat=0},
		{nom="Block de charbon",qte=1,item="minecraft:coal_block",degat=0},
		{nom="Lingot de manacier",qte=3,item="Botania:manaResource",degat=0}
	}
}
craftable[3]={
	nom='Air',
	qte=3,
	recette={
		{nom="Tapis",qte=1,item="minecraft:carpet",degat=0},
		{nom="Plume",qte=1,item="minecraft:feather",degat=0},
		{nom="Ficelle",qte=1,item="minecraft:string",degat=0},
		{nom="Lingot de manacier",qte=3,item="Botania:manaResource",degat=0}
	}
}
craftable[4]={
	nom='Printemps',
	qte=1,
	recette={
		{nom="Pousse",qte=3,item="minecraft:sapling",degat=0},
		{nom="Ficelle",qte=1,item="minecraft:wheat",degat=0},
		{nom="Rune d'eau",qte=1,item="Botania:rune",degat=0},
		{nom="Rune de feu",qte=1,item="Botania:rune",degat=1}
	}
}
craftable[5]={
	nom='Ete',
	qte=1,
	recette={
		{nom="Pasteque",qte=1,item="minecraft:melon",degat=0},
		{nom="Boule de slim",qte=1,item="minecraft:slime_ball",degat=0},
		{nom="Sable",qte=2,item="minecraft:sand",degat=0},
		{nom="Rune de terre",qte=1,item="Botania:rune",degat=2},
		{nom="Rune d'air",qte=1,item="Botania:rune",degat=3}
	}
}
craftable[6]={
	nom='Automne',
	qte=1,
	recette={
		{nom="Oeil d'areignee",qte=1,item="minecraft:spider_eye",degat=0},
		{nom="Feuilles de chene",qte=3,item="minecraft:leaves",degat=0},
		{nom="Rune de feu",qte=1,item="Botania:rune",degat=1},
		{nom="Rune d'air",qte=1,item="Botania:rune",degat=3}
	}
}
craftable[7]={
	nom='Hiver',
	qte=1,
	recette={
		{nom="Gateau",qte=1,item="minecraft:cake",degat=0},
		{nom="Laine blanche",qte=1,item="minecraft:wool",degat=0},
		{nom="Neige",qte=2,item="minecraft:snow",degat=0},
		{nom="Rune de terre",qte=1,item="Botania:rune",degat=2},
		{nom="Rune d'eau",qte=1,item="Botania:rune",degat=0}
	}
}
craftable[8]={
	nom='Mana',
	qte=1,
	recette={
		{nom="Lingot de manacier",qte=5,item="Botania:manaResource",degat=0},
		{nom="Perle de mana",qte=1,item="Botania:manaResource",degat=1}
	}
}
craftable[9]={
	nom='Soif',
	qte=2,
	recette={
		{nom="Diamant de mana",qte=2,item="Botania:manaResource",degat=0},
		{nom="Rune d'air",qte=1,item="Botania:rune",degat=3},
		{nom="Rune de l'ete",qte=1,item="Botania:rune",degat=5}
	}
}
craftable[10]={
	nom='Gloutonnerie',
	qte=2,
	recette={
		{nom="Diamant de mana",qte=2,item="Botania:manaResource",degat=0},
		{nom="Rune de feu",qte=1,item="Botania:rune",degat=1},
		{nom="Rune de l'hiver",qte=1,item="Botania:rune",degat=7}
	}
}
craftable[11]={
	nom='Avidite',
	qte=2,
	recette={
		{nom="Diamant de mana",qte=2,item="Botania:manaResource",degat=0},
		{nom="Rune d'eau",qte=1,item="Botania:rune",degat=0},
		{nom="Rune de printemps",qte=1,item="Botania:rune",degat=4}
	}
}
craftable[12]={
	nom='Paresse',
	qte=2,
	recette={
		{nom="Diamant de mana",qte=2,item="Botania:manaResource",degat=0},
		{nom="Rune d'air",qte=1,item="Botania:rune",degat=3},
		{nom="Rune de l'automne",qte=1,item="Botania:rune",degat=6}
	}
}
craftable[13]={
	nom='Colere',
	qte=2,
	recette={
		{nom="Diamant de mana",qte=2,item="Botania:manaResource",degat=0},
		{nom="Rune de terre",qte=1,item="Botania:rune",degat=2},
		{nom="Rune de l'hiver",qte=1,item="Botania:rune",degat=7}
	}
}
craftable[14]={
	nom='Envie',
	qte=2,
	recette={
		{nom="Diamant de mana",qte=2,item="Botania:manaResource",degat=0},
		{nom="Rune d'eau",qte=1,item="Botania:rune",degat=0},
		{nom="Rune de l'hiver",qte=1,item="Botania:rune",degat=7}
	}
}
craftable[15]={
	nom='Fierte',
	qte=2,
	recette={
		{nom="Diamant de mana",qte=2,item="Botania:manaResource",degat=0},
		{nom="Rune de feu",qte=1,item="Botania:rune",degat=1},
		{nom="Rune de l'ete",qte=1,item="Botania:rune",degat=5}
	}
}

local ae2=peripheral.wrap("bottom")
local ecran=peripheral.wrap("back")
local itemsPourRune={}
local pileRune={}
local qte=0
local idRuneDmd=-1
local cursRune=-1
function centrage(text,larg)
	return math.floor((larg-string.len(text))/2)
end

function ecranInfo()
	ecran.setBackgroundColor(colors.white)
	ecran.clear()
	local y=1
	local cPR=2
	-- Affichage des runes à faire
	while pileRune[cPR] do
		y=y+1
		ecran.setCursorPos(4,y)
		ecran.setTextColor(colors.green);
		ecran.write('Rune '..craftable[pileRune[cPR-1].id].nom)
		cPR=cPR+1
	end
	y=y+2
	-- Affichage rune encour
	ecran.setCursorPos(4,y)	
	ecran.write(" rune "..craftable[pileRune[cPR-1].id].nom..' '..tostring(qte)..'/'..tostring(pileRune[cPR-1].fait))
	local cIPR=1
	y=y+2
	-- Affichage itemsPourRune des composants pour la rune en cour
	while itemsPourRune[cIPR] do		
		ecran.setCursorPos(2,y)
		ecran.write(tostring(itemsPourRune[cIPR].qteCraft)..'x '..itemsPourRune[cIPR].nom.. ' :')
		y=y+1		
		ecran.setCursorPos(4,y)
		ecran.write(itemsPourRune[cIPR].info)
		cIPR=cIPR+1
		y=y+1
	end
end
function print_r ( t ) 
    local print_r_cache={}
    local function sub_print_r(t,indent)
        if (print_r_cache[tostring(t)]) then
            print(indent.."*"..tostring(t))
        else
            print_r_cache[tostring(t)]=true
            if (type(t)=="table") then
                for pos,val in pairs(t) do
                    if (type(val)=="table") then
                        print(indent.."["..pos.."] => "..tostring(t).." {")
                        sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
                        print(indent..string.rep(" ",string.len(pos)+6).."}")
                    else
                        print(indent.."["..pos.."] => "..tostring(val))
                    end
                end
            else
                print(indent..tostring(t))
            end
        end
    end
    sub_print_r(t,"  ")
end
function ecranChoix()
	-- Listes des runes
	ecran.setBackgroundColor(colors.white)
	ecran.clear()
	ecran.setCursorPos(4,2)
	ecran.setTextColor(colors.green)
	ecran.write("Choisir une rune")
	
	local cC=0
	local x=1
	local y=4
	while craftable[cC] do
		if cC%4==0 then
			color=colors.lime
		elseif cC%4==3 then
			color=colors.lime
		else 
			color=colors.green
		end
		ecran.setBackgroundColor(color)
		ecran.setTextColor(color)
		ecran.setCursorPos(x,y)
		ecran.write('XXXXXXXXXXXXXXX')
		ecran.setCursorPos(x,y+1)
		ecran.write('XXXXXXXXXXXXXXX')
		ecran.setCursorPos(x,y+2)
		ecran.write('XXXXXXXXXXXXXXX')
		ecran.setCursorPos(x+centrage(craftable[cC].nom,14),y+1)
		ecran.setTextColor(colors.white)
		ecran.write(craftable[cC].nom)
		if cC%2==0 then
			x=15
		else
			x=1
			y=y+3
		end
		cC=cC+1
	end
	-- Version du clique
	ecoute=true
	while ecoute do
	  event, sid, xPos, yPos = os.pullEvent("monitor_touch")
	  idRuneDmd=yPos-3
	  idRuneDmd=math.floor(idRuneDmd/3)*2
	  if xPos>14 then
		idRuneDmd=idRuneDmd+1
	  end
	  if craftable[idRuneDmd] then
		ecoute=false
	  else
		idRuneDmd=-1
	  end
	end
	ecranQte()
end
function ecranQte() 
	ecran.setBackgroundColor(colors.white)
	ecran.clear()
	ecran.setCursorPos(4,2)
	ecran.setTextColor(colors.green)
	ecran.write("Combien de rune "..craftable[idRuneDmd].nom.." ? ")
	local x=2
	local y=4
	for i=1, 64,1  do
		if i%8==1 then
			color=colors.lime
		elseif i%8==3 then
			color=colors.lime
		elseif i%8==6 then
			color=colors.lime
		elseif i%8==0 then
			color=colors.lime		
		else 
			color=colors.green
		end
		ecran.setBackgroundColor(color)
		ecran.setTextColor(color)
		ecran.setCursorPos(x,y)
		ecran.write('XXXXXXX')
		ecran.setTextColor(colors.white)
		if i<10 then
			ecran.setCursorPos(x+3,y)
		else
			ecran.setCursorPos(x+2,y)
		end
		ecran.write(tostring(i))
		i=i+1
		x=x+7
		if x==30 then
			x=2
			y=y+1
		end
	end
	ecoute=true
	while ecoute do
	  event, sid, xPos, yPos = os.pullEvent("monitor_touch")
	  qte=(yPos-4)*4
	  if xPos==1 then
		qte=-1
	  elseif xPos<=8 then
		qte=qte+1
	  elseif xPos<=15 then
		qte=qte+2
	  elseif xPos<=22 then
		qte=qte+3
	  else
	    qte=qte+4
	  end
	  
	  if qte<1 then
	  elseif qte>64 then
	  else	  
		ecoute=false
	  end	  
	end
	
	nbCraft=math.ceil(qte/craftable[idRuneDmd].qte)
	local i=1
	local u=2
	pileRune={{id=idRuneDmd,fait=0}}
	pileVerif={idRuneDmd}
	while pileVerif[i] do
		t=1
		--print_r(craftable[pileVerif[i]].recette[t])
		while craftable[pileVerif[i]].recette[t] do
			--print(craftable[pileVerif[i]].recette[t].item)
			if craftable[pileVerif[i]].recette[t].item=='Botania:rune' then
				pileVerif[u]=craftable[pileVerif[i]].recette[t].degat
				pileRune[u]={
					id=craftable[pileVerif[i]].recette[t].degat,
					fait=0
				}
				u=u+1
			end
			t=t+1
		end
		i=i+1
	end
	u=u-1
	cursRune=u
	ecranInfo()	
	craft()
end
function ae2demande(posItem)
	itemsPourRune[posItem].info='Demande'
	ecranInfo()					
	item={id=itemsPourRune[posItem].item,dmg=itemsPourRune[posItem].degat}
	-- Demande d'info
	fc=ae2.getItemDetail(item)
	-- Non trouver
	if tostring(fc)=='nil' then
		boucle=true
		itemsPourRune[posItem].info='Impossible attente (null)'
		ecranInfo()
		event, sid, xPos, yPos = os.pullEvent("monitor_touch")
	end
	-- Demande de quantite
	info=fc.all()
	
	if info.qty<itemsPourRune[posItem].qte then
		-- Demande de craft
		ae2.requestCrafting(item,itemsPourRune[posItem].qte-info.qty)
		if tostring(fc)=='nil' then
			itemsPourRune[posItem].info='Non craftable'
			ecranInfo()
			event, sid, xPos, yPos = os.pullEvent("monitor_touch")
		else			
			-- Attente de quantite
			while info.qty<itemsPourRune[posItem].qte do
				fc=ae2.getItemDetail(item)
				info=fc.all()
				if tostring(info)=='nil' then
					info={qty=0}
				end
				itemsPourRune[posItem].info='Craft '..info.qty..'/'..itemsPourRune[posItem].qte
				ecranInfo()
				os.sleep(1)
			end
		end
	end
	if itemsPourRune[posItem].item=='Botania:livingrock' then
		slot=9
	end
	print_r(item)
	print(itemsPourRune[posItem].qte)
	ae2.exportItem(item,"up",itemsPourRune[posItem].qte,slot)
	slot=slot+1
	itemsPourRune[posItem].info='Recupere'
	ecranInfo()
end
function craft()
	local runeStock={}
	local cRuneStock=10
	while pileRune[cursRune] do
		i=1
		nbCraft=math.ceil(qte/craftable[pileRune[cursRune].id].qte)
		while craftable[pileRune[cursRune].id].recette[i] do
			itemsPourRune[i]=craftable[pileRune[cursRune].id].recette[i]
			itemsPourRune[i].info='Attente ...'
			i=i+1
		end
		itemsPourRune[i]={
			qteCraft=nbCraft,
			info='Attente ...',
			nom='ViveRoche',
			item='Botania:livingrock',
			qte=1,
			degat=0
		}
		ecranInfo()
		-- Boucle pour faire la rune
		while pileRune[cursRune].fait<qte do
			posItem=1
			slot=1
			while itemsPourRune[posItem] do				
				ae2demande(posItem)
				posItem=posItem+1
			end
			os.sleep(5)
			for slot=1,8 do
				turtle.select(slot)
				turtle.drop()
			end
			os.sleep(2)
			turtle.select(9)
			turtle.drop()
			os.sleep(3)			
			pileRune[cursRune].fait=pileRune[cursRune].fait+craftable[pileRune[cursRune].id].qte			
		end
		
		cursRune=cursRune-1
	end
end

ecranChoix()

