void Menu_Proxy_Key(int key) { if (!CheckProxyConnection()) return; switch (key) { case K_ESCAPE: ProxyMenuToggle(); M_LeaveMenus(); break; case K_MOUSE1: case K_ENTER: ProxyMenuCmd("select"); break; case K_BACKSPACE: ProxyMenuCmd("back"); break; case K_UPARROW: ProxyMenuCmd("up"); break; case K_DOWNARROW: ProxyMenuCmd("down"); break; case K_LEFTARROW: ProxyMenuCmd("left"); break; case K_RIGHTARROW: ProxyMenuCmd("right"); break; case K_PGDN: ProxyMenuCmd("pgdn"); break; case K_PGUP: ProxyMenuCmd("pgup"); break; case K_HOME: ProxyMenuCmd("home"); break; case K_END: ProxyMenuCmd("end"); break; case K_DEL: ProxyMenuCmd("delete"); break; case K_INS: ProxyMenuCmd("help"); break; } }
// disconnection from proxy should make us leave menus qbool CheckProxyConnection(void) { if (!CL_ConnectedToProxy()) { Com_Printf("You are not connected to a proxy.\n"); M_LeaveMenus(); return false; } return true; }
void Menu_CG_Coop_StartGame(void) { int tp = (cg_teamdamage_var == TD_OFF) ? 1 : 2; int skill = game_skill_var; Cbuf_AddText("disconnect; sv_progsname spprogs; gamedir qw; coop 1; deathmatch 0\n"); Cbuf_AddText(va("teamplay %d; skill %d;maxclients %d;map start", tp,skill,coopmaxplayers)); M_LeaveMenus(); }
/* bot match starter */ static void M_CG_BotMatch_Start(void) { const char *cfg; const char *map = bm_map_desc[bm_map_var]; switch (bm_type_var) { case bmt_arena: cfg = "arena"; break; case bmt_clarena: cfg = "clarena"; break; case bmt_duel: cfg = "duel"; break; case bmt_ffa: cfg = "ffa"; break; case bmt_team: cfg = "team"; break; default: cfg = "ffa"; break; } Cbuf_AddText(va("disconnect;sv_progsname qwprogs;gamedir fbca;exec configs/%s.cfg;map %s\n",cfg,map)); M_LeaveMenus(); }
void Menu_CG_DM_StartGame(void) { int dm; int tp; Cbuf_AddText("disconnect; gamedir qw; coop 0; sv_progsname qwprogs;\n"); switch (DM_game_mode_var) { case DMGM_ffa: tp = 0; dm = 3; break; case DMGM_duel: tp = 0; dm = 3; break; case DMGM_tp: tp = 2; dm = 1; break; case DMGM_arena: tp = 0; dm = 4; break; default: tp = 0; dm = 3; break; } Cbuf_AddText(va("deathmatch %d;teamplay %d\n",dm,tp)); Cbuf_AddText(va("maxclients %d;maxspectators %d\n",dm_maxplayers,dm_maxspectators)); Cbuf_AddText(va("timelimit %d;fraglimit %d\n",dm_timelimit,dm_fraglimit)); // todo: finish map choosing Cbuf_AddText("map dm4\n"); M_LeaveMenus(); }
int CT_Demo_Browser_Key(int key, wchar unichar, CTab_t *tab, CTabPage_t *page) { extern void M_ToggleMenu_f (void); extern void M_LeaveMenu (int); qbool processed = false; // Special case for adding zips/dirs to playlist. if (key == K_INS || (key == K_ENTER && keydown[K_CTRL])) { #ifdef WITH_ZIP if (FS_IsArchive (FL_GetCurrentPath(&demo_filelist))) { // Zip. Demo_AddZipToPlaylist (FL_GetCurrentPath(&demo_filelist)); return true; } else #endif // WITH_ZIP { if (FL_IsCurrentDir (&demo_filelist)) { // Dir. Demo_AddDirToPlaylist (FL_GetCurrentPath(&demo_filelist)); return true; } } } // See if the main filebrowser functions wants to // do something first, like enter a dir/zip. processed = FL_Key(&demo_filelist, key); if (!processed) { if (key == K_INS) { // Add the selected demo to the playlist. Demo_AddDemoToPlaylist (FL_GetCurrentDisplay (&demo_filelist), FL_GetCurrentPath (&demo_filelist)); } else if (key == K_ENTER || key == K_MOUSE1) { if (keydown[K_CTRL]) { // Add the selected demo to the playlist. Demo_AddDemoToPlaylist (FL_GetCurrentDisplay (&demo_filelist), FL_GetCurrentPath (&demo_filelist)); } else if (keydown[K_SHIFT]) { M_LeaveMenus(); Cbuf_AddText (va("timedemo \"%s\"\n", FL_GetCurrentPath(&demo_filelist))); } else { M_LeaveMenus(); Cbuf_AddText(va("playdemo \"%s\"\n", FL_GetCurrentPath(&demo_filelist))); processed = true; } } } return processed; }