void input_for_one(player * p) { char *pick; void (*fn) (); if (p->input_to_fn && !(current_room == prison && !(p->residency & (ADMIN | SU)))) { p->idle = 0; p->idle_msg[0] = 0; last_com = &input_to; stack_check = stack; fn = p->input_to_fn; (*fn) (p, p->ibuffer); if (stack != stack_check) bad_stack(); sys_flags &= ~(FAILED_COMMAND | PIPE | ROOM_TAG | FRIEND_TAG | EVERYONE_TAG); command_type = 0; return; } if (!p->ibuffer[0]) return; p->idle = 0; p->idle_msg[0] = 0; action = "doing command"; if (p->ibuffer[0] != '#') { if (p->saved_flags & CONVERSE) { pick = p->ibuffer; while (*pick && isspace(*pick)) pick++; if (*pick) if (*pick == '/') if (current_room == prison && !(p->residency & (ADMIN | SU))) sub_command(p, pick + 1, restricted_list); else match_commands(p, pick + 1); else say(p, pick); } else if (current_room == prison && !(p->residency & (ADMIN | SU))) sub_command(p, p->ibuffer, restricted_list); else match_commands(p, p->ibuffer); } }
void news_command(player *p,char *str) { if (p->edit_info) { tell_player(p,"Can't do news commands whilst in editor.\n"); return; } if ((*str=='/') && (p->input_to_fn==news_command)) { match_commands(p,str+1); if (!(p->flags&PANIC) && (p->input_to_fn==news_command)) do_prompt(p,"News Mode >"); return; } if (!*str) if (p->input_to_fn==news_command) { tell_player(p,"Format: news <action>\n"); if (!(p->flags&PANIC) && (p->input_to_fn==news_command)) do_prompt(p,"News Mode >"); return; } else { tell_player(p,"Entering news mode. Use 'end' to leave.\n" "'/<command>' does normal commands.\n"); p->flags &= ~PROMPT; p->input_to_fn=news_command; } else sub_command(p,str,news_list); if (!(p->flags&PANIC) && (p->input_to_fn==news_command)) do_prompt(p,"News Mode >"); }
void intercom_command(player * p, char *str) { if (!*str) { tell_player(p, " Format: intercom <sub command>\n"); return; } sub_command(p, str, intercom_list); return; }
void editor_main(player *p,char *str) { if (!p->edit_info) { log("error","Editor called with no edit_info"); return; } if (*str=='/') { restore_flags(p); match_commands(p,str+1); save_flags(p); return; } if (*str=='.') { sub_command(p,str+1,editor_list); if (p->edit_info) do_prompt(p,"+"); return; } insert_line(p,str); do_prompt(p,"+"); }
void mail_command(player *p,char *str) { if (p->edit_info) { tell_player(p,"Can't do mail commands whilst in editor.\n"); return; } if (!p->saved) { tell_player(p,"You have no save information, and so can't use " "mail.\n"); return; } if ((*str=='/') && (p->input_to_fn==mail_command)) { match_commands(p,str+1); if (!(p->flags&PANIC) && (p->input_to_fn==mail_command)) do_prompt(p,"Mail Mode >"); return; } if (!*str) if (p->input_to_fn==mail_command) { tell_player(p,"Format: mail <action>\n"); if (!(p->flags&PANIC) && (p->input_to_fn==mail_command)) do_prompt(p,"Mail Mode >"); return; } else { tell_player(p,"Entering mail mode. Use 'end' to leave.\n" "'/<command>' does normal commands.\n"); p->flags &= ~PROMPT; p->input_to_fn=mail_command; } else sub_command(p,str,mail_list); if (!(p->flags&PANIC) && (p->input_to_fn==mail_command)) do_prompt(p,"Mail Mode >"); }
/* * void execute_commands() * * Processes commands until the QUIT command is entered * */ void execute_commands() { char buffer[MAX_INPUT_STRING]; int num_chars = 0; while ( TRUE ) { printf( PROMPT ); scanf("%s", buffer); num_chars = strlen(buffer); if ( is_valid_number( buffer ) ) { push( atoi(buffer) ); continue; } if ( num_chars > 1 ) { printf( BAD_INPUT_MSG ); continue; } if ( tolower( buffer[0] ) == QUIT ) return; /* Remove the TODO_MSG as you implement and test commands */ switch( tolower( buffer[0] ) ){ case ADD: add_command(); break; case SUB: sub_command(); break; case MULT: mult_command(); break; case DIV: div_command(); break; case MOD: mod_command(); break; case AND: and_command(); break; case OR: or_command(); break; case XOR: xor_command(); break; case NOT: not_command(); break; case FACTORIAL: factorial_command(); break; case TOGGLE_HEX: toggle_hex(); break; case TOGGLE_BUG: toggle_bug(); break; case PRINT_STACK: print_stack(); break; case PRINT_TOP: print_top(); break; case CLEAR: clear_command(); break; case EXCHANGE: exchange_command(); break; case POP: pop(); break; case HELP: help_command(); break; default: printf( BAD_INPUT_MSG ); } } }