/* Bridge Window Management Functions: void BridgeMapPrompt(int code) void BridgePromptCB(void *data, char *value) void BridgeWarnWeaponsOffline(int object_num) --- */ #include #include #include "net.h" #include "swterm.h" #define MIN(a,b) (((a) < (b)) ? (a) : (b)) #define MAX(a,b) (((a) > (b)) ? (a) : (b)) /* * Maps the bridge window prompt and sets the prompt_mode. */ void BridgeMapPrompt(int code) { char *name = "Prompt:"; Prompt *p; CDisplay *display = NULL; if(total_curses_displays > 0) display = curses_display[0]; if(display == NULL) return; p = &bridge_win.prompt; /* Set global prompt mode. */ bridge_win.prompt_mode = code; /* Change prompt's name. */ switch(bridge_win.prompt_mode) { case PROMPT_MODE_CONNECT: name = "Connect:"; break; case PROMPT_MODE_CHANNEL: name = "Com Channel:"; break; case PROMPT_MODE_SHIELD_FREQ: name = "Shield Frequency:"; break; case PROMPT_MODE_WEAPON_FREQ: name = "Weapon Frequency:"; break; case PROMPT_MODE_INTERCEPT: name = "Intercept:"; break; case PROMPT_MODE_MESSAGE: name = "Message:"; break; case PROMPT_MODE_SERVER_CMD: name = "Server Command:"; break; case PROMPT_MODE_EXIT: name = "Exit?:"; break; } PromptSetLabel(display, p, name); /* Change prompt's client data. */ p->client_data = (void *)code; /* Clear prompt's contents. */ PromptSetS(display, p, ""); /* Map prompt. */ PromptResize( display, p, MAX(CWRootWidth(display) - 2, 10), 1 ); p->x = 1; p->y = CWRootHeight(display) - 5; PromptMap(display, p); PromptSetFocus(display, p, 1); return; } /* * Bridge window's prompt callback handler. */ void BridgePromptCB(void *data, char *value) { int code, object_num; xsw_object_struct *obj_ptr; CDisplay *display = NULL; if(total_curses_displays > 0) display = curses_display[0]; if((display == NULL) || (value == NULL) ) return; /* Get prompt mode. */ code = (int)data; /* Handle by prompt mode. */ switch(code) { case PROMPT_MODE_CONNECT: SWTDoConnect(value); break; case PROMPT_MODE_CHANNEL: object_num = net_parms.player_obj_num; obj_ptr = net_parms.player_obj_ptr; if(obj_ptr != NULL) { obj_ptr->com_channel = (int)((double)atof(value) * 100); NetSendSetChannel(object_num, obj_ptr->com_channel); } break; case PROMPT_MODE_SHIELD_FREQ: object_num = net_parms.player_obj_num; obj_ptr = net_parms.player_obj_ptr; if(obj_ptr != NULL) { NetSendSetShields( object_num, obj_ptr->shield_state, atof(value) ); } break; case PROMPT_MODE_WEAPON_FREQ: local_control.weapon_freq = atof(value); break; case PROMPT_MODE_INTERCEPT: object_num = net_parms.player_obj_num; obj_ptr = net_parms.player_obj_ptr; if(obj_ptr != NULL) { NetSendIntercept( object_num, ((*value == '\0') ? "#off" : value) ); } break; case PROMPT_MODE_MESSAGE: object_num = net_parms.player_obj_num; obj_ptr = net_parms.player_obj_ptr; if(obj_ptr != NULL) { NetSendComMessage( object_num, -1, obj_ptr->com_channel, value ); } break; case PROMPT_MODE_SERVER_CMD: if(net_parms.connection_state != CON_STATE_NOT_CONNECTED) { NetSendExec(value); } break; case PROMPT_MODE_EXIT: if(toupper(value[0]) == 'Y') { /* Set global runlevel to 1 to begin shutting * down nicly. */ runlevel = 1; } break; } /* Reset global prompt_mode. */ bridge_win.prompt_mode = PROMPT_MODE_NONE; /* Unmap prompt. */ PromptUnmap(display, &bridge_win.prompt); return; } void BridgeWarnWeaponsOffline(int object_num) { MesgAdd( "Weapons are currently offline, press 'w' to bring them online.", 0 ); return; }