#!/bin/bash

### Fonction relative au deroulement de la partie 
# game
# secret passage
    # affiche si un passage secret existe et creer un marqueur pour
# win 
    # si le joueur a gagner ... 

# Relatif au déroulement du jeux.
function game {

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

clear
echo $@
while true ;do
    if [ $(basename $lieu) = sortie -a $(cat $pos/$lieu/ennemis | wc -w ) -eq 0 -a $(cat $pos/$lieu/enigme | wc -w ) -eq 0 ]; then
	## si le joueur est dans la case de sortie il a gagné # si il clean la salle bien sur 
	   win    
    fi

    genplayer
    # on génère la carte en meme temps
    gencarte

    echo " ===== Partie en cour ====="
    echo -n " Lieu : $(basename $lieu)"
    echo "    Vie : $vieres / $vie"
    echo "$(cat $pos/$lieu/description)"
    echo ""
    echo " =========================== "
    ifs=$IFS ## obliger de changer le separateur pour la boucle for ...  
    IFS="$(echo -e "\n\r")"
    if [ $(cat $pos/$lieu/ennemis | wc -w ) -ne 0 ];then ##### Affichage des ennemis
	n=0
	for fil in $(cat $pos/$lieu/ennemis | sed -n p ); do
		n=$(($n+1))
	    	echo -n " Ennemis $n : $(cat $pos/$lieu/ennemis | sed -n $n\p | cut -d: -f1 )"
		echo -n " : $(cat $pos/$lieu/ennemis | sed -n $n\p | cut -d: -f2 )"
		echo -n " | Vie : $(cat $pos/$lieu/ennemis | sed -n $n\p | cut -d: -f3 )"
		echo " | Degat :  $(cat $pos/$lieu/ennemis | sed -n $n\p | cut -d: -f4 )"
	done
    else
	echo " Il n'y a pas d'ennemis"
    fi
    echo ""
    if [ $(cat $pos/$lieu/enigme | wc -w ) -ne 0 ];then ##### Affichage des enigmes
	    	echo -n " Enigme : $(cat $pos/$lieu/enigme| cut -d: -f1 )"
		echo " : $(cat $pos/$lieu/enigme | cut -d: -f2 )"
    else
	echo " Il n'y a pas d'énigmes"
    fi 
	echo ""
        echo " =========================== "

    if [ $(cat $pos/$lieu/potions | wc -w ) -ne 0 ];then ##### Affichage des potions
	n=0
	for fil in $(cat $pos/$lieu/potions | sed -n p ); do
		n=$(($n+1))
	    	echo -n " Potion : $(cat $pos/$lieu/potions | sed -n $n\p | cut -d: -f1 )"
		echo -n " : $(cat $pos/$lieu/potions | sed -n $n\p | cut -d: -f2 )"
		echo  " | Vie Rendu : $(cat $pos/$lieu/potions | sed -n $n\p | cut -d: -f3 )"
	done
    else
	echo " Il n'y a pas de potions"
    fi    

    if [ $(cat $pos/$lieu/armes | wc -w ) -ne 0 ];then ##### Affichage des armes
	    	echo -n " Armes : $(cat $pos/$lieu/armes| cut -d: -f1 )"
		echo -n " : $(cat $pos/$lieu/armes |  cut -d: -f2 )"
		echo " | Degat : $(cat $pos/$lieu/armes |  cut -d: -f3 )"

    else
	echo " Il n'y a pas d'armes "
    fi 
    IFS=$ifs

    echo ""
    ######################################################
    ######################################################
    ######################################################
    echo " ===== Choisissez une option ====="
    echo -n " Allez a :   " 
    n=0
    # pour tout les dossier du repertoir courant
    for dir in $(find $pos/$lieu/* -maxdepth 0 -type d 2>/dev/null) ;do  #on veut pas afficher qu'il n'y a pas de sous dossier ... 
	n=$(($n+1))
	echo -n " $n : $(basename $dir)  "
    done; echo "";echo ""
    if [ $(cat $pos/$lieu/simlinked 2>/dev/null | wc -w ) -eq 0 ] ; then
	echo -n ""
    else
	echo " 0 : Remonté le labyrinth ? " 
    fi
    echo ""
    echo ""    

    if [ $(cat $pos/$lieu/ennemis | wc -w ) -ne 0 ];then
	echo -n " C : Allez au combat   "
    fi
    if [ $(cat $pos/$lieu/enigme | wc -w ) -ne 0 ];then
	echo " E : Répondre à l'enigme   "
    fi
    if [ $(cat $pos/$lieu/potions | wc -w ) -ne 0 ];then
	echo -n " P : Prendre la potion   "
    fi
    if [ $(cat $pos/$lieu/armes | wc -w ) -ne 0 ];then
	echo " A : Prendre l'arme   "
    fi;echo ""

    # on recupere l'arboresence sans le repertoire courant
    lieureturn=$(dirname $lieu)

    if [ $(basename $lieu) != entree ]; then
	echo -n " R : retour en arrière ($(basename $lieureturn ))  |"
    fi

    echo " M : Menu "
    echo ""
    if [ $(cat $pos/$lieu/simlink | wc -w ) -eq 0 ]; then
	echo " L : Recherche de passage secret ( coute 1 pdv )"
    else
	echo " L : Emprunter le passage secret"
    fi    
    
    read -n 1 choice 
    
    ######################################################
    ######################################################
    ######################################################

    case "$choice" in
	   # on reliste les fichier disponible dans le dossier, on extrait celui voulu avec sed et on fait un cd dessus 
	   [1-$n] ) 
	    depl=$(basename $(echo "$(find $pos/$lieu/* -maxdepth 0 -type d)" | sed -n $choice\p ))
	    if [ $(cat $pos/$lieu/ennemis | wc -w ) -eq 0 -a $(cat $pos/$lieu/enigme | wc -w ) -eq 0 ];then
	    #if [ -x $pos/$lieu/$depl -o $(cat $pos/$lieu/ennemis | wc -w ) -eq 0 ]; then # si on a les droit de passage OU si les ennemis sont défait
		#if [[ -e simlinked ]]; then
		#rm simlinked
		#fi # 
		cd $depl;lieu=$lieu/$depl;clear;echo"" 
	    else 
		depl=""
	       clear; echo " Ennemis ou Enigme Restante(s) " 
	    fi ;;
	    
	   0 ) 
	   if [ $(cat $pos/$lieu/simlinked 2>/dev/null | wc -w ) -eq 0 ] ; then # dev null cart ca n'existe pas tjrs 
	  	echo " Mauvaise saisie , recommencez"
	   else
		if [ $(cat $pos/$lieu/ennemis | wc -w ) -eq 0 ]; then # si on est passer c'est qu'il n'y a pas d'enigme au dessus, de meme pour revenir on a pas a resoudre les enigmes des portes 
		    depl=$(dirname $(cat simlinked));rm simlinked
		    cd $depl;lieu=$(echo "$depl" | sed s#$pos/## ) # la carte devient le lieu de passage 
		    clear;echo""
		else
		    clear; echo " Il reste des ennemis " 
		fi
	    fi;; 
		    
	   [rR] )
	   if [[ -e $pos/$lieu/simlinked ]]; then
		    rm $pos/$lieu/simlinked
	   fi
	   if [ $(basename $lieu) != entree ]; then # on ne veut pas que le joueurs sorte du circuit
		cd .. ; lieu=$lieureturn ;clear;echo""
	   else
		clear; echo " Mauvaise saisie , recommencez"
	   fi ;; 
	   [cC] ) 
	   if [ $(cat $pos/$lieu/ennemis | wc -w ) -ne 0 ];then
		opponents
	   else
		clear; echo " Mauvaise saisie , recommencez"
	   fi ;;  
	   [eE] ) 
	   if [ $(cat $pos/$lieu/enigme | wc -w ) -ne 0 ];then
		enigma
	   else
		clear; echo " Mauvaise saisie , recommencez"
	   fi ;; 
	   [pP] ) 
	   if [ $(cat $pos/$lieu/potions | wc -w ) -ne 0 ];then
		potion
	   else
		clear; echo " Mauvaise saisie , recommencez"
	   fi ;; 
	   [aA] ) 
	   if [ $(cat $pos/$lieu/armes | wc -w ) -ne 0 ];then
		arme
	   else
		clear; echo " Mauvaise saisie , recommencez"
	   fi ;; 
	   [mM] ) menu ;;
	   [vV] ) clear; lostlife 1 ;;
	   [lL] ) 
	   if [ $(cat $pos/$lieu/simlink | wc -w ) -eq 0 ]; then
		secretpassage
	   else
		 depl=$(basename $(find $pos/$lieu/* -maxdepth 0 -type l)); # echo "$lieu" > $pos/$lieu/$depl/simlink
		 if [ $(cat $pos/$lieu/ennemis | wc -w ) -eq 0 -a $(cat $pos/$lieu/enigme | wc -w ) -eq 0  ]; then # si on a les droit de passage
		    sim=$(cat simlink)
		    cd $depl;lieu=$lieu/$depl;clear;
		    echo "$sim" > simlinked ## on pose un marqueur avec le lien
		    echo "Vous êtes passer dans un tunnel sombre"
		 else 
		    clear; echo " Ennemis ou Enigme Restante(s)" 
		 fi
	   fi ;;
	   * ) clear; echo " Mauvaise saisie , recommencez" ;;
    esac

done

}

# Gère la recherche des passages secrets 
function secretpassage {
    
    if [ $(find * -maxdepth 0 -type l |wc -w )  -ne 0 ];then

    readlink -f $(find * -maxdepth 0 -type l) > $pos/$lieu/simlink
    
	    clear; echo " Passage secret trouvé : "
    else
	clear; echo " Aucun passage secret détecté : "
    fi
    #lostlife 1 # a decommenté pour payer la recherche des PV
}

# Si le joeurs trouve la sortie
function win {

    while true ;do
	clear 
	echo ""
	echo " Bravo vous avez gagné" 
	echo ""
	echo " M : Retour au menu "
	echo " Q : Quitter " 
    
	read -n 1 choice

	case $choice in
	    [mM] ) del; clear; menu ;; 
	    [qQ] ) del; clear; exit ;; 
	    * ) clear;echo "" ;; 
	esac 
    done 


}
