#include <ctype.h>
#include <stdio.h>
#include "interact.h"
#include "socket.h"
#include "command.h"
#include "globals.h"
#include "stringops.h"
#include "random_functs.h"
#include "resp.h"
static char tempstr [2048];
int main (int argc, char **argv)
{
player *current_player;
char *player, *action, *line_current, *line;
globals *g;
int quit = 0, n;
#ifdef FUNCTIONS
puts ("**main");
#endif
random_seed ();
if (argc != 2)
{
fprintf (stderr, "Usage:%s {global file}\n", *argv);
exit (1);
}
g = globals_load (argv[1]);
sprintf (tempstr, "connect %s %s", g->name->name, g->password);
socket_write (g->socket, tempstr);
if (g->room_home != NULL)
socket_write (g->socket, g->home_str);
do
{
if (socket_ready (g->socket))
{
if (socket_read (g->socket, &line) != 0)
{
globals_save (g);
globals_burn (g);
exit (1);
}
line_current = tokenize (tempstr, line);
copystring (player, tempstr);
line_current = tokenize (tempstr, line_current);
copystring (action, tempstr);
if (((current_player = player_find
(g->player_list, player)) == NULL) &&
(!strcasecmp (action, "says,")))
{
player_add (g->player_list, player);
current_player = g->player_list->tail;
}
if ((current_player) &&
!name_test (g->name, current_player->name))
{
if (!strcasecmp (action, g->command_str))
{
quit = command (g,
current_player,
quotestrip (line_current));
}
interact (g, current_player, line);
}
if (player) free (player);
if (action) free (action);
}
else
{
if ((g->moveodds > 0) &&
((random_int () % g->moveodds) == 0))
command_move (g, "");
if ((g->actodds > 0) &&
((random_int () % g->actodds) == 0))
{
group *rnd_g;
resp *r;
rnd_g = group_find (g->group_list, "RANDOM");
if ((rnd_g != NULL) &&
(rnd_g->r->priority_total > 0))
{
r = resp_find_pri (rnd_g->r,
n = random_int () %
rnd_g->r->priority_total);
resp_parse_output ( r->response,
g->name->name, g);
}
}
}
}
while (!quit);
if (g->room_home != NULL)
socket_write (g->socket, g->home_str);
globals_save (g);
globals_burn (g);
return 0;
}