#!/bin/bash -e echo "-- genererTerrain v2 --" echo "Initialisation des paramettres:" BASEPATH="$(dirname $0)/.." path="$BASEPATH/styles" echo "Creation du chemin vers les dossiers sytles ..." pathDst="$BASEPATH/level/3_test" echo "Creation du chemin vers le dossier 3_test ..." style="unknown" numObjet="0" typeObjet="0" numTerrain="0" numTerrainStop="0" echo "Initialisation des variables pour generer la map ..." xObjet=0 wObjet=0 hObjet=0 fObjet=1 hDoor=16 yObjet=200 yTerrain=106 echo "Initialisation des variables pour positionner les terrain sur la map ..." cpt=0 cptFrame=1 cptT=0 echo "Initialisation des compteurs pour l'execution du script ..." mode=0 wTerrain=0 hTerrainStop=0 wTerrainStop=0 stepTerrain=20 numStyle=0 echo "Initialisation des variables pour la répartition des objets sur la map ..." numObjetTest=99 cptTestObjet=15 echo "Initialisation des variables pour construire le test des objets sur la map ..." information=0 > $pathDst/lvlTempT.ini echo "Creation d'un fichier temporaire pour stocker des données ..." echo " # Terrain # id, xpos, ypos, modifier # modifier: 8=NO_OVERWRITE, 4=UPSIDE_DOWN, 2=REMOVE (combining allowed, 0=FULL) " >> $pathDst/lvlTempT.ini if [ $# -ge 1 ] then style=$1 if [ $(ls $path | grep -ce "^$style$") -ne 1 ] then echo "Style [$style] unknown !" exit 0 else echo "Style $style load" fi else style="fire" echo "Default: Style $style load" fi if [ $# -ge 2 ] then case $2 in '-i' | '-information' ) information=1 ;; *) echo "USE : $0 [[<-i|-information>] ] " ;; esac else information=$information fi if [ $# -ge 3 ] then numObjetTest=$3 if [ $(ls $path/$style | grep -ce "^$style""o_$numObjetTest.gif$") -ne 1 ] then echo "Objet [$style""o_$numObjetTest.gif] unknown !"; numObjetTest=99; echo "Default: All Object load" else echo "Style $style""o_$numObjetTest.gif load"; echo "numObjetTest $numObjetTest" fi else numObjetTest=99 echo "Default: All Object load" fi if [ $style = "brick" ] then numTerrain=1; numStyle=1; numTerrainStop=30 else if [ $style = "bubble" ] then numTerrain=45; numStyle=2 numTerrainStop=60 else if [ $style = "crystal" ] then numTerrain=27; numStyle=3 numTerrainStop=32 else if [ $style = "dirt" ] then numTerrain=29; numStyle=4 numTerrainStop=24 else if [ $style = "fire" ] then numTerrain=1; numStyle=5 numTerrainStop=21 else if [ $style = "marble" ] then numTerrain=9; numStyle=6 numTerrainStop=47 else if [ $style = "pillar" ] then numTerrain=44; numStyle=7 numTerrainStop=13 else if [ $style = "rock" ] then numTerrain=13; numStyle=8 numTerrainStop=46 else if [ $style = "snow" ] then numTerrain=31; numStyle=9 numTerrainStop=16 else echo "special is't good for test !"; exit 0 fi fi fi fi fi fi fi fi fi wTerrain=$(giftopnm -comment $path/$style/$style"_"$numTerrain".gif" | head -n2 | tail -n1 | cut -f1 -d' ') hTerrainStop=$(giftopnm -comment $path/$style/$style"_"$numTerrainStop".gif" | head -n2 | tail -n1 | cut -f2 -d' ') wTerrainStop=$(giftopnm -comment $path/$style/$style"_"$numTerrainStop".gif" | head -n2 | tail -n1 | cut -f1 -d' ') wTerrain=$(($wTerrain - ($wTerrain%2))) hTerrainStop=$(($hTerrainStop - ($hTerrainStop%2))) wTerrainStop=$(($wTerrainStop - ($wTerrainStop%2))) echo "# LVL extracted by Lemmini #LVL0041.LVL releaseRate = 1 numLemmings = 99 numToRescue = 1 timeLimit = 20 numClimbers = 99 numFloaters = 99 numBombers = 99 numBlockers = 99 numBuilders = 99 numBashers = 99 numMiners = 99 numDiggers = 99 xPos = 200 style = $style # Objects # id, xpos, ypos, paint mode (), upside down (0,1) # paint modes: 8=VIS_ON_TERRAIN, 4=NO_OVERWRITE, 0=FULL (only one value possible)" > $pathDst/lvl200$numStyle.ini for k in $(grep "type_" $path/$style/$style.ini | tr ' ' '-') do hDoor=16 yObjet=200 yTerrain=$(($hDoor+90)) for j in $(seq 1 $cptTestObjet) do #echo "j == $j" #echo "numObjetTest ==> $numObjetTest" if [ $numObjetTest -eq 99 ] then numObjet=$(echo $k | tr '-' ' ' | cut -f2 -d'_' | cut -f1 -d' ') else numObjet=$numObjetTest fi #echo "numObjet ==> $numObjet" if [ $numObjetTest -eq 99 ] then typeObjet=$(echo $k | tr '-' ' ' | cut -f2 -d'=' | cut -f2 -d' ' ) else typeObjet=$(grep "type_$numObjet" $path/$style/$style.ini | cut -f2 -d'=' | cut -f2 -d' ') fi typeObjet=$(echo "$typeObjet" | sed -e "s/\\n//g" | sed -e "s/\\r//g" ) #echo "typeObjet ==> $typeObjet" wObjet=$(giftopnm -comment $path/$style/$style"o_"$numObjet".gif" | head -n2 | tail -n1 | cut -f1 -d' ' ) #echo $wObjet hObjet=$(giftopnm -comment $path/$style/$style"o_"$numObjet".gif" | head -n2 | tail -n1 | cut -f2 -d' ' ) wObjet=$(($wObjet - ($wObjet%2))) hObjet=$(($hObjet - ($hObjet%2))) if [ $numObjetTest -ne 99 ] then if [ $typeObjet -eq "5" ] then mode=4 else if [ $typeObjet -eq "6" ] then mode=4 else if [ $typeObjet -eq "7" ] then mode=0 else mode=99 fi fi fi else # Trois boucles if [ $typeObjet -eq "5" ] then case $j in 1) mode=0 ;; 2) mode=4 ;; 3) mode=99 ;; *) mode=99 ;; esac else if [ $typeObjet -eq "6" ] then case $j in 1) mode=0 ;; 2) mode=4 ;; 3) mode=8 ;; *) mode=99 ;; esac else if [ $typeObjet -eq "7" ] then case $j in 1) mode=0 ;; 2) mode=4 ;; 3) mode=8 ;; *) mode=99 ;; esac else mode=99 fi fi fi fi if [ $information -eq 1 -a $mode -eq 99 -a $j -eq 1 ] then echo "----------------------------------" echo "File: "$style"_"$numObjet".gif:" echo "Style_Map: "$numStyle echo "Type_Objet: "$typeObjet echo "Mode: "$mode echo "Width: "$wObjet echo "Height_GIF: "$hObjet else mode=$mode fi if [ $mode -lt 99 ] then fObjet=$(grep "frames_$numObjet" $path/$style/$style.ini | cut -f2 -d'=' | cut -f2 -d' ') cptFrame=0 fObjet=$(echo "$fObjet" | sed -e "s/\\n//g" | sed -e "s/\\r//g" ) while [ "$cptFrame" -ne "$fObjet" -a "$cptFrame" -ne "99" ] do cptFrame=$(($cptFrame+1)) done #echo $cptFrame if [ $cptFrame -eq 0 ] then cptFrame=1 fi hObjet=$(($hObjet/$cptFrame)) hObjet=$(($hObjet - ($hObjet%2))) if [ $information -eq 1 -a $j -eq 1 ] then echo -e "\t----------------------------------" echo -e "\t File: "$style"_"$numObjet".gif:" echo -e "\t Style_Map: "$numStyle echo -e "\t /!\ Type_Objet: "$typeObjet echo -e "\t Mode: "$mode echo -e "\t Width: "$wObjet echo -e "\t Height: "$hObjet else mode=$mode fi if [ $hObjet -gt 90 ] then yTerrain=$(($hDoor + $hObjet )) else yTerrain=$yTerrain fi if [ $yTerrain -ge 320 ] then break else yTerrain=$yTerrain fi #Entry # pour tous les object if [ true -o "$cpt" -eq "0" -o $numObjetTest -ne 99 ] #pour les objets specifiques then echo "object_$cpt = 1, $xObjet, $hDoor, 0, 0" >> $pathDst/lvl200$numStyle.ini cpt=$(($cpt+1)) #echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> $pathDst/lvlTempT.ini #xObjet=$(($xObjet + $stepTerrain)) #cptT=$(($cptT+1)) if [ $numObjetTest -eq 99 ] #pour all then for i in $(seq 1 6) do echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> $pathDst/lvlTempT.ini xObjet=$(($xObjet + $stepTerrain)) yTerrain=$(($yTerrain+$i*2)) cptT=$(($cptT+1)) done if [ "$cpt" -eq "1" ] then for i in $(seq 1 6) do echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> $pathDst/lvlTempT.ini xObjet=$(($xObjet + $stepTerrain)) yTerrain=$(($yTerrain-$i*2)) cptT=$(($cptT+1)) done else cptT=$cptT fi else cptT=$cptT fi #FIN pour all else cptT=$cptT fi #FIN pour les objets specifiques if [ $numObjetTest -ne 99 ] then stepTerrain=40 else stepTerrain=20 fi maxT=$(($wObjet/$stepTerrain + 6 )) for i in $(seq 1 $maxT) do echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 0" >> $pathDst/lvlTempT.ini cptT=$(($cptT+1)) yTerrain=$(($yTerrain+4)) echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 2" >> $pathDst/lvlTempT.ini yTerrain=$(($yTerrain-4)) xObjet=$(($xObjet + $stepTerrain)) cptT=$(($cptT+1)) done if [ $typeObjet -eq "5" ] then yObjet=$(($yTerrain-$hObjet)) else if [ $typeObjet -eq "6" ] then yObjet=$(($yTerrain-$hObjet)) else if [ $typeObjet -eq "7" ] then yObjet=$(($yTerrain-$hObjet)) else yObjet=$yTerrain fi fi fi #Trap #echo "here" # if [ $yObjet -ge 0 -a $xObjet -ge 0 -a $yObjet -lt 320 -a $xObjet -lt 3300 ] # then yObjet=$(($yObjet+$j*2-$cptTestObjet/2)) xObjet=$(($xObjet-($maxT-2)*$stepTerrain)) yObjet=$(($yObjet - ($yObjet%2))) echo "object_$cpt = $numObjet, $xObjet, $yObjet, $mode, 0" >> $pathDst/lvl200$numStyle.ini cpt=$(($cpt+1)) xObjet=$(($xObjet + $wObjet)) yObjet=$(($yTerrain-$hTerrainStop+10)) yObjet=$(($yObjet - ($yObjet%2))) echo "terrain_$cptT = $numTerrainStop, $xObjet, $yObjet, 0" >> $pathDst/lvlTempT.ini xObjet=$(($xObjet + $wTerrainStop - 10)) if [ $xObjet -ge 3000 ] then xObjet=0; hDoor=$(($yTerrain + 10)) ; yTerrain=$(($hDoor + 90)) else xObjet=$xObjet fi # else # xObjet=$xObjet # fi else echo "objet $numObjet de type $typeObjet IGNORER" #echo "==> Objet ignorer" fi if [ $numObjetTest -eq 99 -a $j -eq 3 ] then break else yTerrain=$(($hDoor + 90)) fi done if [ $numObjetTest -ne 99 ] then break else numObjetTest=$numObjetTest fi done cat $pathDst/lvlTempT.ini >> $pathDst/lvl200$numStyle.ini rm $pathDst/lvlTempT.ini #Name #typeObjet=$(echo "$typeObjet" | sed -e "s/\\n//") echo "name = Test $style($numStyle) O($numObjet) T($typeObjet) M($mode) " >> $pathDst/lvl200$numStyle.ini exit 0