#! /bin/bash

## global Variables
WORKDIR="."
#ARCHIVEDIR="./archives"
#RESULTPRINTER=/opt/robocup/bin/rclmresultprinter

## ----------------------------------------------------------
## get team names
TEAM_1_DIR=$1
TEAM_2_DIR=$2

## ----------------------------------------------------------
## network configration

MACHINES_L="left1 left2 left3 left4"
MACHINES_R="right1 right2 right3 right4"
SERVERHOST=sim
ACCOUNT=robocup

## ----------------------------------------------------------
## rcssserver command line options

SERVOPT=""
SERVOPT="${SERVOPT} server::nr_normal_halfs = 2"
SERVOPT="${SERVOPT} server::nr_extra_halfs = 0"
SERVOPT="${SERVOPT} server::penalty_shoot_outs = 0"
SERVOPT="${SERVOPT} server::auto_mode = 1"
SERVOPT="${SERVOPT} server::half_time = 300"
#SERVOPT="${SERVOPT} server::half_time = 1"
SERVOPT="${SERVOPT} server::game_logging = 1"
SERVOPT="${SERVOPT} server::text_logging = 1"
SERVOPT="${SERVOPT} server::game_log_dated = 1"
SERVOPT="${SERVOPT} server::text_log_dated = 1"
SERVOPT="${SERVOPT} server::game_log_fixed = 0"
SERVOPT="${SERVOPT} server::text_log_fixed = 0"
SERVOPT="${SERVOPT} server::game_log_dir = ${WORKDIR}"
SERVOPT="${SERVOPT} server::text_log_dir = ${WORKDIR}"
SERVOPT="${SERVOPT} server::game_log_compression = 0"
SERVOPT="${SERVOPT} server::text_log_compression = 0"
SERVOPT="${SERVOPT} server::kick_off_wait = 200"
#SERVOPT="${SERVOPT} server::kick_off_wait = 70"

[ -e ${HOME}/.rclm2D ] && .  ${HOME}/.rclm2D


## ----------------------------------------------------------
## rcssmonitor command line options

MONOPT=""
# !!! Do NOT edit next line !!!
MONOPT="${MONOPT} -auto_quit_mode 1 -auto_quit_wait 15"
## score board font, see /usr/X11R6/lib/X11/fonts/misc/
##                      or /usr/X11R6/share/fonts/misc/
#MONOPT="${MONOPT} -font_name 12x24"
MONOPT="${MONOPT} -font_name 12x24"
#MONOPT="${MONOPT} -window_size_x 600 -window_size_y 400"
MONOPT="${MONOPT} -window_size_x 1280 -window_size_y 990"

## Wait few seconds with echo message.
## _countdown(second=10, message="")
function _countdown {
    local count=$1
    local message=$2

    count=${count:=10}
    while [ $count != 0 ]; do
	count=$(($count - 1))
	printf "rclm2: %3d %s\r" $count "$message"
	sleep 1
    done
    echo
}

## echo message and exit 1.
## _die(message, ...)
function _die {
    echo "Error: $*"
    echo
    exit 1
}

# -----------------------------------------------------------
# set team directory & team side

if [ $((`date "+%s"` % 2)) == 1 ]; then
    TEAM_L_DIR=$TEAM_1_DIR
    TEAM_R_DIR=$TEAM_2_DIR
else
    TEAM_L_DIR=$TEAM_2_DIR
    TEAM_R_DIR=$TEAM_1_DIR
fi
TEAM_L=`basename $TEAM_L_DIR`
TEAM_R=`basename $TEAM_R_DIR`

# -----------------------------------------------------------
# ready for match

#START_L="/tmp/start_l.$$"
#echo "${TEAM_L_DIR}/start ${TEAM_L_DIR} ${SERVERHOST} ${MACHINES_L}" > ${START_L}
#chmod +x ${START_L}
#TEAM_L_START="server::team_l_start = \"${START_L}\""
TEAM_L_START="server::team_l_start = '${TEAM_L_DIR}/start ${TEAM_L_DIR} ${SERVERHOST} ${MACHINES_L}'"

#START_R="/tmp/start_r.$$"
#echo "${TEAM_R_DIR}/start ${TEAM_R_DIR} ${SERVERHOST} ${MACHINES_R}" > ${START_R}
#chmod +x ${START_R}
#TEAM_R_START="server::team_r_start = \"${START_R}\""
TEAM_R_START="server::team_r_start = '${TEAM_R_DIR}/start ${TEAM_R_DIR} ${SERVERHOST} ${MACHINES_R}'"

echo "start Match \"${TEAM_L}\" vs \"${TEAM_R}\"..."
#--------------------------------------------------
# log file settings

LOGDATE=`date "+%Y%m%d%H%M"`
LOGNAME="${LOGDATE}-${TEAM_L}-vs-${TEAM_R}.log"

#--------------------------------------------------------------
# Starting rcssserver & rcssmonitor
rcssserver $SERVOPT $TEAM_L_START $TEAM_R_START \
    1> ${WORKDIR}/${LOGNAME} 2>&1 &
#    2>&1 | tee ${WORKDIR}/${LOGNAME} &
PID=$!
#echo $PID
sleep 2
# start monitor with auto quit mode
rcssmonitor $MONOPT 1> /dev/null 2>&1

# wait server end
_countdown 5 "Waiting for server end."

#rm ${START_R}
#rm ${START_L}

echo "Killing rcssserver"
kill -s INT $PID

## call "kill"script
echo "killing all agents"
n=1
for host in ${MACHINES_L} ; do
    echo "ssh -l ${ACCOUNT} ${host} ${TEAM_L_DIR}/kill${n}"
    ssh -l ${ACCOUNT} ${host} ${TEAM_L_DIR}/kill${n}
    n=$((n+1))
done

n=1
for host in ${MACHINES_R} ; do
    echo "ssh -l ${ACCOUNT} ${host} ${TEAM_R_DIR}/kill${n}"
    ssh -l ${ACCOUNT} ${host} ${TEAM_R_DIR}/kill${n}
    n=$((n+1))
done

#[ $? -ne 0 ] && _die "... failed."
#echo "rclm: ...done."
#_run_match ${TEAM_1_DIR} ${TEAM_2_DIR}
