#include <ctype.h> #include <stdio.h> #include "com_room.h" #include "socket.h" #include "stringops.h" #include "command.h" static char word [128], output[1024]; void command_room_add (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_room_add"); #endif l = tokenize (word, l); room_add(g->room_list, word); if (p->verbose) { sprintf (output, "w %s = Room %s added, #%d.", p->name, g->room_list->tail->name, g->room_list->size); socket_write (g->socket, output); } } void command_room_delete (globals *g, player *p, char *l) { char room_name[128]; room *r; #ifdef FUNCTIONS puts ("**command_group_delete"); #endif l = tokenize (word, l); if (g->room_list->head == NULL) { if (p->verbose) { sprintf (output, "w %s = No rooms currently in \ memory.", p->name); socket_write (g->socket, output); } return; } if (strlen(word)) { if (*word == '*') r = g->room_current; else r = room_find (g->room_list, word); if (r == NULL) { sprintf (output, "w %s = Room %s not \ found.", p->name, word); socket_write (g->socket, output); return; } strcpy (room_name, r->name); if (r == g->room_current) g->room_current = NULL; room_delete (g->room_list, r); if (p->verbose) { sprintf (output, "w %s = Room %s deleted.", p->name, room_name); socket_write (g->socket, output); } } } void command_room_current (globals *g, player *p, char *l) { char room_name[128]; room *r; #ifdef FUNCTIONS puts ("**command_group_current"); #endif l = tokenize (word, l); if (g->room_list->head == NULL) { if (p->verbose) { sprintf (output, "w %s = No rooms currently in \ memory.", p->name); socket_write (g->socket, output); } return; } if (strlen(word)) { if (*word == '*') r = g->room_current; else r = room_find (g->room_list, word); if (r == NULL) { sprintf (output, "w %s = Room %s not \ found.", p->name, word); socket_write (g->socket, output); return; } g->room_current = r; } if (p->verbose) { if (g->room_current != NULL) { sprintf (output, "w %s = Current room is:%d %s", p->name, room_num (g->room_list, g->room_current), g->room_current->name); socket_write (g->socket, output); } else { sprintf (output, "w %s = Current room is:-1 Nowhere", p->name); socket_write (g->socket, output); } } } void command_room_list (globals *g, player *p, char *l) { room *list; int num = 1; #ifdef FUNCTIONS puts ("**command_room_list"); #endif if (g->room_list->head == NULL) { sprintf (output, "w %s = No rooms in memory.", p->name); socket_write (g->socket, output); } for (list = g->room_list->head; list != NULL; list = list->next, num++) { sprintf (output, "w %s = %d %s", p->name, num, list->name); socket_write (g->socket, output); } } void command_room_default (globals *g, player *p, char *l) { l = tokenize (word, l); if (strlen (word) > 0) { free (g->room_file); copystring (g->room_file, word); } if (p->verbose) { sprintf (output, "w %s = Room file default name:%s", p->name, g->room_file); socket_write (g->socket, output); } } void command_room_load (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_room_load"); #endif l = tokenize (word, l); room_burn (g->room_list); g->room_list = room_load (strlen (word) ? word : g->room_file); if (p->verbose) { sprintf (output, "w %s = Room file %s loaded.", p->name, strlen (word) ? word : g->room_file); socket_write (g->socket, output); } } void command_room_save (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_room_save"); #endif l = tokenize (word, l); room_save (g->room_list, strlen (word) ? word : g->room_file); if (p->verbose) { sprintf (output, "w %s = Room file %s saved.", p->name, strlen (word) ? word : g->room_file); socket_write (g->socket, output); } } void command_room (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_room"); #endif l = tokenize (word, l); if (strlen (word) == 0) { if (p->verbose) { sprintf (output, "w %s = room commands:add, delete, \ list, default, current, load, save", p->name); socket_write (g->socket, output); } return; } if (!strcasecmp (word, "add")) command_room_add (g, p, l); if (!strcasecmp (word, "delete")) command_room_delete (g, p, l); if (!strcasecmp (word, "list")) command_room_list (g, p, l); if (!strcasecmp (word, "default")) command_room_default (g, p, l); if (!strcasecmp (word, "current")) command_room_current (g, p, l); if (!strcasecmp (word, "load")) command_room_load (g, p, l); if (!strcasecmp (word, "save")) command_room_save (g, p, l); }