#!/bin/bash

### Gestion des données relatives au jeu lui meme 
# del
    # Sert a supprimer completement tout ce qui rapport au jeu
# newgame
    # Sert a lancer une nouvelle partie 
# initgame 
    # Sert a initialiser entierement le jeu
# recupgame
    # Sert a recuperer une partie sauvegarder 
	# Laisse le choix au joueurs de la sauvegarde utiliser
# savegame
    # Sauvegarde le jeu en cour et quitte la partie


# il y a plusieurs cas ou il faut détruire le jeu
function del {
    cd $pos
    chmod -R 700 *
    rm -rf $pos/carte $pos/joueur 2>/dev/null # si le jeu n'a pas commencer , on redirige l'erreur vers le néant
    # rf car si un ... bref a creer un dossier , entre temps , on s'assure qu'on puisse jouer
    rm -rf $pos/entree/ # on detruit le labyrinth et tout ce qu'il contient
}

# on recommence :) 
function newgame {
clear
echo "$@"
choice=  #choice etant une variable utiliser plusieurs fois , on la libère sous peine de résultat hazardeux #en théorie n'arrive pas dans la dernière version du code vu que l'on recharge par defaut si le fichier existe
if [[ -e $pos/joueur ]]; then 
    while true ;do 
	echo " Une partie en cour : Recommencer quand même ?"
	echo ""
	echo " ===== Choisissez une option ====="
	echo " N : Non"
	echo " Y : Oui"     
	read -n 1 choice 

	case "$choice" in
		[yYnN] )  break ;; 
		* ) clear; echo " Mauvaise saisie , recommencez" ;;
	esac
    done
fi

choice=${choice:-Y} # si le jeu n'etait pas lancer, le choix par defaut est oui 

    if [[ $choice = Y || $choice = y ]];then 
	case "$choice" in
	    [nN] )  clear;echo " Retour a la partie " break  ;;
	    [yY] )  initgame ;;
	esac
    else
	clear;echo " Retour a la partie ";
    fi
}

# on initialise le jeu 
function initgame {
    cd $pos # on revien au debut 
    del  # on fait le menage 
    initlab # on initialise le terrain de jeu
    player # on recreer un joueur
}
# recupere la partie sauvegarder
function recupgame {
clear
echo $@

    if [ $(ls $pos/save | grep -wc "tar.bz2" ) -eq 0 ];then
	menu "Aucune Partie Sauvegarder"
    fi
    
    while true ;do 
	echo " Reprendre la partie depuis une dernière sauvegarde ?" 
	echo " ===== Choisissez une option ===== "
	echo " N : Non"
	echo " Y : Oui"     
	echo -n " "
	read -n 1 choice 
    
	case "$choice" in
	       [nNyY] ) break ;;
	       * ) clear; echo " Mauvaise saisie , recommencez" ;;
       esac  
    done
    
    ifs=$IFS
    if [[ $choice = Y || $choice = y ]];then 
	clear;echo ""
	while true ;do

		echo " ===== Quel partie reprendre ? ===== "
		echo ""
		n=0
	        # pour tout les fichiers du repertoir courant
		IFS="$(echo -e "\n\r")" #on change le séparateur de bash par defaut momentanement
		for fil in $(find $pos/save/* -maxdepth 0 -type f 2>/dev/null) ;do  
		    n=$(($n+1))
		    echo " $n : $(basename $fil)"
		done
		
		read -n 1 choice    

		case "$choice" in
		    # on reliste les partie disponible dans le dossier
		    [1-$n] ) break ;;
		    * ) clear ; echo " Mauvaise saisie, recommencez" ;;
		esac
        done
	
	cd $pos # on veut etre sur que l'autre n'a pas une partie en cour qui fausse tout
	del #on degage son jeu en cour
	save=$(basename $(find $pos/save/* -maxdepth 0 -type f | sed -n $choice\p ))
	cp save/"$(echo "$save"  | sed 's/ /\ /g')" $pos # obliger de copier a cause d'un bug a la decompression # pas trop grave
	tar xjf "$(echo "$save"  | sed 's/ /\ /g')" # on selectionne la sauvgearde voulu
	rm "$(echo "$save"  | sed 's/ /\ /g')"
	IFS=$ifs #on retabli le séparateur
	loadplayer
	loadright # on replace le chmod enlever pour la sauvegarde
	cd $pos/$lieu #on retourne la ou il etait
	clear; echo " Parti recharger depuis la sauvegarde" 

    else #si le choix etait non
	clear; echo "Aucun Chargement effectuer"
    fi
    IFS=$ifs
}

# sauvegarde le jeu et quit
function savegame {
clear
echo $@

if [[ ! -e $pos/joueur ]]; then menu " Aucun jeu en cour" ; fi

    while true ;do 
	echo " Sauvegarder et quitter ?"  # on m'a dit qu'on pouvais pas choisir de save sans quitter
	echo " ===== Choisissez une option ===== "
	echo " N : Non"
	echo " Y : Oui"     
	read -n 1 choice 

	case "$choice" in
	       [nNyY] ) break ;;
	       * ) clear; echo " Mauvaise saisie , recommencez" ;;
	esac
    done
    
    if [[ $choice = Y || $choice = y ]];then 
    	clear;echo ""
	cd $pos/entree
	chmod -R 700 * # on peut pas tar si des dossier sont chmod
	echo " ===== Entré un nom pour la partie svp ? ===== "
	echo ""
	echo -n ""
	read choice
	choice=$(echo "$(date +%Y-%m-%d) | $choice" | sed 's/\:/\ /g') # on veut pas de ":")
	cd $pos #(on se replace a la racine )
	#j'aime le bz2 ... 
	tar -jcf "$(echo "$choice"  | sed 's/ /\ /g').tar.bz2" entree/ joueur carte #on recupère les donné du jeu
	
	if [ $? -eq 0 ] ;then
	    mv "$(echo "$choice"  | sed 's/ /\ /g').tar.bz2" save/ #obliger de deplacer sinon bug ## a fixé 
	    del #on supprime tout 
	    clear; echo "Parti Sauvegardé"; exit 
	else
	    clear; echo " Erreur inattendu, sauvegarde non effectuer correctement"
	fi
	
    else #si le choix etait non
	clear; echo " Aucune Sauvegarde Effectuer "
    fi
} 

# Recharges les droits des dossiers contenant des enigmes
function loadright {
cd $pos/entree
dir="$(find * -type d)"

for fil in ${dir}; do
    if [ $(cat $pos/entree/${fil}/enigme | wc -w ) -ne 0 ];then # si le fichier enigme existe
	 domhc="$(find $pos/entree/${fil}/* -maxdepth 0 -type d)"
	 for smurf in ${domhc}; do
	     echo "$(echo "$smurf"| wc -m ):${smurf}" >> $pos/tmp2
	 done
    fi
done

cat $pos/tmp2 | sort -gr > $pos/tmp

for fil in $(cat $pos/tmp); do
	chmod 000 $(echo "$fil" | cut -d: -f2)  
done
rm $pos/tmp $pos/tmp2
}




