#!/bin/bash

### Relatif a la génération du terrain complet
# initlab
    # Sert a creer le labyrinth
    # Initialiser les fichiers plats

function initlab {
# génération en dur du labyrinth 
mkdir entree

mkdir entree/salle1
mkdir -p entree/salle2/salle3/salle4/salle5/salle6
mkdir -p entree/salle2/salle3/salle4/salle5/salle7
mkdir -p entree/salle2/salle3/salle8/salle9
mkdir -p entree/salle2/salle10/salle11/salle12
mkdir -p entree/salle2/salle10/salle11/salle13/salle14
mkdir -p entree/salle15/salle16/salle17/salle18/salle19
mkdir -p entree/salle15/salle16/salle20/salle21
mkdir -p entree/salle15/salle16/salle20/salle22
mkdir -p entree/salle15/salle23/salle24/salle25
cd $pos/entree/salle1/ ; ln -s $pos/entree/salle15/salle16/salle17/salle18/ lns811
cd $pos/entree/salle15/salle23/ ; ln -s $pos/entree/salle2/salle10/salle11/salle13/ lns3132
cd $pos/entree/salle15/salle16/salle20/salle21/ ; ln -s $pos/entree/salle2/salle3/salle4/salle5/ lns512
cd $pos/entree/salle2/salle10/salle11/salle12/ ; ln -s $pos/entree/salle15/salle16/salle20/salle22/ lns2221


### génération des fichiers vide du jeu complet
cd $pos/entree
dir="$(find * -type d)"  
for fil in ${dir}; do
   touch ${fil}/armes
   touch ${fil}/enigme
   touch ${fil}/ennemis
   touch ${fil}/potions
   touch ${fil}/description
   touch ${fil}/simlink
done

### on selectionne aleatoirement la sortie parmis les plus profond du jeu : 4 possible 
dir="$(find * -maxdepth 4 -mindepth 4 -type d | shuf -n 1)"  
    mv $dir "$(dirname $dir)/sortie"

chmod -R 700 * # tout les droits partout 

### génération des fichier de la case d'entree
touch $pos/entree/armes
touch $pos/entree/enigme
touch $pos/entree/ennemis
touch $pos/entree/potions
touch $pos/entree/simlink
echo " Vous etes dans une pièce noir, seul le contour des portes relui" > $pos/entree/description

### génération aleatoire des fichiers 
## ennemis 

cat $pos/bdd/ennemis > $pos/bdd/tmp # on ne manipule pas la bdd directement
    # ennemis couche 1 # 13 dossier sur les 3 premier niveau , 5 mob faible
dir="$(find * -maxdepth 2 -mindepth 0 -type d | shuf -n 5)"  
n=9 # 5 parmis 9 = 4 restant
for fil in ${dir}; do
    rand=$(($RANDOM%$n+1)) # on choisis parmis les n premier de la liste (qui decrois au fur et a mesure de fait )
    cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/ennemis
    tmp=$(cat $pos/bdd/tmp | sed $rand\d) # on supprime l'ennemis de la bdd
    echo "${tmp}" > $pos/bdd/tmp 
    n=$(($n-1)) # on decremente le $range disponible pour la selection
done

    # ennemis couche 2 # 14 dossiers sur le niveau 3-4 # on pop 3 mob un peu plus fort 
dir="$(find * -maxdepth 3 -mindepth 2 -type d | shuf -n 3)"  
n=6 # 3 parmis 6 = 3 + 4 restant = 7
for fil in ${dir}; do
    rand=$(($RANDOM%$n+5)) # il reste 4 mob faible, on choisis 3 parmis les 6 suivant 
    cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/ennemis
    tmp=$(cat $pos/bdd/tmp | sed $rand\d) # on supprime l'ennemis de la bdd
    echo "${tmp}" > $pos/bdd/tmp    
    n=$(($n-1)) 
done

    # ennemis couche 4 # 12 dossier sur le niveau 4-5 # on pop 2 mob quest sur 4 
dir="$(find * -maxdepth 4 -mindepth 3 -type d | shuf -n 2)"  
n=4 # 2 parmis 4
for fil in ${dir}; do
    rand=$(($RANDOM%$n+8)) # il reste 7 mob faible, on choisis 2 parmis les 4 suivants 
    cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/ennemis
    tmp=$(cat $pos/bdd/tmp | sed $rand\d) # on supprime l'ennemis de la bdd
    echo "${tmp}" > $pos/bdd/tmp  
    n=$(($n-1)) 
done

## armes
     # meme chose que pour les ennemis , on fait evoluer l'arme au fur et a mesure
cat $pos/bdd/armes > $pos/bdd/tmp # on ne manipule pas la bdd directement
    # ennemis couche 1 # 13 dossier sur les 3 premier niveau , 5 mob faible
dir="$(find * -maxdepth 1 -mindepth 0 -type d | shuf -n 5)"  
n=9 # 5 parmis 9 = 4 restant
for fil in ${dir}; do
    rand=$(($RANDOM%$n+1)) # on choisis parmis les n premier de la liste (qui decrois au fur et a mesure de fait )
    cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/armes
    tmp=$(cat $pos/bdd/tmp | sed $rand\d) # on supprime l'ennemis de la bdd
    echo "${tmp}" > $pos/bdd/tmp 
    n=$(($n-1)) # on decremente le $range disponible pour la selection
done

    # ennemis couche 2 # 14 dossiers sur le niveau 3-4 # on pop 3 mob un peu plus fort 
dir="$(find * -maxdepth 2 -mindepth 2 -type d | shuf -n 3)"  
n=6 # 3 parmis 6 = 3 + 4 restant = 7
for fil in ${dir}; do
    rand=$(($RANDOM%$n+5)) # il reste 4 mob faible, on choisis 3 parmis les 6 suivant 
    cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/armes
    tmp=$(cat $pos/bdd/tmp | sed $rand\d) # on supprime l'ennemis de la bdd
    echo "${tmp}" > $pos/bdd/tmp    
    n=$(($n-1)) 
done

    # ennemis couche 4 # 12 dossier sur le niveau 4-5 # on pop 2 mob quest sur 4 
dir="$(find * -maxdepth 3 -mindepth 3 -type d | shuf -n 2)"  
n=4 # 2 parmis 4
for fil in ${dir}; do
    rand=$(($RANDOM%$n+8)) # il reste 7 mob faible, on choisis 2 parmis les 4 suivants 
    cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/armes
    tmp=$(cat $pos/bdd/tmp | sed $rand\d) # on supprime l'ennemis de la bdd
    echo "${tmp}" > $pos/bdd/tmp  
    n=$(($n-1)) 
done

## potions 
    # on va pop plus de potions sur le debut qu'a la fin, le joueur peu aisement revenir en chercher si besoin
    # 7 potions sur les 13 dossiers disponible dans les 3 premier couches
    cat $pos/bdd/potions > $pos/bdd/tmp
    dir="$(find * -maxdepth 1 -mindepth 0 -type d | shuf -n 4)"  
    for fil in ${dir}; do
	rand=$(($RANDOM%10+1)) 
	cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/potions   
    done
    dir="$(find * -maxdepth 2 -mindepth 0 -type d | shuf -n 4)"  
    for fil in ${dir}; do
	rand=$(($RANDOM%10+1)) 
	cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/potions   
    done
    dir="$(find * -maxdepth 3 -mindepth 0 -type d | shuf -n 4)"  
    for fil in ${dir}; do
	rand=$(($RANDOM%10+1)) 
	cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/potions   
    done
    dir="$(find * -maxdepth 4 -mindepth 0 -type d | shuf -n 4)"  
    for fil in ${dir}; do
	rand=$(($RANDOM%10+1)) 
	cat $pos/bdd/tmp | sed -n $rand\p >> $pos/entree/${fil}/potions   
    done
# on execute la boucle plusieur fois en augmentant le niveau de profondeur , ainsi on a moins de potions dans les limbes donc plsu de chance d'en retrouver en retournant en arriere 
# au total 16 potions 

## descriptions 
    # il y a 25 description a pop aleatoirement so ... 
cat $pos/bdd/description > $pos/bdd/tmp
    dir="$(find * -type d)"
    n=25
    for fil in ${dir}; do
	rand=$(($RANDOM%$n+1))
	cat $pos/bdd/tmp | sed -n $rand\p > $pos/entree/${fil}/description
	tmp=$(cat $pos/bdd/tmp | sed $rand\d) 
	echo "${tmp}" > $pos/bdd/tmp  
	n=$(($n-1)) 
    done

## enigmes 
    # il n'y a pas de niveau de difficulté a géré so ...  
    # on pop 9 enigme dans 9 salles aleatoires
cat $pos/bdd/enigme > $pos/bdd/tmp
dir="$(find * -type d | shuf -n 9 )"
n=14
for fil in ${dir}; do
    rand=$(($RANDOM%$n+1))
    cat $pos/bdd/tmp | sed -n $rand\p > $pos/entree/${fil}/enigme
    tmp=$(cat $pos/bdd/tmp | sed $rand\d) 
    echo "${tmp}" > $pos/bdd/tmp
	domhc="$(find $pos/entree/${fil}/* -maxdepth 0 -type d)"
	for smurf in ${domhc}; do
	    echo "$(echo "$smurf"| wc -m ):${smurf}" >> $pos/bdd/tmp2
	done
    n=$(($n-1)) 
done

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

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



rm $pos/bdd/tmp $pos/bdd/tmp2

}

