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 ); }
void DMOptions_MenuInit( void ) { static const char *yes_no_names[] = { "no", "yes", 0 }; static const char *teamplay_names[] = { "disabled", "by skin", "by model", 0 }; int dmflags = Cvar_VariableIntValue( "dmflags" ); int y = 0; memset(&s_dmoptions_menu, 0, sizeof(s_dmoptions_menu)); s_dmoptions_menu.x = viddef.width * 0.50; s_dmoptions_menu.nitems = 0; s_falls_box.generic.type = MTYPE_SPINCONTROL; s_falls_box.generic.x = 0; s_falls_box.generic.y = y; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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 += 10; 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; //============ //ROGUE if(Developer_searchpath() == 2) { s_no_mines_box.generic.type = MTYPE_SPINCONTROL; s_no_mines_box.generic.x = 0; s_no_mines_box.generic.y = y += 10; 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 += 10; 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 += 10; 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 += 10; 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 //============ s_dmoptions_menu.draw = NULL; s_dmoptions_menu.key = NULL; 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 ); //======= //ROGUE if(Developer_searchpath() == 2) { 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 ); } //ROGUE //======= Menu_Center( &s_dmoptions_menu ); // set the original dmflags statusbar DMFlagCallback( 0 ); Menu_SetStatusBar( &s_dmoptions_menu, dmoptions_statusbar ); }