#include <ctype.h>
#include <stdio.h>
#include "com_globals.h"
#include "stringops.h"
#include "socket.h"
#include "room.h"
static char word [128], output[1024];
void command_global_load (globals *g, player *p, char *l)
{
char *name, *file;
int flag;
#ifdef FUNCTIONS
puts ("**command_global_load");
#endif
copystring (name, p->name);
copystring (file, g->globals_file);
flag = p->verbose;
l = tokenize (word, l);
globals_burn (g);
g = globals_load (strlen (word) ? word : file);
if (flag)
{
sprintf (output, "w %s = Global file %s loaded.", name,
strlen (word) ? word : file);
socket_write (g->socket, output);
}
free (name);
free (file);
}
void command_global_save (globals *g, player *p, char *l)
{
char *globs;
#ifdef FUNCTIONS
puts ("**command_global_save");
#endif
l = tokenize (word, l);
if (strlen (word))
{
copystring (globs, g->globals_file);
g->globals_file = word;
globals_save (g);
g->globals_file = globs;
}
else
{
globals_save (g);
}
if (p->verbose)
{
sprintf (output, "w %s = Globals saved to file %s.", p->name,
strlen (word) ? word : g->globals_file);
socket_write (g->socket, output);
}
}
void command_global_default (globals *g, player *p, char *l)
{
#ifdef FUNCTIONS
puts ("**command_global_default");
#endif
l = tokenize (word, l);
if (strlen (word))
{
free (g->globals_file);
copystring (g->globals_file, word);
}
if (p->verbose)
{
sprintf (output, "w %s = Default globals file is %s.",
p->name, g->globals_file);
socket_write (g->socket, output);
}
}
void command_global_name (globals *g, player *p, char *l)
{
#ifdef FUNCTIONS
puts ("**command_global_name");
#endif
if (l && p->owner)
{
name_burn (g->name);
g->name = name_parse (l);
}
if (p->verbose)
{
name_list *scan;
sprintf (output, "w %s = Name of robot is ", p->name);
for (scan = g->name; scan; scan = scan->next)
{
strcat (output, scan->name);
if (scan->next) strcat (output, "|");
}
socket_write (g->socket, output);
}
}
void command_global_password (globals *g, player *p, char *l)
{
#ifdef FUNCTIONS
puts ("**command_global_password");
#endif
l = tokenize (word, l);
if (p->owner)
{
if (strlen (word))
{
free (g->password);
copystring (g->password, word);
}
if (p->verbose)
{
sprintf (output, "w %s = Password of robot is %s.",
p->name, g->password);
socket_write (g->socket, output);
}
}
}
void command_global_site (globals *g, player *p, char *l)
{
#ifdef FUNCTIONS
puts ("**command_global_site");
#endif
l = tokenize (word, l);
if ((strlen (word)) && p->owner)
{
free (g->site);
copystring (g->site, word);
}
if (p->verbose)
{
sprintf (output, "w %s = Site of robot is %s.", p->name,
g->site);
socket_write (g->socket, output);
}
}
void command_global_port (globals *g, player *p, char *l)
{
#ifdef FUNCTIONS
puts ("**command_global_port");
#endif
l = tokenize (word, l);
if ((strlen (word)) && p->owner)
{
g->port = atoi(word);
}
if (p->verbose)
{
sprintf (output, "w %s = Port of robot is %4d.", p->name,
g->port);
socket_write (g->socket, output);
}
}
void command_global_command (globals *g, player *p, char *l)
{
l = tokenize (word, l);
if (strlen (word) > 0)
{
free (g->command_str);
copystring (g->command_str, word);
}
if (p->verbose)
{
sprintf (output, "w %s = Command string set to:%s",
p->name, g->command_str);
socket_write (g->socket, output);
}
}
void command_global_home (globals *g, player *p, char *l)
{
l = tokenize (word, l);
if (strlen (word) > 0)
{
free (g->home_str);
copystring (g->home_str, word);
}
if (p->verbose)
{
sprintf (output, "w %s = Home string set to:%s",
p->name, g->home_str);
socket_write (g->socket, output);
}
}
void command_global_room (globals *g, player *p, char *l)
{
room *r;
l = tokenize (word, l);
if (strlen (word) > 0)
{
if (*word == '*')
g->room_home = g->room_current;
else
{
if (isalpha (*word))
g->room_home = room_find (g->room_list, word);
else
g->room_home = room_find_num
(g->room_list, atoi(word));
}
}
if (p->verbose)
{
if (g->room_home != NULL)
{
sprintf (output, "w %s = Home room set to:%d %s",
p->name, room_num (g->room_list, g->room_home),
g->room_home->name);
}
else
{
sprintf (output, "w %s = Home room set to:nowhere",
p->name);
}
socket_write (g->socket, output);
}
}
void command_global_moveodds (globals *g, player *p, char *l)
{
l = tokenize (word, l);
if (strlen (word) > 0)
{
g->moveodds = atoi(word);
}
if (p->verbose)
{
sprintf (output, "w %s = Move odds set to:1 in %d",
p->name, g->moveodds);
socket_write (g->socket, output);
}
}
void command_global_queuesize (globals *g, player *p, char *l)
{
#ifdef FUNCTIONS
puts ("**command_global_queuesize");
#endif
l = tokenize (word, l);
if (strlen (word) > 0)
{
g->movequeuesize = atoi(word);
}
if (p->verbose)
{
sprintf (output, "w %s = Move queue size set to:%d",
p->name, g->movequeuesize);
socket_write (g->socket, output);
}
}
void command_global_queue (globals *g, player *p, char *l)
{
room_queue_elt *scan;
#ifdef FUNCTIONS
puts ("**command_global_queue");
#endif
for (scan = g->rooms_visited->head; scan != NULL; scan = scan->next)
{
sprintf (output, "w %s = %d %s", p->name,
room_num (g->room_list, scan->room), scan->room->name);
socket_write (g->socket, output);
}
}
void command_global_actodds (globals *g, player *p, char *l)
{
l = tokenize (word, l);
if (strlen (word) > 0)
{
g->actodds = atoi(word);
}
if (p->verbose)
{
sprintf (output, "w %s = Action odds set to:1 in %d",
p->name, g->actodds);
socket_write (g->socket, output);
}
}
void command_global (globals *g, player *p, char *l)
{
#ifdef FUNCTIONS
puts ("**command_global");
#endif
l = tokenize (word, l);
if (strlen (word) == 0)
{
if (p->verbose)
{
sprintf (output, "w %s = global commands:load, save, \
default, name, password, site, port, command, \
home, room, moveodds, queue, queuesize, \
actodds",
p->name);
socket_write (g->socket, output);
}
return;
}
if (!strcasecmp (word, "load")) command_global_load (g, p, l);
if (!strcasecmp (word, "save")) command_global_save (g, p, l);
if (!strcasecmp (word, "default")) command_global_default (g, p, l);
if (!strcasecmp (word, "name")) command_global_name (g, p, l);
if (!strcasecmp (word, "password")) command_global_password (g, p, l);
if (!strcasecmp (word, "site")) command_global_site (g, p, l);
if (!strcasecmp (word, "port")) command_global_port (g, p, l);
if (!strcasecmp (word, "command")) command_global_command (g, p, l);
if (!strcasecmp (word, "home")) command_global_home (g, p, l);
if (!strcasecmp (word, "room")) command_global_room (g, p, l);
if (!strcasecmp (word, "moveodds")) command_global_moveodds (g, p, l);
if (!strcasecmp (word, "queuesize")) command_global_queuesize (g, p, l);
if (!strcasecmp (word, "queue")) command_global_queue (g, p, l);
if (!strcasecmp (word, "actodds")) command_global_actodds (g, p, l);
}