/* ================ CL_MissionPackCDTrack Returns correct OGG track number for mission packs. This assumes that the standard Q2 CD was ripped as track02-track11, and the Rogue CD as track12-track21. ================ */ int32_t CL_MissionPackCDTrack (int32_t tracknum) { if (modType("rogue") || cl_rogue_music->value) { if (tracknum >= 2 && tracknum <= 11) return tracknum + 10; else return tracknum; } // an out-of-order mix from Q2 and Rogue CDs else if (modType("xatrix") || cl_xatrix_music->value) { switch(tracknum) { case 2: return 9; break; case 3: return 13; break; case 4: return 14; break; case 5: return 7; break; case 6: return 16; break; case 7: return 2; break; case 8: return 15; break; case 9: return 3; break; case 10: return 4; break; case 11: return 18; break; default: return tracknum; break; } } else return tracknum; }
void M_Menu_Credits_f(void) { int n; int count; char *p; creditsBuffer = NULL; count = FS_LoadFile("credits", (void **) &creditsBuffer); if (count != -1) { p = creditsBuffer; for (n = 0; n < 255; n++) { creditsIndex[n] = p; while (*p != '\r' && *p != '\n') { p++; if (--count == 0) { break; } } if (*p == '\r') { *p++ = 0; if (--count == 0) { break; } } *p++ = 0; if (--count == 0) { break; } } creditsIndex[++n] = 0; credits = (const char**) creditsIndex; } else { if (modType("xatrix")) // Xatrix { credits = xatcredits; } else if (modType("rogue")) // Rogue { credits = roguecredits; } else { credits = idcredits; } } credits_start_time = cls.realtime; credits_start_line = 0; // allow credits to scroll past top of screen UI_PushMenu(M_Credits_MenuDraw, M_Credits_Key); }
static void DMFlagCallback ( void *self ) { menulist_s *f = ( menulist_s * ) self; int32_t flags; int32_t bit = 0; flags = Cvar_VariableValue( "dmflags" ); if ( f == &s_friendlyfire_box ) { if ( f->curvalue ) flags &= ~DF_NO_FRIENDLY_FIRE; else flags |= DF_NO_FRIENDLY_FIRE; goto setvalue; } else if ( f == &s_falls_box ) { if ( f->curvalue ) flags &= ~DF_NO_FALLING; else flags |= DF_NO_FALLING; goto setvalue; } else if ( f == &s_weapons_stay_box ) { bit = DF_WEAPONS_STAY; } else if ( f == &s_instant_powerups_box ) { bit = DF_INSTANT_ITEMS; } else if ( f == &s_allow_exit_box ) { bit = DF_ALLOW_EXIT; } else if ( f == &s_powerups_box ) { if ( f->curvalue ) flags &= ~DF_NO_ITEMS; else flags |= DF_NO_ITEMS; goto setvalue; } else if ( f == &s_health_box ) { if ( f->curvalue ) flags &= ~DF_NO_HEALTH; else flags |= DF_NO_HEALTH; goto setvalue; } else if ( f == &s_spawn_farthest_box ) { bit = DF_SPAWN_FARTHEST; } else if ( f == &s_teamplay_box ) { if ( f->curvalue == 1 ) { flags |= DF_SKINTEAMS; flags &= ~DF_MODELTEAMS; } else if ( f->curvalue == 2 ) { flags |= DF_MODELTEAMS; flags &= ~DF_SKINTEAMS; } else { flags &= ~( DF_MODELTEAMS | DF_SKINTEAMS ); } goto setvalue; } else if ( f == &s_samelevel_box ) { bit = DF_SAME_LEVEL; } else if ( f == &s_force_respawn_box ) { bit = DF_FORCE_RESPAWN; } else if ( f == &s_armor_box ) { if ( f->curvalue ) flags &= ~DF_NO_ARMOR; else flags |= DF_NO_ARMOR; goto setvalue; } else if ( f == &s_infinite_ammo_box ) { bit = DF_INFINITE_AMMO; } else if ( f == &s_fixed_fov_box ) { bit = DF_FIXED_FOV; } else if ( f == &s_quad_drop_box ) { bit = DF_QUAD_DROP; } // Knightmare added else if (modType("xatrix")) { if ( f == &s_quadfire_drop_box) { bit = DF_QUADFIRE_DROP; } } //======= //ROGUE else if (roguepath()) { if ( f == &s_no_mines_box) { bit = DF_NO_MINES; } else if ( f == &s_no_nukes_box) { bit = DF_NO_NUKES; } else if ( f == &s_stack_double_box) { bit = DF_NO_STACK_DOUBLE; } else if ( f == &s_no_spheres_box) { bit = DF_NO_SPHERES; } } //ROGUE //======= // Knightmare added- CTF flags else if ( CTF_menumode() ) { if ( f == &s_ctf_forceteam_box) { bit = DF_CTF_FORCEJOIN; } else if ( f == &s_ctf_armor_protect_box) { bit = DF_ARMOR_PROTECT; } else if ( f == &s_ctf_notechs_box) { bit = DF_CTF_NO_TECH; } } if ( f ) { if ( f->curvalue == 0 ) flags &= ~bit; else flags |= bit; } setvalue: Cvar_SetValue ("dmflags", flags); Com_sprintf( dmoptions_statusbar, sizeof( dmoptions_statusbar ), "dmflags = %d", flags ); }
void DMOptions_MenuInit( void ) { static const char *yes_no_names[] = { "no", "yes", 0 }; static const char *teamplay_names[] = { "disabled", "by skin", "by model", 0 }; int32_t dmflags = Cvar_VariableValue( "dmflags" ); int32_t y = 0; s_dmoptions_menu.x = SCREEN_WIDTH*0.5; // s_dmoptions_menu.x = viddef.width * 0.50; s_dmoptions_menu.y = SCREEN_HEIGHT*0.5 - 80; s_dmoptions_menu.nitems = 0; s_falls_box.generic.type = MTYPE_SPINCONTROL; s_falls_box.generic.x = 0; s_falls_box.generic.y = y; // 0 s_falls_box.generic.name = "falling damage"; s_falls_box.generic.callback = DMFlagCallback; s_falls_box.itemnames = yes_no_names; s_falls_box.curvalue = ( dmflags & DF_NO_FALLING ) == 0; s_weapons_stay_box.generic.type = MTYPE_SPINCONTROL; s_weapons_stay_box.generic.x = 0; s_weapons_stay_box.generic.y = y += MENU_LINE_SIZE; s_weapons_stay_box.generic.name = "weapons stay"; s_weapons_stay_box.generic.callback = DMFlagCallback; s_weapons_stay_box.itemnames = yes_no_names; s_weapons_stay_box.curvalue = ( dmflags & DF_WEAPONS_STAY ) != 0; s_instant_powerups_box.generic.type = MTYPE_SPINCONTROL; s_instant_powerups_box.generic.x = 0; s_instant_powerups_box.generic.y = y += MENU_LINE_SIZE; s_instant_powerups_box.generic.name = "instant powerups"; s_instant_powerups_box.generic.callback = DMFlagCallback; s_instant_powerups_box.itemnames = yes_no_names; s_instant_powerups_box.curvalue = ( dmflags & DF_INSTANT_ITEMS ) != 0; s_powerups_box.generic.type = MTYPE_SPINCONTROL; s_powerups_box.generic.x = 0; s_powerups_box.generic.y = y += MENU_LINE_SIZE; s_powerups_box.generic.name = "allow powerups"; s_powerups_box.generic.callback = DMFlagCallback; s_powerups_box.itemnames = yes_no_names; s_powerups_box.curvalue = ( dmflags & DF_NO_ITEMS ) == 0; s_health_box.generic.type = MTYPE_SPINCONTROL; s_health_box.generic.x = 0; s_health_box.generic.y = y += MENU_LINE_SIZE; s_health_box.generic.callback = DMFlagCallback; s_health_box.generic.name = "allow health"; s_health_box.itemnames = yes_no_names; s_health_box.curvalue = ( dmflags & DF_NO_HEALTH ) == 0; s_armor_box.generic.type = MTYPE_SPINCONTROL; s_armor_box.generic.x = 0; s_armor_box.generic.y = y += MENU_LINE_SIZE; s_armor_box.generic.name = "allow armor"; s_armor_box.generic.callback = DMFlagCallback; s_armor_box.itemnames = yes_no_names; s_armor_box.curvalue = ( dmflags & DF_NO_ARMOR ) == 0; s_spawn_farthest_box.generic.type = MTYPE_SPINCONTROL; s_spawn_farthest_box.generic.x = 0; s_spawn_farthest_box.generic.y = y += MENU_LINE_SIZE; s_spawn_farthest_box.generic.name = "spawn farthest"; s_spawn_farthest_box.generic.callback = DMFlagCallback; s_spawn_farthest_box.itemnames = yes_no_names; s_spawn_farthest_box.curvalue = ( dmflags & DF_SPAWN_FARTHEST ) != 0; s_samelevel_box.generic.type = MTYPE_SPINCONTROL; s_samelevel_box.generic.x = 0; s_samelevel_box.generic.y = y += MENU_LINE_SIZE; s_samelevel_box.generic.name = "same map"; s_samelevel_box.generic.callback = DMFlagCallback; s_samelevel_box.itemnames = yes_no_names; s_samelevel_box.curvalue = ( dmflags & DF_SAME_LEVEL ) != 0; s_force_respawn_box.generic.type = MTYPE_SPINCONTROL; s_force_respawn_box.generic.x = 0; s_force_respawn_box.generic.y = y += MENU_LINE_SIZE; s_force_respawn_box.generic.name = "force respawn"; s_force_respawn_box.generic.callback = DMFlagCallback; s_force_respawn_box.itemnames = yes_no_names; s_force_respawn_box.curvalue = ( dmflags & DF_FORCE_RESPAWN ) != 0; s_teamplay_box.generic.type = MTYPE_SPINCONTROL; s_teamplay_box.generic.x = 0; s_teamplay_box.generic.y = y += MENU_LINE_SIZE; s_teamplay_box.generic.name = "teamplay"; s_teamplay_box.generic.callback = DMFlagCallback; s_teamplay_box.itemnames = teamplay_names; s_allow_exit_box.generic.type = MTYPE_SPINCONTROL; s_allow_exit_box.generic.x = 0; s_allow_exit_box.generic.y = y += MENU_LINE_SIZE; s_allow_exit_box.generic.name = "allow exit"; s_allow_exit_box.generic.callback = DMFlagCallback; s_allow_exit_box.itemnames = yes_no_names; s_allow_exit_box.curvalue = ( dmflags & DF_ALLOW_EXIT ) != 0; s_infinite_ammo_box.generic.type = MTYPE_SPINCONTROL; s_infinite_ammo_box.generic.x = 0; s_infinite_ammo_box.generic.y = y += MENU_LINE_SIZE; s_infinite_ammo_box.generic.name = "infinite ammo"; s_infinite_ammo_box.generic.callback = DMFlagCallback; s_infinite_ammo_box.itemnames = yes_no_names; s_infinite_ammo_box.curvalue = ( dmflags & DF_INFINITE_AMMO ) != 0; s_fixed_fov_box.generic.type = MTYPE_SPINCONTROL; s_fixed_fov_box.generic.x = 0; s_fixed_fov_box.generic.y = y += MENU_LINE_SIZE; s_fixed_fov_box.generic.name = "fixed FOV"; s_fixed_fov_box.generic.callback = DMFlagCallback; s_fixed_fov_box.itemnames = yes_no_names; s_fixed_fov_box.curvalue = ( dmflags & DF_FIXED_FOV ) != 0; s_quad_drop_box.generic.type = MTYPE_SPINCONTROL; s_quad_drop_box.generic.x = 0; s_quad_drop_box.generic.y = y += MENU_LINE_SIZE; s_quad_drop_box.generic.name = "quad drop"; s_quad_drop_box.generic.callback = DMFlagCallback; s_quad_drop_box.itemnames = yes_no_names; s_quad_drop_box.curvalue = ( dmflags & DF_QUAD_DROP ) != 0; s_friendlyfire_box.generic.type = MTYPE_SPINCONTROL; s_friendlyfire_box.generic.x = 0; s_friendlyfire_box.generic.y = y += MENU_LINE_SIZE; s_friendlyfire_box.generic.name = "friendly fire"; s_friendlyfire_box.generic.callback = DMFlagCallback; s_friendlyfire_box.itemnames = yes_no_names; s_friendlyfire_box.curvalue = ( dmflags & DF_NO_FRIENDLY_FIRE ) == 0; // Knightmare added if (modType("xatrix")) { s_quadfire_drop_box.generic.type = MTYPE_SPINCONTROL; s_quadfire_drop_box.generic.x = 0; s_quadfire_drop_box.generic.y = y += MENU_LINE_SIZE; s_quadfire_drop_box.generic.name = "dualfire drop"; s_quadfire_drop_box.generic.callback = DMFlagCallback; s_quadfire_drop_box.itemnames = yes_no_names; s_quadfire_drop_box.curvalue = ( dmflags & DF_QUADFIRE_DROP ) != 0; } //============ //ROGUE //Knightmare 12/23/2001 else if (roguepath()) { s_no_mines_box.generic.type = MTYPE_SPINCONTROL; s_no_mines_box.generic.x = 0; s_no_mines_box.generic.y = y += MENU_LINE_SIZE; s_no_mines_box.generic.name = "remove mines"; s_no_mines_box.generic.callback = DMFlagCallback; s_no_mines_box.itemnames = yes_no_names; s_no_mines_box.curvalue = ( dmflags & DF_NO_MINES ) != 0; s_no_nukes_box.generic.type = MTYPE_SPINCONTROL; s_no_nukes_box.generic.x = 0; s_no_nukes_box.generic.y = y += MENU_LINE_SIZE; s_no_nukes_box.generic.name = "remove nukes"; s_no_nukes_box.generic.callback = DMFlagCallback; s_no_nukes_box.itemnames = yes_no_names; s_no_nukes_box.curvalue = ( dmflags & DF_NO_NUKES ) != 0; s_stack_double_box.generic.type = MTYPE_SPINCONTROL; s_stack_double_box.generic.x = 0; s_stack_double_box.generic.y = y += MENU_LINE_SIZE; s_stack_double_box.generic.name = "2x/4x stacking off"; s_stack_double_box.generic.callback = DMFlagCallback; s_stack_double_box.itemnames = yes_no_names; s_stack_double_box.curvalue = ( dmflags & DF_NO_STACK_DOUBLE ) != 0; s_no_spheres_box.generic.type = MTYPE_SPINCONTROL; s_no_spheres_box.generic.x = 0; s_no_spheres_box.generic.y = y += MENU_LINE_SIZE; s_no_spheres_box.generic.name = "remove spheres"; s_no_spheres_box.generic.callback = DMFlagCallback; s_no_spheres_box.itemnames = yes_no_names; s_no_spheres_box.curvalue = ( dmflags & DF_NO_SPHERES ) != 0; } //ROGUE //============ // Knightmare added else if (CTF_menumode()) { s_ctf_forceteam_box.generic.type = MTYPE_SPINCONTROL; s_ctf_forceteam_box.generic.x = 0; s_ctf_forceteam_box.generic.y = y += MENU_LINE_SIZE; s_ctf_forceteam_box.generic.name = "force team join"; s_ctf_forceteam_box.generic.callback = DMFlagCallback; s_ctf_forceteam_box.itemnames = yes_no_names; s_ctf_forceteam_box.curvalue = ( dmflags & DF_CTF_FORCEJOIN ) != 0; s_ctf_armor_protect_box.generic.type = MTYPE_SPINCONTROL; s_ctf_armor_protect_box.generic.x = 0; s_ctf_armor_protect_box.generic.y = y += MENU_LINE_SIZE; s_ctf_armor_protect_box.generic.name = "team armor protect"; s_ctf_armor_protect_box.generic.callback = DMFlagCallback; s_ctf_armor_protect_box.itemnames = yes_no_names; s_ctf_armor_protect_box.curvalue = ( dmflags & DF_ARMOR_PROTECT ) != 0; s_ctf_notechs_box.generic.type = MTYPE_SPINCONTROL; s_ctf_notechs_box.generic.x = 0; s_ctf_notechs_box.generic.y = y += MENU_LINE_SIZE; s_ctf_notechs_box.generic.name = "disable techs"; s_ctf_notechs_box.generic.callback = DMFlagCallback; s_ctf_notechs_box.itemnames = yes_no_names; s_ctf_notechs_box.curvalue = ( dmflags & DF_CTF_NO_TECH ) != 0; } s_dmoptions_back_action.generic.type = MTYPE_ACTION; s_dmoptions_back_action.generic.flags = QMF_LEFT_JUSTIFY; s_dmoptions_back_action.generic.x = 0; s_dmoptions_back_action.generic.y = y += 3*MENU_LINE_SIZE; s_dmoptions_back_action.generic.name = " back"; s_dmoptions_back_action.generic.callback = UI_BackMenu; Menu_AddItem( &s_dmoptions_menu, &s_falls_box ); Menu_AddItem( &s_dmoptions_menu, &s_weapons_stay_box ); Menu_AddItem( &s_dmoptions_menu, &s_instant_powerups_box ); Menu_AddItem( &s_dmoptions_menu, &s_powerups_box ); Menu_AddItem( &s_dmoptions_menu, &s_health_box ); Menu_AddItem( &s_dmoptions_menu, &s_armor_box ); Menu_AddItem( &s_dmoptions_menu, &s_spawn_farthest_box ); Menu_AddItem( &s_dmoptions_menu, &s_samelevel_box ); Menu_AddItem( &s_dmoptions_menu, &s_force_respawn_box ); Menu_AddItem( &s_dmoptions_menu, &s_teamplay_box ); Menu_AddItem( &s_dmoptions_menu, &s_allow_exit_box ); Menu_AddItem( &s_dmoptions_menu, &s_infinite_ammo_box ); Menu_AddItem( &s_dmoptions_menu, &s_fixed_fov_box ); Menu_AddItem( &s_dmoptions_menu, &s_quad_drop_box ); Menu_AddItem( &s_dmoptions_menu, &s_friendlyfire_box ); // Xatrix if (modType("xatrix")) Menu_AddItem( &s_dmoptions_menu, &s_quadfire_drop_box ); // Rogue else if (roguepath()) { Menu_AddItem( &s_dmoptions_menu, &s_no_mines_box ); Menu_AddItem( &s_dmoptions_menu, &s_no_nukes_box ); Menu_AddItem( &s_dmoptions_menu, &s_stack_double_box ); Menu_AddItem( &s_dmoptions_menu, &s_no_spheres_box ); } // CTF else if (CTF_menumode()) { Menu_AddItem( &s_dmoptions_menu, &s_ctf_forceteam_box ); Menu_AddItem( &s_dmoptions_menu, &s_ctf_armor_protect_box ); Menu_AddItem( &s_dmoptions_menu, &s_ctf_notechs_box ); } Menu_AddItem( &s_dmoptions_menu, &s_dmoptions_back_action ); // Menu_Center( &s_dmoptions_menu ); // set the original dmflags statusbar DMFlagCallback( 0 ); Menu_SetStatusBar( &s_dmoptions_menu, dmoptions_statusbar ); }
qboolean VID_CreateWindow( int width, int height, qboolean fullscreen ) { WNDCLASS wc; RECT r; cvar_t *vid_xpos, *vid_ypos; int stylebits; int x, y, w, h; int exstyle; /* Register the frame class */ wc.style = 0; wc.lpfnWndProc = (WNDPROC)glw_state.wndproc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = glw_state.hInstance; if (modType("xatrix")) { // q2mp1 wc.hIcon = LoadIcon(glw_state.hInstance, MAKEINTRESOURCE(IDI_ICON2)); //wc.lpszClassName = WINDOW_CLASS_NAME2; } else if (modType("rogue")) { // q2mp2 wc.hIcon = LoadIcon(glw_state.hInstance, MAKEINTRESOURCE(IDI_ICON3)); //wc.lpszClassName = WINDOW_CLASS_NAME3; } else { wc.hIcon = LoadIcon(glw_state.hInstance, MAKEINTRESOURCE(IDI_ICON1)); } wc.hCursor = LoadCursor (NULL,IDC_ARROW); wc.hbrBackground = (void *)COLOR_GRAYTEXT; wc.lpszMenuName = 0; wc.lpszClassName = WINDOW_CLASS_NAME; if (!RegisterClass (&wc) ) VID_Error (ERR_FATAL, "Couldn't register window class"); if (fullscreen) { exstyle = WS_EX_TOPMOST; //stylebits = WS_POPUP|WS_VISIBLE; stylebits = WS_POPUP|WS_SYSMENU|WS_VISIBLE; } else { exstyle = 0; //stylebits = WS_OVERLAPPED|WS_BORDER|WS_CAPTION|WS_VISIBLE; stylebits = WS_OVERLAPPED|WS_BORDER|WS_CAPTION|WS_SYSMENU|WS_VISIBLE; } r.left = 0; r.top = 0; r.right = width; r.bottom = height; AdjustWindowRect (&r, stylebits, FALSE); w = r.right - r.left; h = r.bottom - r.top; if (fullscreen) { x = 0; y = 0; } else { vid_xpos = Cvar_Get ("vid_xpos", "0", 0); vid_ypos = Cvar_Get ("vid_ypos", "0", 0); x = vid_xpos->value; y = vid_ypos->value; } glw_state.hWnd = CreateWindowEx ( exstyle, WINDOW_CLASS_NAME, "Thirty Flights of Loving", //Knightmare changed stylebits, x, y, w, h, NULL, NULL, glw_state.hInstance, NULL); if (!glw_state.hWnd) VID_Error (ERR_FATAL, "Couldn't create window"); ShowWindow( glw_state.hWnd, SW_SHOW ); UpdateWindow( glw_state.hWnd ); // init all the gl stuff for the window if (!GLimp_InitGL ()) { VID_Printf( PRINT_ALL, "VID_CreateWindow() - GLimp_InitGL failed\n"); return false; } SetForegroundWindow( glw_state.hWnd ); SetFocus( glw_state.hWnd ); // let the sound and input subsystems know about the new window VID_NewWindow (width, height); return true; }