#!/bin/bash
declare -a opts
printmenu3(){
	let menuselect=0
	maxmenu=${#opts[@]}
	#bucle principal
	while true;do
		#fijar un límite del menu
		if [ $menuselect -ge $maxmenu ];then
			let menuselect=0
		elif [ $menuselect -lt 0 ]; then
			let menuselect=$maxmenu-1
		fi
		#printmenu
		clear
		if [ "$title" != "" ];then
			echo "$title"
		fi
		if [ "$title0" != "" ];then
			echo "$title0"
		fi
		if [ "$title1" != "" ];then
			echo "$title1"
		fi
		#añadir más title${x} si hace falta
		for (( menuprint=0; menuprint<$maxmenu; menuprint++ ));do
			if [ $menuprint = $menuselect ]; then
				echo -n " --> "
				if [ "$padding" != "" -a "$padding" != "0" ];then
					for ((i=$padding; i>0; i--));do
						echo -n ' '
					done
				fi
			else
				echo -n "     "
			fi
			echo "${opts[$menuprint]}"
		done
		read -n 3 -p "Usa las flechas para moverte por el menú " menuMovement
		case $menuMovement in
			*A)
				((menuselect--))
				;;
			*B)
				((menuselect++))
				;;
			"")
				break
				;;
			*)
				;;
		esac
	done
}
inventoryAskLoad(){
	clear
	echo "Inventario:"
	for ((iteration=0; iteration<=${#itemList[@]}; iteration++));do
		if [ "${itemList[$iteration]}" != "" ];then
			echo "${itemList[$iteration]}"
		fi
	done
	echo ''
	echo "Eventos:"
	for ((iteration=0; iteration<=${#eventList[@]}; iteration++));do
		if [ "${eventList[$iteration]}" != "" ];then
			echo "${eventList[$iteration]}"
		fi
	done
	echo''
	if [[ ${#AchList[@]} -gt 0 ]];then
		echo 'Logros: '
		for ((iteration=0; iteration<=${#AchList[@]}; iteration++));do
			if [ "${AchList[$iteration]}" != "" ];then
				echo "${AchList[$iteration]}"
			fi
		done
		echo ''
	fi
}
LoadAsk(){
	let menuAsk=1
	#bucle principal
	while true
	do
		#fijar un límite del menu
	if [ $menuAsk -gt 2 ];then
		let menuAsk=1
	elif [ $menuAsk -lt 1 ]; then
		let menuAsk=2
	fi
	#printmenu
	clear
	inventoryAskLoad
	echo "¿Cargar éste archivo?"
	for (( menuprint=1; menuprint<=2; menuprint++ ))
	do
		if [ $menuprint = $menuAsk ]; then
			echo -n " --> "
		else
			echo -n "    "
		fi
		case $menuprint in
			1)
				echo "Sí"
				;;
			2)
				echo "No"
				;;
		esac
	done
	read -n 3 -p "Usa las flechas para moverte por el menú " menuMovement
	case $menuMovement in
		*A)
			((menuAsk--))
			;;
		*B)
			((menuAsk++))
			;;
		"")
			break
			;;
		*)
			;;
	esac
	done
}
declare -a opts
printmenu3L(){
		maxmenu=${#opts[@]}
	#bucle principal
	while true
	do
		#fijar un límite del menu
	if [ $menuselect -ge $maxmenu ];then
		let menuselect=0
	elif [ $menuselect -lt 0 ]; then
		let menuselect=$maxmenu-1
	fi
	#printmenu
	clear
	if [ "$title" != "" ];then
	echo "$title"
	fi
	if [ "$title0" != "" ];then
	echo "$title0"
	fi
	#añadir más title${x} si hace falta
	for (( menuprint=0; menuprint<$maxmenu; menuprint++ ))
	do
		if [ $menuprint = $menuselect ]; then
			echo -n " --> "
		if [ $menuprint != 5 ];then
			echo -n ' '
		fi
		else
			echo -n "     "
		fi
		echo "${opts[$menuprint]}"
	done
	read -n 3 -p "Usa las flechas para moverte por el menú " menuMovement
	case $menuMovement in
		*A)
			((menuselect--))
			;;
		*B)
			((menuselect++))
			;;
		"")
			break
			;;
		*)
			;;
	esac
	done
}
showtext(){
	let x=0
	if [ "$textdelay" = "" ];then
		if [ -f ShTxt.conf ]; then
			textdelay="$(cat ShTxt.conf)"
		else
			textdelay="0.02"
		fi
	fi
	textLenght=${#text}
	while [ $x -le $textLenght ];do
		echo -n "${text:$x:1}"
		let x=$x+1
		sleep $textdelay
	done
echo
}
showtextR(){
	let x=0
	if [ "$textdelay" = "" ];then
		if [ -f ShTxt.conf ]; then
			textdelay="$(cat ShTxt.conf)"
		else
			textdelay="0.02"
		fi
	fi
	textLenght=${#text}
	while [ $x -le $textLenght ];do
		echo -n "${text:$x:1}"
		let x=$x+1
		sleep $textdelay
	done
}
ShowTextConfig(){
	title="Selecciona la velocidad del texto"
	title0="La velocidad depende del procesador, prueba las opciones primero."
	opts=("(Casi) Instantáneo" "Rápido" "Normal" "Lento" "Ultra Lento" "Probar las opciones")
	printmenu3
	title0=""
	case $menuselect in
		0)
			echo "0" > ShTxt.conf
			textdelay=0
			text="Configuración establecida en Instantaneo"
			showtext
			read
			;;
		1)
			echo "0.01" > ShTxt.conf
			textdelay="0.01"
			text="Configuración establecida en Rápido"
			showtext
			read
			;;
		2)
			echo "0.03" > ShTxt.conf
			textdelay="0.03"
			text="Configuración establecida en Normal"
			showtext
			read
			;;
		3)
			echo "0.05" > ShTxt.conf
			textdelay="0.05"
			text="Configuración establecida en Lento"
			showtext
			read
			;;
		4)
			echo "0.07" > ShTxt.conf
			textdelay="0.07"
			text="Configuración establecida en Ultra Lento"
			showtext
			read
			;;
		5)
			text="Este es el texto de prueba para la velocidad \"Instantáneo\""
			textdelay=0
			showtext
			sleep 1
			text="Este es el texto de prueba para la velocidad \"Rápido\""
			textdelay="0.01"
			showtext
			sleep 1
			text="Este es el texto de prueba para la velocidad \"Normal\""
			textdelay="0.02"
			showtext
			sleep 1
			text="Este es el texto de prueba para la velocidad \"Lento\""
			textdelay="0.04"
			showtext
			sleep 1
			text="Este es el texto de prueba para la velocidad \"Ultra Lento\""
			textdelay="0.06"
			showtext
			read -p "Pulsa INTRO "
			ShowTextConfig
			;;
	esac
}
#Inicio
clear
echo -ne "\e[32m"
text="Gutebanana Productions"
showtextR
echo -ne "\e[39m"
text=" presenta..."
showtext
read -p "Pulsa INTRO para comenzar. "
while true;do
title="Mansion Explorer"
title0="Elige una opción"
opts=("Jugar" "Copiar Datos" "Borrar Datos" "Configuración" "Salir")
printmenu3
title0=""
case $menuselect in
	0)
		let menuselect=0
		until [ $menuselect = 5 ];do
		title="Elige un Archivo"
		opts=("Archivo 1" "Archivo 2" "Archivo 3" "Archivo 4" "Archivo 5" "Volver")
		printmenu3L
		if [ $menuselect -lt 5 ]; then
			let file=$menuselect+1
			if [ -f SaveData${file}.txt ];then
				source SaveData${file}.txt
				LoadAsk
			if [ $menuAsk = 1 ];then
				bash Code.sh $file
				#let menuselect=0
				break
			fi
			else
				title="Archivo Vacío"
				opts=('Comenzar' 'Cancelar')
				printmenu3
			if [ $menuselect = 0 ];then
				bash Code.sh $file
				break
			fi
			fi
			let menuselect=$file-1
			fi
		done
		;;
	1)
		#Copiar Archivos
		opts=()
		for (( x=1; x<=5; x++ ))
			do
			if [ -f SaveData${x}.txt ];then
				#if $x = 1, esto se ejecuta como opt1="Archivo 1"
				opts+=("Archivo ${x}")
			fi
		done
		title="Elige un archivo que copiar (si no aparece, está vacío)"
		opts+=("Cancelar")
		printmenu3
		if [ "${opts[$menuselect]}" != "Cancelar" ];then
			selected_option="${opts[$menuselect]}"
			copyFile="${selected_option//[^0-9]/}"
			title="Elige el archivo de destino"
			opts=()
			for ((i=1; i<=5; i++));do
			if [ -f SaveData${i}.txt ];then
			opts+=("Archivo $i (Con Datos)")
			else
			opts+=("Archivo $i")
			fi
			done
			printmenu3
			if [ "${opts[$menuselect]}" != "Cancelar" ];then
				selected_option="${opts[$menuselect]}"
				dest_File="${selected_option//[^0-9]/}"
				if [ -f "SaveData${dest_File}.txt" ];then
					title="Alerta, el archivo tiene datos; se sobreescribirán"
					opts=("Continuar" "Cancelar")
					printmenu3
					if [ $menuselect = 0 ];then
						cp SaveData${copyFile}.txt SaveData${dest_File}.txt
						echo "Se ha copiado el Archivo ${copyFile} en el Archivo $dest_File"
						read
					fi
				else
				cp SaveData${copyFile}.txt SaveData${dest_File}.txt
				echo "Se ha copiado el Archivo ${copyFile} en el Archivo $dest_File"
				read
				fi
			fi
		fi
		;;
	2) 
		#Borrar Archivos
		opts=()
		for (( x=1; x<=5; x++ ))
		do
			if [ -f SaveData${x}.txt ];then
				#if $x = 1, esto se ejecuta como opt1="Archivo 1"
				opts+=("Archivo ${x}")
			fi
		done
		title="Elige un archivo que borrar (si no aparece, está vacío)"
		opts+=("Cancelar")
		printmenu3
		if [ "${opts[$menuselect]}" != "Cancelar" ];then
			selected_option="${opts[$menuselect]}"
			deleteFile="${selected_option//[^0-9]/}"
			rm "SaveData${deleteFile}.txt"
			echo "Se ha borrado el ${opts[$menuselect]}"
			read
		fi
		;;
	3)
		ShowTextConfig
		;;
	4)
		echo "Saliendo..."
		sleep 0.5
		exit
		;;
esac
done