/*
 *
 * init2.c -- static declarations for robot only
 *
 * This code is copyright 1995 by James A. Cherry, jac@doe.carleton.ca.
 * It is not to be redistributed or modified without his permission.
 *
 */

#include "funddefs.h"
#include "botutil.h"

/* prototypes for states */
extern void AwaitConnect();
extern void AwaitLogin();
extern void AwaitArrive();
extern void IdleForGame();
extern void AwaitJoin();
extern void AwaitFlip();
extern void AwaitMeJoin();
extern void AwaitThemJoin();
extern void StartGame();
extern void TheirMove();
extern void CheckReallyOut();
extern void CheckWords();
extern void InitiateChallenge();
extern void AwaitPause();
extern void AwaitRuling();
extern void AwaitWithdraw();
extern void AwaitMeStartTheirClock();
extern void MyMoveF();
extern void AwaitMeDoneTurn();
extern void AwaitPass();
extern void EndOfGame();
extern void AwaitRematch();
extern void ConsultMode();

/* state table */
sstruct StateTable[NUM_STATES] = {
    { AWAIT_CONNECT, &AwaitConnect },
    { AWAIT_LOGIN, &AwaitLogin },
    { AWAIT_ARRIVE, &AwaitArrive },
    { IDLE_FOR_GAME, &IdleForGame },
    { AWAIT_JOIN, &AwaitJoin },
    { AWAIT_FLIP, &AwaitFlip },
    { AWAIT_ME_JOIN, &AwaitMeJoin },
    { AWAIT_THEM_JOIN, &AwaitThemJoin },
    { START_GAME, &StartGame },
    { THEIR_MOVE, &TheirMove },
    { CHECK_REALLY_OUT, &CheckReallyOut },
    { CHECK_WORDS, &CheckWords },
    { INITIATE_CHALLENGE, &InitiateChallenge },
    { AWAIT_PAUSE, &AwaitPause },
    { AWAIT_RULING, &AwaitRuling },
    { AWAIT_WITHDRAW, &AwaitWithdraw },
    { AWAIT_ME_START_THEIR_CLOCK, &AwaitMeStartTheirClock },
    { MY_MOVE_F, &MyMoveF },
    { AWAIT_ME_DONE_TURN, &AwaitMeDoneTurn },
    { AWAIT_PASS, &AwaitPass },
    { END_OF_GAME, &EndOfGame },
    { AWAIT_REMATCH, &AwaitRematch },
    { CONSULT_MODE, &ConsultMode }
};

/* command list */
struct cmdstruct Commands[39] = {
    { "b",         CMD_BACK },
    { "back",      CMD_BACK },
    { "consult",   CMD_CONSULT },
    { "critique",  CMD_CRITIQUE },
    { "decline",   CMD_DECLINE },
    { "do",        CMD_DO },
    { "f",         CMD_FORWARD },
    { "fast",      CMD_FAST },
    { "forward",   CMD_FORWARD },
    { "fuck",      CMD_SILENT },
    { "g",         CMD_GOTO },
    { "go",        CMD_GOTO },
    { "goto",      CMD_GOTO },
    { "help",      CMD_HELP },
    { "hint",      CMD_HINT },
    { "join",      CMD_JOIN_ME },
    { "medium",    CMD_MEDIUM },
    { "l",         CMD_LINES },
    { "lines",     CMD_LINES },
    { "m",         CMD_MORE },
    { "more",      CMD_MORE },
    { "no",        CMD_DECLINE },
    { "ok",        CMD_REMATCH },
    { "quiet",     CMD_SILENT },
    { "rematch",   CMD_REMATCH },
    { "reset",     CMD_RESET },
    { "resign",    CMD_RESIGN },
    { "resume",    CMD_RESUME },
    { "shut",      CMD_SILENT },
    { "silent",    CMD_SILENT },
    { "slow",      CMD_SLOW },
    { "status",    CMD_STATUS },
    { "sure",      CMD_REMATCH },
    { "synch",     CMD_RESUME },
    { "verbose",   CMD_VERBOSE },
    { "w",         CMD_WORDS },
    { "words",     CMD_WORDS },
    { "yes",       CMD_REMATCH },
    { "",          CMD_LAST }
};

