#!/bin/sh

TT=
ID=$1
START_FILE=$1

ECHO="$(which echo) -e"

if [ "$(uname -s)" = "Darwin" ]; then
    ECHO=echo
fi

if [ "x$START_FILE" = "x" ]; then
    $ECHO "Usage: $0 <ID>"
    exit
fi

if [ "x$START_FILE" = "xtintin" ]; then
    tt++ -G -r init.tin
    clear; doc
    exit
fi

NEWBIE=false
if [ "x$START_FILE" = "xpkuxkx" -o "x$START_FILE" = "xthuxyj" ]; then
    NEWBIE=true
fi

if [ ! -z $(which tt-beta 2>/dev/null) ]; then
    TT=tt-beta
elif [ ! -z $(which tt++ 2>/dev/null) ]; then
    TT=tt++
else
    $ECHO "\x1b[1;31m软件安装错误，没有找到可用的 tintin，请重新安装。\x1b[0m"
    exit
fi

if [ -f var/ids/$START_FILE ]; then
    START_FILE=var/ids/$START_FILE
elif [ -f ids/$START_FILE ]; then
    START_FILE=ids/$START_FILE
else
    $ECHO "\x1b[1;31m不存在启动配置文件 \x1b[1;33m$START_FILE\x1b[1;31m。\x1b[0m"
    exit
fi

$ECHO "\x1b[1;32m启动 tintin...\x1b[0m"
$ECHO "\x1b[1;32m$TT $START_FILE\x1b[0m"

mkdir -p tmux/$ID

log() {
    MSG=$1
    TIME=$(date +'%Y-%m-%d %H:%M:%S')
    echo $TIME $START_FILE $MSG >> log/tintin.log
}

tintin() {
    log "TinTin++ 启动。"
    $TT -G -t GAME-$ID $START_FILE
}

tintin
CODE=$?
INTERVAL=1
MAX_INTERVAL=1800
while [ "$CODE" -ne "0" ]; do
    if [ "$INTERVAL" -gt "$MAX_INTERVAL" ]; then
        INTERVAL=$MAX_INTERVAL
    fi
    log "TinTin++ 非正常退出，exit code = $CODE，等待 $INTERVAL 秒后重新启动。"
    sleep $INTERVAL
    INTERVAL=$(expr $INTERVAL '*' 2)
    tintin
    CODE=$?
done

log "TinTin++ 正常退出，exit code = $CODE"

if [ "$NEWBIE" = "true" ]; then
    clear; doc
fi
