#include <ctype.h> #include <stdio.h> #include "socket.h" #include "stim.h" #include "com_stim.h" #include "stringops.h" #include "group.h" #include "command.h" static char word [128], output[1024]; void command_stim_add (globals *g, player *p, char *l) { group *gr; #ifdef FUNCTIONS puts ("**command_stim_add"); #endif l = tokenize (word, l); if (strlen (word) == 0) { if (p->verbose) { sprintf (output, "w %s = stim add {group} {stim}", p->name); socket_write (g->socket, output); } return; } gr = (*word == '*') ? (g->group_current) : group_find (g->group_list, word); if (gr) { stim_add (gr->s, l); if (p->verbose) { sprintf (output, "w %s = Stimulus %s added to \ group %s.", p->name, l, gr->name); socket_write (g->socket, output); } } else { if (p->verbose) { if (g->group_current) sprintf (output, "w %s = No group by the name \ of %s.", p->name, word); else sprintf (output, "w %s = No groups in memory.", p->name); socket_write (g->socket, output); } } } void command_stim_list (globals *g, player *p, char *l) { group *gr; #ifdef FUNCTIONS puts ("**command_stim_list"); #endif l = tokenize (word, l); if (strlen (word) == 0) { if (p->verbose) { sprintf (output, "w %s = stim list {group}", p->name); socket_write (g->socket, output); } return; } gr = (*word == '*') ? g->group_current : group_find (g->group_list, word); if (gr != NULL) { stim *scan; int count = 1; scan = gr->s->head; sprintf (output, "w %s = Stimuli for group %s:", p->name, gr->name); socket_write (g->socket, output); while (scan != NULL) { sprintf (output, "w %s = %-4d - ", p->name, count); socket_write_noret (g->socket, output); stim_output (scan->tree, g); socket_write (g->socket, ""); scan = scan->next; count++; } } else { if (p->verbose) { if (g->group_current) sprintf (output, "w %s = No group by the name \ of %s.", p->name, word); else sprintf (output, "w %s = No groups in memory.", p->name); socket_write (g->socket, output); } } } void command_stim_delete (globals *g, player *p, char *l) { group *gr; #ifdef FUNCTIONS puts ("**command_stim_delete"); #endif l = tokenize (word, l); if (strlen (word) == 0) { if (p->verbose) { sprintf (output, "w %s = stim delete {group} {stim num}", p->name); socket_write (g->socket, output); } return; } gr = (*word == '*') ? (g->group_current) : group_find (g->group_list, l); if (gr) { stim *stim_found; stim_found = stim_find_num (gr->s, atoi(word)); if (stim_found != NULL) { stim_delete (gr->s, stim_found); if (p->verbose) { sprintf (output, "w %s = Stimulus %s deleted \ from group %s.", p->name, l, gr->name); socket_write (g->socket, output); } } else { if (p->verbose) { sprintf (output, "w %s = Stimulus %s doesn't \ exist in group %s.", p->name, l, gr->name); socket_write (g->socket, output); } } } else { if (p->verbose) { if (g->group_current) sprintf (output, "w %s = No group by the name \ of %s.", p->name, word); else sprintf (output, "w %s = No groups in memory.", p->name); socket_write (g->socket, output); } } } void command_stim (globals *g, player *p, char *l) { #ifdef FUNCTIONS puts ("**command_stim"); #endif l = tokenize (word, l); if (strlen (word) == 0) { if (p->verbose) { sprintf (output, "w %s = stim commands:add, delete, \ list", p->name); socket_write (g->socket, output); } return; } if (!strcasecmp (word, "add")) command_stim_add (g, p, l); if (!strcasecmp (word, "list")) command_stim_list (g, p, l); if (!strcasecmp (word, "delete")) command_stim_delete (g, p, l); }