From da826d3bf832bf9440db1705d5aa4bdc64e96481 Mon Sep 17 00:00:00 2001 From: Damien Appert Date: Wed, 22 Dec 2010 20:22:30 +0000 Subject: script git-svn-id: file:///var/svn/2010-netlemmings/trunk@209 077b3477-7977-48bd-8428-443f22f7bfda --- scripts/genererTerrain.sh | 450 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 450 insertions(+) create mode 100755 scripts/genererTerrain.sh diff --git a/scripts/genererTerrain.sh b/scripts/genererTerrain.sh new file mode 100755 index 0000000..c961fc7 --- /dev/null +++ b/scripts/genererTerrain.sh @@ -0,0 +1,450 @@ +#!/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 + 0) + mode=0 ;; + 1) + mode=4 ;; + 2) + mode=99 ;; + *) + mode=99 ;; + esac + else + if [ $typeObjet -eq "6" ] + then case $j in + 0) + mode=0 ;; + 1) + mode=4 ;; + 2) + mode=8 ;; + *) + mode=99 ;; + esac + else + if [ $typeObjet -eq "7" ] + then case $j in + 0) + mode=0 ;; + 1) + mode=4 ;; + 2) + 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, $mode, 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 numObjetTest=$numObjetTest + 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 + -- cgit v1.2.3