#!/bin/sh
## sm.sh
##
## Made by spycAm
## Login   <raud_c@epita.fr>
##
## Started on  Mon May 21 17:54:44 2007 spycAm
## Last update Sun Mar  1 04:42:04 2009 spycAm
##

usage()
{
if [ "$login" = "" ]; then
    echo "./sm.sh [-i] [-n] [-g] <room|login> (ex: sm-22, sm-03, raud_c)" && exit 42
fi
}
makelogin()
{
    nbrchar=`echo -n "${1}" | wc -c`
    nbrchar=$((${2} - $nbrchar))
    found=`echo -n "$login" | grep -q "${1}" ; echo $?`
    if [ "$found" = "0" ]; then
	echo -n "[31m$1[m"
    else
	echo -n "[36m$1[m"
    fi
    if [ $nbrchar -gt 0 ]; then
	for l in `gseq 1 ${nbrchar}`; do
	    echo -n ' '
	done
    fi
}

S=1
VERB=1
N=1
G=1
login=""
path=/afs/epitech.net/users/epita_2010/raud_c/public/piepack/.sm
while [ $# -gt 0 ]; do
    case "$1" in
	"-s") S=0;;
	"-i") VERB=0;;
	"-n") N=0;;
	"-g") G=0;;
	"-h") usage;;
	*) login="$login $1";;
    esac
    shift 1
done
usage $login

room=$login
newroom=`ns_who $room | grep sm | grep -v '~' | head -1 | sed -E "s/.*@(.*)_.*/\1/"`

if [ "`echo -n $newroom | wc -c`" -gt 0 ]; then
    room=$newroom
else
    room=`echo -n $room`
fi
if [ -r "${path}/${room}" ]; then
    nswho=`ns_who -g | grep sm- | grep -v '~'`
    plan=`cat ${path}/${room}`
    nbr=`printf "$plan" | tr x '\n' | grep r | wc -l | tr ' ' '\0'`
    if [ $nbr  = "0" ]; then
	nbr=1
    fi
    pos=0
    while [ `printf "$plan" | grep -c xxr` -gt 0 ]; do
	next=`printf "$plan" | egrep "r(.{2})p(.{2})" | tr '\n' '\0' | sed -E "s/.*xxr(.{2})p(.{2}).*/r\1p\2/"`
	#echo -n '.'
	if [ "$G" = 1 ]; then
	    body=`printf "$nswho" | grep "${room}_${next}" | head -1 | cut -d'@' -f1`
	else
	    body=`printf "$nswho" | grep "${room}_${next}" | head -1 | awk '{print $2}' | sed s/epi// | tr '_s' "\0\0"`
	fi
	body=`makelogin "$body" 8`
	plan=`printf "$plan" | sed -E "s/xx${next}/${body}/"`
	if [ "$VERB" = 0 ]; then
	    clear
	    if [ "$login" != "$room" ]; then
		echo "[[32m${login}[m]-[[32m${room}[m]"
	    else
		echo "[[32m${login}[m]"
	    fi
	    printf "\n${plan}\n"
	fi
	percent=`expr 100 \* $pos / $nbr`
	printf "\- [35mBuilding map[m... [32m${percent}[m %%\r"
	pos=$(($pos + 1))
    done
    if [ "$N" = 1 ]; then
	plan=`printf "$plan" | sed -E "s/-([0-9]{2})-/----/g"`
    else
	plan=`printf "$plan" | sed -E "s/-([0-9]{2})-/-[36m\1[m-/g"`
    fi
    plan=`printf "$plan" | sed -E 's/^([[:space:]]*[0-9]{2})/[35;1m\1[m/g'`
    if [ "$VERB" = 0 ]; then
	clear
    fi
    gecho -ne "                        \r"
    printf "${plan}\n"
    return 0
else
    if [ "$S" = 1 ]; then
	if [ "$room" != "$newroom" ]; then
	    echo "There is no map for ${room}."
	else
	    echo "${login} is connected but there is no map for ${room}."
	fi
    fi
    return 42
fi
