2005-02-28 07:16:19 +00:00
//read menu.h
2004-08-23 00:15:46 +00:00
# include "quakedef.h"
# include "winquake.h"
2010-07-11 02:22:39 +00:00
menu_t * M_Options_Title ( int * y , int infosize )
{
struct menu_s * menu ;
* y = 32 ;
key_dest = key_menu ;
m_state = m_complex ;
menu = M_CreateMenu ( infosize ) ;
switch ( M_GameType ( ) )
{
case MGT_QUAKE2 : //q2...
MC_AddCenterPicture ( menu , 4 , 24 , " pics/m_banner_options " ) ;
* y + = 32 ;
break ;
case MGT_HEXEN2 : //h2
MC_AddPicture ( menu , 16 , 0 , 35 , 176 , " gfx/menu/hplaque.lmp " ) ;
MC_AddCenterPicture ( menu , 0 , 60 , " gfx/menu/title3.lmp " ) ;
* y + = 32 ;
break ;
default : //q1
MC_AddPicture ( menu , 16 , 4 , 32 , 144 , " gfx/qplaque.lmp " ) ;
MC_AddCenterPicture ( menu , 4 , 24 , " gfx/p_option.lmp " ) ;
break ;
}
return menu ;
}
2004-08-23 00:15:46 +00:00
//these are awkward/strange
2006-02-28 00:46:04 +00:00
qboolean M_Options_AlwaysRun ( menucheck_t * option , struct menu_s * menu , chk_set_t set )
2004-08-23 00:15:46 +00:00
{
if ( set = = CHK_CHECKED )
return cl_forwardspeed . value > 200 ;
else if ( cl_forwardspeed . value > 200 )
{
Cvar_SetValue ( & cl_forwardspeed , 200 ) ;
Cvar_SetValue ( & cl_backspeed , 200 ) ;
return false ;
}
else
{
Cvar_SetValue ( & cl_forwardspeed , 400 ) ;
Cvar_SetValue ( & cl_backspeed , 400 ) ;
return true ;
2009-12-29 14:00:56 +00:00
}
2004-08-23 00:15:46 +00:00
}
2006-02-28 00:46:04 +00:00
qboolean M_Options_InvertMouse ( menucheck_t * option , struct menu_s * menu , chk_set_t set )
2004-08-23 00:15:46 +00:00
{
if ( set = = CHK_CHECKED )
return m_pitch . value < 0 ;
else
{
Cvar_SetValue ( & m_pitch , - m_pitch . value ) ;
return m_pitch . value < 0 ;
2009-12-29 14:00:56 +00:00
}
2004-08-23 00:15:46 +00:00
}
//options menu.
void M_Menu_Options_f ( void )
{
2010-08-16 02:03:02 +00:00
extern cvar_t cl_standardchat , cl_splitscreen ;
2007-05-25 22:16:29 +00:00
extern cvar_t cl_standardmsg , crosshair ;
2004-08-23 00:15:46 +00:00
# ifdef _WIN32
extern qboolean vid_isfullscreen ;
# endif
2010-07-11 02:22:39 +00:00
int y ;
menu_t * menu = M_Options_Title ( & y , 0 ) ;
int mgt = M_GameType ( ) ;
2004-08-23 00:15:46 +00:00
menu - > selecteditem = ( union menuoption_s * )
2010-01-23 07:14:37 +00:00
MC_AddConsoleCommand ( menu , 16 , y , " Customize controls " , " menu_keys \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Go to console " , " toggleconsole \n play misc/menu2.wav \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Reset to defaults " , " exec default.cfg \n play misc/menu2.wav \n " ) ; y + = 8 ;
2010-08-16 02:03:02 +00:00
MC_AddConsoleCommand ( menu , 16 , y , " Save all settings " , " cfg_save \n " ) ; y + = 8 ;
2010-01-23 07:14:37 +00:00
MC_AddSlider ( menu , 16 , y , " Mouse Speed " , & sensitivity , 1 , 10 , 0.5 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Crosshair " , & crosshair , 0 , 22 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Always Run " , NULL , 0 ) - > func = M_Options_AlwaysRun ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Invert Mouse " , NULL , 0 ) - > func = M_Options_InvertMouse ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Lookspring " , & lookspring , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Lookstrafe " , & lookstrafe , 0 ) ; y + = 8 ;
2010-08-16 02:03:02 +00:00
MC_AddCheckBox ( menu , 16 , y , " Splitscreen " , & cl_splitscreen , 0 ) ; y + = 8 ;
2010-01-23 07:14:37 +00:00
MC_AddCheckBox ( menu , 16 , y , " Use old status bar " , & cl_sbar , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " HUD on left side " , & cl_hudswap , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Old-style chatting " , & cl_standardchat , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Old-style messages " , & cl_standardmsg , 0 ) ; y + = 8 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Imitate FPS " , " cl_netfps " ) ; y + = 8 + 4 ;
MC_AddConsoleCommand ( menu , 16 , y , " Video Options " , " menu_video \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Shadow & Lighting Options " , " menu_shadow_lighting \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " 3D Rendering Options " , " menu_3d \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Texture Options " , " menu_textures \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Particle Options " , " menu_particles \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " FPS Options " , " menu_fps \n " ) ; y + = 8 ;
if ( ( mgt ! = MGT_QUAKE2 ) & & ( mgt ! = MGT_HEXEN2 ) )
{
MC_AddConsoleCommand ( menu , 16 , y , " Teamplay Options " , " menu_teamplay \n " ) ; y + = 8 ;
}
2004-08-23 00:15:46 +00:00
2005-03-15 22:51:01 +00:00
if ( mgt = = MGT_QUAKE2 )
2010-01-23 07:14:37 +00:00
{
MC_AddConsoleCommand ( menu , 16 , y , " Singleplayer Cheat Options " , " menu_quake2_spcheats \n " ) ; y + = 8 ;
2004-08-23 00:15:46 +00:00
}
2005-03-15 22:51:01 +00:00
else if ( mgt = = MGT_HEXEN2 )
2010-01-23 07:14:37 +00:00
{
MC_AddConsoleCommand ( menu , 16 , y , " Singleplayer Cheat Options " , " menu_hexen2_spcheats \n " ) ; y + = 8 ;
2004-08-23 00:15:46 +00:00
}
else
2010-01-23 07:14:37 +00:00
{
MC_AddConsoleCommand ( menu , 16 , y , " Singleplayer Cheat Options " , " menu_spcheats \n " ) ; y + = 8 ;
2004-08-23 00:15:46 +00:00
}
2010-01-23 07:14:37 +00:00
MC_AddConsoleCommand ( menu , 16 , y , " Audio Options " , " menu_audio \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Downloads " , " menu_download \n " ) ; y + = 8 ;
2004-08-23 00:15:46 +00:00
# ifdef _WIN32
2009-12-29 14:00:56 +00:00
if ( ! vid_isfullscreen )
2004-08-23 00:15:46 +00:00
# endif
{
2004-09-13 03:10:10 +00:00
MC_AddCheckBox ( menu , 16 , y , " Use Mouse " , & _windowed_mouse , 0 ) ; y + = 8 ;
2004-08-23 00:15:46 +00:00
}
2010-08-12 00:48:05 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 225 , menu - > selecteditem - > common . posy , NULL , false ) ;
2004-08-23 00:15:46 +00:00
}
# ifndef __CYGWIN__
typedef struct {
int cursorpos ;
menuoption_t * cursoritem ;
menutext_t * speaker [ 6 ] ;
menutext_t * testsoundsource ;
soundcardinfo_t * card ;
} audiomenuinfo_t ;
qboolean M_Audio_Key ( int key , struct menu_s * menu )
{
2005-01-13 16:29:20 +00:00
int i , x , y ;
2004-08-23 00:15:46 +00:00
audiomenuinfo_t * info = menu - > data ;
soundcardinfo_t * sc ;
for ( sc = sndcardinfo ; sc ; sc = sc - > next )
{
if ( sc = = info - > card )
break ;
}
if ( ! sc )
{
M_RemoveMenu ( menu ) ;
return true ;
}
2009-12-29 14:00:56 +00:00
2004-08-23 00:15:46 +00:00
if ( key = = K_DOWNARROW )
{
info - > testsoundsource - > common . posy + = 10 ;
}
if ( key = = K_UPARROW )
{
info - > testsoundsource - > common . posy - = 10 ;
}
if ( key = = K_RIGHTARROW )
{
info - > testsoundsource - > common . posx + = 10 ;
}
if ( key = = K_LEFTARROW )
{
info - > testsoundsource - > common . posx - = 10 ;
}
2005-01-13 16:29:20 +00:00
if ( key > = ' 0 ' & & key < = ' 5 ' )
{
i = key - ' 0 ' ;
x = info - > testsoundsource - > common . posx - 320 / 2 ;
y = info - > testsoundsource - > common . posy - 200 / 2 ;
2010-11-06 23:05:29 +00:00
// sc->yaw[i] = (-atan2 (y,x)*180/M_PI) - 90;
2005-01-13 16:29:20 +00:00
sc - > dist [ i ] = 50 / sqrt ( x * x + y * y ) ;
}
2004-08-23 00:15:46 +00:00
menu - > selecteditem = NULL ;
return false ;
}
void M_Audio_StartSound ( struct menu_s * menu )
{
int i ;
vec3_t org ;
audiomenuinfo_t * info = menu - > data ;
soundcardinfo_t * sc ;
2009-04-01 22:03:56 +00:00
vec3_t mat [ 4 ] ;
2004-08-23 00:15:46 +00:00
static float lasttime ;
for ( sc = sndcardinfo ; sc ; sc = sc - > next )
{
if ( sc = = info - > card )
break ;
}
if ( ! sc )
{
M_RemoveMenu ( menu ) ;
return ;
}
for ( i = 0 ; i < sc - > sn . numchannels ; i + + )
{
2010-11-06 23:05:29 +00:00
// info->speaker[i]->common.posx = 320/2 - sin(sc->yaw[i]*M_PI/180) * 50/sc->dist[i];
// info->speaker[i]->common.posy = 200/2 - cos(sc->yaw[i]*M_PI/180) * 50/sc->dist[i];
2004-08-23 00:15:46 +00:00
}
2005-01-13 16:29:20 +00:00
for ( ; i < 6 ; i + + )
info - > speaker [ i ] - > common . posy = - 100 ;
2004-08-23 00:15:46 +00:00
if ( lasttime + 0.5 < Sys_DoubleTime ( ) )
{
2009-04-01 22:03:56 +00:00
S_GetListenerInfo ( mat [ 0 ] , mat [ 1 ] , mat [ 2 ] , mat [ 3 ] ) ;
2004-08-23 00:15:46 +00:00
lasttime = Sys_DoubleTime ( ) ;
2009-04-01 22:03:56 +00:00
org [ 0 ] = mat [ 0 ] [ 0 ] + 2 * ( mat [ 1 ] [ 0 ] * ( info - > testsoundsource - > common . posx - 320 / 2 ) + mat [ 1 ] [ 0 ] * ( info - > testsoundsource - > common . posy - 200 / 2 ) ) ;
org [ 1 ] = mat [ 0 ] [ 1 ] + 2 * ( mat [ 1 ] [ 1 ] * ( info - > testsoundsource - > common . posx - 320 / 2 ) + mat [ 1 ] [ 1 ] * ( info - > testsoundsource - > common . posy - 200 / 2 ) ) ;
org [ 2 ] = mat [ 0 ] [ 2 ] + 2 * ( mat [ 1 ] [ 2 ] * ( info - > testsoundsource - > common . posx - 320 / 2 ) + mat [ 1 ] [ 2 ] * ( info - > testsoundsource - > common . posy - 200 / 2 ) ) ;
2010-11-06 23:05:29 +00:00
S_StartSound ( - 2 , 0 , S_PrecacheSound ( " player/pain3.wav " ) , org , 1 , 4 , 0 ) ;
2004-08-23 00:15:46 +00:00
}
}
void M_Menu_Audio_Speakers_f ( void )
{
int i ;
audiomenuinfo_t * info ;
menu_t * menu ;
key_dest = key_menu ;
m_state = m_complex ;
menu = M_CreateMenu ( sizeof ( audiomenuinfo_t ) ) ;
info = menu - > data ;
menu - > key = M_Audio_Key ;
menu - > event = M_Audio_StartSound ;
for ( i = 0 ; i < 6 ; i + + )
info - > speaker [ i ] = MC_AddBufferedText ( menu , 0 , 0 , va ( " %i " , i ) , false , true ) ;
info - > testsoundsource = MC_AddBufferedText ( menu , 0 , 0 , " X " , false , true ) ;
info - > card = sndcardinfo ;
menu - > selecteditem = NULL ;
}
menucombo_t * MC_AddCvarCombo ( menu_t * menu , int x , int y , const char * caption , cvar_t * cvar , const char * * ops , const char * * values ) ;
void M_Menu_Audio_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2009-12-29 14:00:56 +00:00
extern cvar_t nosound , precache , snd_leftisright , snd_khz , snd_eax , snd_speakers , ambient_level , bgmvolume , snd_playersoundvolume , ambient_fade , cl_staticsounds , snd_inactive , _snd_mixahead , snd_usemultipledevices , snd_noextraupdate , snd_show , bgmbuffer ;
2011-01-04 02:56:16 +00:00
extern cvar_t cl_voip_play , cl_voip_send ;
2004-08-23 00:15:46 +00:00
static const char * soundqualityoptions [ ] = {
" 11025 Hz " ,
" 22050 Hz " ,
" 44100 Hz " ,
NULL
} ;
static const char * soundqualityvalues [ ] = {
" 11.025 " ,
" 22.050 " ,
" 44.100 " ,
NULL
} ;
static const char * speakeroptions [ ] = {
" Mono " ,
" Stereo " ,
" Quad " ,
" 5.1 surround " ,
NULL
} ;
static const char * speakervalues [ ] = {
" 1 " ,
" 2 " ,
" 4 " ,
" 6 " ,
NULL
} ;
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2004-08-23 00:15:46 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2004-08-23 00:15:46 +00:00
menu - > selecteditem = ( union menuoption_s * )
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Sound Options " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2011-01-04 02:56:16 +00:00
# ifdef VOICECHAT
MC_AddCheckBox ( menu , 16 , y , " Voice Chat " , & cl_voip_play , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " VOIP Voice Activation " , & cl_voip_send , 0 ) ; y + = 8 ;
# endif
2009-12-29 14:00:56 +00:00
MC_AddSlider ( menu , 16 , y , " CD Music Volume " , & bgmvolume , 0 , 1 , 0.1 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " CD Music Buffer " , & bgmbuffer , 0 , 10240 , 1024 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Sound Volume " , & volume , 0 , 1 , 0.1 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Player Sound Volume " , & snd_playersoundvolume , 0 , 1 , 0.1 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Ambient Volume " , & ambient_level , 0 , 1 , 0.1 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Ambient Fade " , & ambient_fade , 0 , 1000 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " No Sound " , & nosound , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Static Sounds " , & cl_staticsounds , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Precache " , & precache , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Experimental EAX 2 " , & snd_eax , 0 ) ; y + = 8 ;
MC_AddCvarCombo ( menu , 16 , y , " Speaker Setup " , & snd_speakers , speakeroptions , speakervalues ) ; y + = 8 ;
MC_AddCvarCombo ( menu , 16 , y , " Sound Speed " , & snd_khz , soundqualityoptions , soundqualityvalues ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Sound Mixahead " , & _snd_mixahead , 0 , 1 , 0.05 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Multiple Devices " , & snd_usemultipledevices , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " No Extra Sound Update " , & snd_noextraupdate , 0 ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
MC_AddCheckBox ( menu , 16 , y , " Low Quality Sound (8bit) " , & loadas8bit , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Flip Sound " , & snd_leftisright , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Play Sound While Inactive " , & snd_inactive , 0 ) ; y + = 8 ;
2009-12-29 14:00:56 +00:00
//MC_AddCombo(menu, 16, y, " Show Sounds Playing", &snd_show,0);y+=8;
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " = Restart Sound = " , " snd_restart \n " ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 225 , cursorpositionY , NULL , false ) ;
2004-08-23 00:15:46 +00:00
}
# else
void M_Menu_Audio_f ( void )
{
Con_Printf ( " No sound in cygwin \n " ) ;
}
# endif
void M_Menu_Particles_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-07-11 02:22:39 +00:00
extern cvar_t r_bouncysparks , r_part_rain , gl_part_flame , r_particlesystem , r_grenadetrail , r_rockettrail , r_part_sparks_textured , r_part_sparks_trifan , r_part_rain_quantity , r_part_beams , r_particle_tracelimit ;
2009-07-14 15:04:32 +00:00
char * psystemopts [ ] =
{
" fixed/classic(faster) " ,
" scripted " ,
NULL
} ;
char * psystemvals [ ] =
{
" classic " ,
" script " ,
NULL
} ;
2004-08-23 00:15:46 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2004-08-23 00:15:46 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2004-08-23 00:15:46 +00:00
menu - > selecteditem = ( union menuoption_s * )
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Particle Options " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2004-08-23 00:15:46 +00:00
2009-12-29 14:00:56 +00:00
MC_AddCvarCombo ( menu , 16 , y , " particle system " , & r_particlesystem , psystemopts , psystemvals ) ; y + = 8 ;
2009-07-14 15:04:32 +00:00
//fixme: hide the rest of the options if r_particlesystem==classic
2009-12-29 14:00:56 +00:00
MC_AddConsoleCommand ( menu , 16 , y , " Choose particle set " , " menu_particlesets " ) ; y + = 8 ;
// MC_AddSlider(menu, 16, y, " exp spark count", &r_particles_in_explosion, 16, 1024);y+=8;
MC_AddSlider ( menu , 16 , y , " Grenade Trail " , & r_grenadetrail , 0 , 10 , 1 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Rocket Trail " , & r_rockettrail , 0 , 10 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Bouncy Sparks " , & r_bouncysparks , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Textured Sparks " , & r_part_sparks_textured , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Trifan Sparks " , & r_part_sparks_trifan , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Rain " , & r_part_rain , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Rain Quantity " , & r_part_rain_quantity , 0 , 10 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Torch Flame " , & gl_part_flame , 0 ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
MC_AddSlider ( menu , 16 , y , " Particle Tracelimit " , & r_particle_tracelimit , 0 , 2000 , 50 ) ; y + = 8 ;
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " Particle Beams " , & r_part_beams , 0 ) ; y + = 8 ;
2004-08-23 00:15:46 +00:00
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 200 , cursorpositionY , NULL , false ) ;
2004-08-23 00:15:46 +00:00
}
2005-09-14 20:56:34 +00:00
enum {
PRESET_286 ,
PRESET_FAST ,
PRESET_DEFAULT ,
PRESET_NICE ,
PRESET_REALTIME ,
PRESET_MAX
} ;
typedef struct {
char * cvarname ;
char * value [ PRESET_MAX ] ;
} presetinfo_t ;
presetinfo_t preset [ ] =
{
2009-07-14 15:04:32 +00:00
//default is a reasonable nice look for single player
//fast is for competetive deathmatch games (equivelent to the default settings of other quakrworld engines)
//286 is an attempt to get the very vest fps possible, if you're crazy
2007-09-13 22:27:56 +00:00
{ " r_presetname " , { " 286 " , " fast " , " default " , " nice " , " realtime " } } ,
{ " gl_texturemode " , { " nn " , " ln " , " ln " , " ll " , " ll " } } ,
{ " r_particlesdesc " , { " none " , " highfps " , " spikeset tsshaft " , " spikeset tsshaft " , " spikeset tsshaft " } } ,
2009-07-14 15:04:32 +00:00
{ " r_particlesystem " , { " none " , " classic " , " script " , " script " , " script " } } ,
2007-09-13 22:27:56 +00:00
{ " r_stains " , { " 0 " , " 0 " , " 0.75 " , " 0.75 " , " 0.75 " } } ,
{ " r_drawflat " , { " 1 " , " 0 " , " 0 " , " 0 " , " 0 " } } ,
2009-07-14 15:04:32 +00:00
{ " r_nolerp " , { " 1 " , " 0 " , " 0 " , " 0 " , " 0 " } } ,
{ " r_nolightdir " , { " 1 " , " 1 " , " 0 " , " 0 " , " 0 " } } ,
2007-09-13 22:27:56 +00:00
{ " r_dynamic " , { " 0 " , " 0 " , " 1 " , " 1 " , " 1 " } } ,
{ " r_bloom " , { " 0 " , " 0 " , " 0 " , " 0 " , " 1 " } } ,
{ " gl_flashblend " , { " 0 " , " 1 " , " 0 " , " 1 " , " 2 " } } ,
{ " gl_bump " , { " 0 " , " 0 " , " 0 " , " 1 " , " 1 " } } ,
{ " gl_specular " , { " 0 " , " 0 " , " 0 " , " 1 " , " 1 " } } ,
{ " r_loadlit " , { " 0 " , " 1 " , " 1 " , " 2 " , " 2 " } } ,
2009-07-14 23:42:54 +00:00
{ " r_fastsky " , { " 1 " , " 0 " , " 0 " , " -1 " , " -1 " } } ,
2010-07-11 02:22:39 +00:00
{ " r_shadow_realtime_dlight " , { " 0 " , " 0 " , " 0 " , " 1 " , " 1 " } } ,
{ " r_shadow_realtime_world " , { " 0 " , " 0 " , " 0 " , " 0 " , " 1 " } } ,
2007-09-13 22:27:56 +00:00
{ " gl_detail " , { " 0 " , " 0 " , " 0 " , " 1 " , " 1 " } } ,
{ " gl_load24bit " , { " 0 " , " 0 " , " 1 " , " 1 " , " 1 " } } ,
{ " r_replacemodels " , { " " , " " , " md3 md2 " , " md3 md2 " , " md3 md2 " } } ,
{ " r_waterwarp " , { " 0 " , " -1 " , " 1 " , " 1 " , " 1 " } } ,
{ " r_lightstylesmooth " , { " 0 " , " 0 " , " 0 " , " 1 " , " 1 " } } ,
2005-09-14 20:56:34 +00:00
{ NULL }
} ;
static void ApplyPreset ( int presetnum )
{
int i ;
for ( i = 1 ; preset [ i ] . cvarname ; i + + )
{
Cbuf_AddText ( preset [ i ] . cvarname , Cmd_ExecLevel ) ;
Cbuf_AddText ( " " , Cmd_ExecLevel ) ;
Cbuf_AddText ( preset [ i ] . value [ presetnum ] , Cmd_ExecLevel ) ;
Cbuf_AddText ( " \n " , Cmd_ExecLevel ) ;
}
}
void FPS_Preset_f ( void )
{
char * arg = Cmd_Argv ( 1 ) ;
int i ;
for ( i = 0 ; i < PRESET_MAX ; i + + )
{
if ( ! strcmp ( preset [ 0 ] . value [ i ] , arg ) )
{
ApplyPreset ( i ) ;
return ;
}
}
Con_Printf ( " Preset %s not recognised \n " , arg ) ;
Con_Printf ( " Valid presests: \n " ) ;
for ( i = 0 ; i < PRESET_MAX ; i + + )
Con_Printf ( " %s \n " , preset [ 0 ] . value [ i ] ) ;
}
2004-08-23 00:15:46 +00:00
void M_Menu_FPS_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2005-09-14 20:56:34 +00:00
int i , len ;
2004-08-23 00:15:46 +00:00
2009-12-29 14:00:56 +00:00
extern cvar_t v_contentblend , show_fps , cl_r2g , cl_gibfilter , cl_expsprite , cl_deadbodyfilter ;
2004-08-23 00:15:46 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2004-08-23 00:15:46 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2004-08-23 00:15:46 +00:00
menu - > selecteditem = ( union menuoption_s * )
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " FPS Options " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2004-08-23 00:15:46 +00:00
2005-09-14 20:56:34 +00:00
for ( i = 0 ; i < PRESET_MAX ; i + + )
2005-03-15 22:51:01 +00:00
{
2005-09-14 20:56:34 +00:00
len = strlen ( preset [ 0 ] . value [ i ] ) ;
2010-01-16 04:59:13 +00:00
MC_AddConsoleCommand ( menu , 116 , y , va ( " (preset) %s " , preset [ 0 ] . value [ i ] ) , va ( " fps_preset %s \n " , preset [ 0 ] . value [ i ] ) ) ; y + = 8 ;
2005-03-15 22:51:01 +00:00
}
2010-01-16 04:59:13 +00:00
MC_AddCheckBox ( menu , 16 , y , " Show FPS " , & show_fps , 0 ) ; y + = 8 ;
2004-08-23 00:15:46 +00:00
2010-01-16 04:59:13 +00:00
MC_AddCheckBox ( menu , 16 , y , " Content blend " , & v_contentblend , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Gib Filter " , & cl_gibfilter , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Dead Body Filter " , & cl_deadbodyfilter , 0 , 2 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Explosion Sprite " , & cl_expsprite , 0 ) ; y + = 8 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Skybox " , " r_skybox " ) ; y + = 8 ; y + = 4 ;
MC_AddCheckBox ( menu , 16 , y , " Rockets to Grenades " , & cl_r2g , 0 ) ; y + = 8 ;
2004-08-23 00:15:46 +00:00
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 188 , cursorpositionY , NULL , false ) ;
2009-12-29 14:00:56 +00:00
}
2005-09-28 23:36:08 +00:00
2009-12-29 14:00:56 +00:00
//copy and pasted from renderer.c
qboolean M_VideoApply2 ( union menuoption_s * op , struct menu_s * menu , int key )
{
if ( key ! = K_ENTER )
return false ;
// r_shadows too
Cbuf_AddText ( " vid_restart \n " , RESTRICT_LOCAL ) ;
M_RemoveMenu ( menu ) ;
Cbuf_AddText ( " menu_options \n " , RESTRICT_LOCAL ) ;
return true ;
}
typedef struct {
menucombo_t * multisamplingcombo ;
} threeDmenuinfo_t ;
qboolean M_VideoApply3D ( union menuoption_s * op , struct menu_s * menu , int key )
{
threeDmenuinfo_t * info = menu - > data ;
2010-01-17 06:42:30 +00:00
int currentmsaalevel ;
extern cvar_t vid_multisample ;
2009-12-29 14:00:56 +00:00
if ( key ! = K_ENTER )
return false ;
2010-01-17 06:42:30 +00:00
if ( vid_multisample . value = = 8 )
currentmsaalevel = 4 ;
else if ( vid_multisample . value = = 6 )
currentmsaalevel = 3 ;
else if ( vid_multisample . value = = 4 )
currentmsaalevel = 2 ;
else if ( vid_multisample . value = = 2 )
currentmsaalevel = 1 ;
else if ( vid_multisample . value < = 1 )
currentmsaalevel = 0 ;
else
currentmsaalevel = 0 ;
if ( info - > multisamplingcombo - > selectedoption ! = currentmsaalevel ) // if MSAA doesn't change, don't bother applying it when the video system is restarted
2005-03-15 22:51:01 +00:00
{
2010-01-17 06:42:30 +00:00
switch ( info - > multisamplingcombo - > selectedoption )
{
case 0 :
Cbuf_AddText ( " vid_multisample 0 \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " vid_multisample 2 \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " vid_multisample 4 \n " , RESTRICT_LOCAL ) ;
break ;
case 3 :
Cbuf_AddText ( " vid_multisample 6 \n " , RESTRICT_LOCAL ) ;
break ;
case 4 :
Cbuf_AddText ( " vid_multisample 8 \n " , RESTRICT_LOCAL ) ;
break ;
}
2005-03-15 22:51:01 +00:00
}
2010-01-17 06:42:30 +00:00
# ifdef _DEBUG
2005-03-15 22:51:01 +00:00
else
{
2010-01-17 06:42:30 +00:00
Con_Printf ( " MSAA: Selected option matches current CVAR value (%d & %d), no change made. \n " , info - > multisamplingcombo - > selectedoption , currentmsaalevel ) ;
2005-03-15 22:51:01 +00:00
}
2010-01-17 06:42:30 +00:00
# endif
2009-12-29 14:00:56 +00:00
Cbuf_AddText ( " vid_restart \n " , RESTRICT_LOCAL ) ;
M_RemoveMenu ( menu ) ;
Cbuf_AddText ( " menu_3d \n " , RESTRICT_LOCAL ) ;
return true ;
}
void M_Menu_3D_f ( void )
{
static const char * msaalevels [ ] =
2010-01-16 04:59:13 +00:00
{
2009-12-29 14:00:56 +00:00
" Off " ,
" 2x " ,
" 4x " ,
" 6x " ,
" 8x " ,
NULL
} ;
threeDmenuinfo_t * info ;
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-01-17 06:42:30 +00:00
int currentmsaalevel ;
2010-01-16 06:16:42 +00:00
# ifndef MINIMAL
2010-07-11 02:22:39 +00:00
extern cvar_t r_xflip ;
2004-08-23 00:15:46 +00:00
# endif
2010-11-02 23:17:25 +00:00
extern cvar_t r_novis , gl_dither , cl_item_bobbing , r_waterwarp , r_nolerp , r_fastsky , gl_nocolors , gl_lerpimages , gl_lateswap , r_mirroralpha , r_wateralpha , r_drawviewmodel , gl_motionblur , gl_motionblurscale , gl_blend2d , gl_blendsprites , r_flashblend , gl_cshiftenabled , vid_multisample ;
2009-12-29 14:00:56 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , sizeof ( threeDmenuinfo_t ) ) ;
2009-12-29 14:00:56 +00:00
info = menu - > data ;
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2010-01-17 06:42:30 +00:00
if ( vid_multisample . value = = 8 )
2009-12-29 14:00:56 +00:00
currentmsaalevel = 4 ;
else if ( vid_multisample . value = = 6 )
currentmsaalevel = 3 ;
else if ( vid_multisample . value = = 4 )
currentmsaalevel = 2 ;
else if ( vid_multisample . value = = 2 )
currentmsaalevel = 1 ;
else if ( vid_multisample . value < = 1 )
currentmsaalevel = 0 ;
else
2010-01-17 06:42:30 +00:00
currentmsaalevel = 0 ;
2004-08-23 00:15:46 +00:00
menu - > selecteditem = ( union menuoption_s * )
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " 3D Renderering Options " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " Calculate VIS " , & r_novis , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Water Warp " , & r_waterwarp , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Model Interpollation " , & r_nolerp , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Toggle Sky " , & r_fastsky , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Lerp Images " , & gl_lerpimages , 0 ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
MC_AddSlider ( menu , 16 , y , " Maximum Distance " , & gl_maxdist , 1 , 8192 , 128 ) ; y + = 8 ;
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " GL Swapbuffer Delay " , & gl_lateswap , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Mirror Reflections " , & r_mirroralpha , 0 ) ; y + = 8 ;
2010-11-02 23:17:25 +00:00
# if !defined(MINIMAL) && defined(GLQUAKE)
2010-01-16 04:59:13 +00:00
MC_AddCheckBox ( menu , 16 , y , " Flip Horizontal View " , & r_xflip , 0 ) ; y + = 8 ;
2010-01-16 06:16:42 +00:00
# endif
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " Water Transparency " , & r_wateralpha , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " View Model Transparency " , & r_drawviewmodel , 0 , 1 , 0.1 ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
MC_AddCheckBox ( menu , 16 , y , " Ignore Player Model Colors " , & gl_nocolors , 0 ) ; y + = 8 ;
2009-12-29 14:00:56 +00:00
MC_AddSlider ( menu , 16 , y , " Motion Blur " , & gl_motionblur , 0 , 1 , 0.5 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Motion Blur Scale " , & gl_motionblurscale , 0 , 1 , 0.5 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " 2D Blending " , & gl_blend2d , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Sprite Blending " , & gl_blendsprites , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Flash Blending " , & r_flashblend , 0 , 2 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Poly Blending " , & gl_cshiftenabled , 0 ) ; y + = 8 ;
2010-11-02 23:17:25 +00:00
# ifdef GLQUAKE
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " 16bit Color Dithering " , & gl_dither , 0 ) ; y + = 8 ;
2010-11-02 23:17:25 +00:00
# endif
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " Model Bobbing " , & cl_item_bobbing , 0 ) ; y + = 8 ;
2010-01-17 06:42:30 +00:00
info - > multisamplingcombo = MC_AddCombo ( menu , 16 , y , " Multisample Anti-Aliasing " , msaalevels , currentmsaalevel ) ; y + = 8 ;
2009-12-29 14:00:56 +00:00
y + = 8 ;
MC_AddCommand ( menu , 16 , y , " Apply " , M_VideoApply3D ) ; y + = 8 ;
//menu->selecteditem = (union menuoption_s *)info->multisamplingcombo;
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 225 , cursorpositionY , NULL , false ) ;
2009-12-29 14:00:56 +00:00
}
2004-08-23 00:15:46 +00:00
2009-12-29 14:00:56 +00:00
typedef struct {
menucombo_t * texturefiltercombo ;
menucombo_t * anisotropycombo ;
menucombo_t * maxtexturesizecombo ;
2010-01-17 06:42:30 +00:00
menucombo_t * bloomsamplesizecombo ;
menucombo_t * bloomdiamondcombo ;
2009-12-29 14:00:56 +00:00
} texturemenuinfo_t ;
qboolean M_VideoApplyTextures ( union menuoption_s * op , struct menu_s * menu , int key )
{
texturemenuinfo_t * info = menu - > data ;
2010-11-02 23:17:25 +00:00
# if !defined(MINIMAL) && defined(GLQUAKE)
2010-01-17 06:42:30 +00:00
int currentbloomdiamond ;
int currentbloomsamplesize ;
extern cvar_t r_bloom_sample_size , r_bloom_diamond_size ;
# endif
2009-12-29 14:00:56 +00:00
if ( key ! = K_ENTER )
return false ;
switch ( info - > texturefiltercombo - > selectedoption )
2005-09-14 20:56:34 +00:00
{
2009-12-29 14:00:56 +00:00
case 0 :
Cbuf_AddText ( " gl_texturemode gl_nearest_mipmap_nearest \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " gl_texturemode gl_linear_mipmap_nearest \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " gl_texturemode gl_linear_mipmap_linear \n " , RESTRICT_LOCAL ) ;
2004-08-23 00:15:46 +00:00
break ;
2005-09-14 20:56:34 +00:00
}
2009-11-04 21:16:50 +00:00
2009-12-29 14:00:56 +00:00
switch ( info - > anisotropycombo - > selectedoption )
{
case 0 :
Cbuf_AddText ( " gl_texture_anisotropic_filtering 0 \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " gl_texture_anisotropic_filtering 2 \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " gl_texture_anisotropic_filtering 4 \n " , RESTRICT_LOCAL ) ;
break ;
case 3 :
Cbuf_AddText ( " gl_texture_anisotropic_filtering 8 \n " , RESTRICT_LOCAL ) ;
break ;
case 4 :
Cbuf_AddText ( " gl_texture_anisotropic_filtering 16 \n " , RESTRICT_LOCAL ) ;
break ;
}
2004-08-23 00:15:46 +00:00
2009-12-29 14:00:56 +00:00
switch ( info - > maxtexturesizecombo - > selectedoption )
{
case 0 :
2010-01-17 06:42:30 +00:00
Cbuf_AddText ( " gl_max_size 128 \n " , RESTRICT_LOCAL ) ;
2009-12-29 14:00:56 +00:00
break ;
case 1 :
2010-01-17 06:42:30 +00:00
Cbuf_AddText ( " gl_max_size 196 \n " , RESTRICT_LOCAL ) ;
2009-12-29 14:00:56 +00:00
break ;
case 2 :
2010-01-17 06:42:30 +00:00
Cbuf_AddText ( " gl_max_size 256 \n " , RESTRICT_LOCAL ) ;
2009-12-29 14:00:56 +00:00
break ;
case 3 :
2010-01-17 06:42:30 +00:00
Cbuf_AddText ( " gl_max_size 384 \n " , RESTRICT_LOCAL ) ;
2009-12-29 14:00:56 +00:00
break ;
case 4 :
2010-01-17 06:42:30 +00:00
Cbuf_AddText ( " gl_max_size 512 \n " , RESTRICT_LOCAL ) ;
2009-12-29 14:00:56 +00:00
break ;
case 5 :
2010-01-17 06:42:30 +00:00
Cbuf_AddText ( " gl_max_size 768 \n " , RESTRICT_LOCAL ) ;
2009-12-29 14:00:56 +00:00
break ;
case 6 :
Cbuf_AddText ( " gl_max_size 1024 \n " , RESTRICT_LOCAL ) ;
break ;
2010-01-17 06:42:30 +00:00
case 7 :
2009-12-29 14:00:56 +00:00
Cbuf_AddText ( " gl_max_size 2048 \n " , RESTRICT_LOCAL ) ;
break ;
2010-01-17 06:42:30 +00:00
case 8 :
2009-12-29 14:00:56 +00:00
Cbuf_AddText ( " gl_max_size 4096 \n " , RESTRICT_LOCAL ) ;
break ;
2010-01-17 06:42:30 +00:00
case 9 :
2009-12-29 14:00:56 +00:00
Cbuf_AddText ( " gl_max_size 8192 \n " , RESTRICT_LOCAL ) ;
break ;
}
2004-08-23 00:15:46 +00:00
2010-11-02 23:17:25 +00:00
# if !defined(MINIMAL) && defined(GLQUAKE)
2010-01-17 06:42:30 +00:00
if ( r_bloom_sample_size . value > = 512 )
currentbloomsamplesize = 7 ;
else if ( r_bloom_sample_size . value = = 384 )
currentbloomsamplesize = 6 ;
else if ( r_bloom_sample_size . value = = 256 )
currentbloomsamplesize = 5 ;
else if ( r_bloom_sample_size . value = = 192 )
currentbloomsamplesize = 4 ;
else if ( r_bloom_sample_size . value = = 128 )
currentbloomsamplesize = 3 ;
else if ( r_bloom_sample_size . value = = 96 )
currentbloomsamplesize = 2 ;
else if ( r_bloom_sample_size . value = = 64 )
currentbloomsamplesize = 1 ;
else if ( r_bloom_sample_size . value < = 32 )
currentbloomsamplesize = 0 ;
else
currentbloomsamplesize = 0 ;
2005-09-28 23:36:08 +00:00
2010-01-17 06:42:30 +00:00
if ( info - > bloomsamplesizecombo - > selectedoption ! = currentbloomsamplesize )
{
switch ( info - > bloomsamplesizecombo - > selectedoption )
{
case 0 :
Cbuf_AddText ( " r_bloom_sample_size 32 \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " r_bloom_sample_size 64 \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " r_bloom_sample_size 96 \n " , RESTRICT_LOCAL ) ;
break ;
case 3 :
Cbuf_AddText ( " r_bloom_sample_size 128 \n " , RESTRICT_LOCAL ) ;
break ;
case 4 :
Cbuf_AddText ( " r_bloom_sample_size 192 \n " , RESTRICT_LOCAL ) ;
break ;
case 5 :
Cbuf_AddText ( " r_bloom_sample_size 256 \n " , RESTRICT_LOCAL ) ;
break ;
case 6 :
Cbuf_AddText ( " r_bloom_sample_size 384 \n " , RESTRICT_LOCAL ) ;
break ;
case 7 :
Cbuf_AddText ( " r_bloom_sample_size 512 \n " , RESTRICT_LOCAL ) ;
break ;
}
}
# ifdef _DEBUG
else
2004-08-23 00:15:46 +00:00
{
2010-01-17 06:42:30 +00:00
Con_Printf ( " Bloom Sample Size: Selected option matches current CVAR value (%d & %d), no change made. \n " , info - > bloomsamplesizecombo - > selectedoption , currentbloomsamplesize ) ;
}
# endif
2010-01-23 07:14:37 +00:00
if ( r_bloom_diamond_size . value > = 10 )
currentbloomdiamond = 4 ;
else if ( r_bloom_diamond_size . value > = 8 )
currentbloomdiamond = 3 ;
else if ( r_bloom_diamond_size . value > = 6 )
2010-01-17 06:42:30 +00:00
currentbloomdiamond = 2 ;
2010-01-23 07:14:37 +00:00
else if ( r_bloom_diamond_size . value > = 4 )
2010-01-17 06:42:30 +00:00
currentbloomdiamond = 1 ;
2010-01-23 07:14:37 +00:00
else if ( r_bloom_diamond_size . value < = 2 )
2010-01-17 06:42:30 +00:00
currentbloomdiamond = 0 ;
else
currentbloomdiamond = 0 ;
2009-11-04 21:16:50 +00:00
2010-01-17 06:42:30 +00:00
if ( info - > bloomdiamondcombo - > selectedoption ! = currentbloomdiamond )
{
switch ( info - > bloomdiamondcombo - > selectedoption )
{
case 0 :
2010-01-23 07:14:37 +00:00
Cbuf_AddText ( " r_bloom_diamond_size 2 \n " , RESTRICT_LOCAL ) ;
2010-01-17 06:42:30 +00:00
break ;
case 1 :
2010-01-23 07:14:37 +00:00
Cbuf_AddText ( " r_bloom_diamond_size 4 \n " , RESTRICT_LOCAL ) ;
2010-01-17 06:42:30 +00:00
break ;
case 2 :
2010-01-23 07:14:37 +00:00
Cbuf_AddText ( " r_bloom_diamond_size 6 \n " , RESTRICT_LOCAL ) ;
break ;
case 3 :
2010-01-17 06:42:30 +00:00
Cbuf_AddText ( " r_bloom_diamond_size 8 \n " , RESTRICT_LOCAL ) ;
break ;
2010-01-23 07:14:37 +00:00
case 4 :
Cbuf_AddText ( " r_bloom_diamond_size 10 \n " , RESTRICT_LOCAL ) ;
break ;
2010-01-17 06:42:30 +00:00
}
}
# ifdef _DEBUG
else
{
Con_Printf ( " Bloom Diamond Size: Selected option matches current CVAR value (%d & %d), no change made. \n " , info - > bloomdiamondcombo - > selectedoption , currentbloomdiamond ) ;
}
# endif
# endif
2009-12-29 14:00:56 +00:00
Cbuf_AddText ( " vid_restart \n " , RESTRICT_LOCAL ) ;
M_RemoveMenu ( menu ) ;
Cbuf_AddText ( " menu_textures \n " , RESTRICT_LOCAL ) ;
return true ;
2004-08-23 00:15:46 +00:00
}
2009-12-29 14:00:56 +00:00
void M_Menu_Textures_f ( void )
{
static const char * texturefilternames [ ] =
{
" Nearest " ,
" Bilinear " ,
" Trilinear " ,
NULL
} ;
static const char * anisotropylevels [ ] =
{
" Off " ,
" 2x " ,
" 4x " ,
" 8x " ,
" 16x " ,
NULL
} ;
static const char * texturesizeoptions [ ] =
{
2010-01-17 06:42:30 +00:00
// uncommented out the unreadable console text ones
//"1x1",
//"2x2",
//"4x4",
//"8x8",
//"16x16",
//"32x32",
//"64x64",
2009-12-29 14:00:56 +00:00
" 128x128 " ,
2010-01-17 06:42:30 +00:00
" 196x196 " ,
2009-12-29 14:00:56 +00:00
" 256x256 " ,
2010-01-17 06:42:30 +00:00
" 384x384 " ,
2009-12-29 14:00:56 +00:00
" 512x512 " ,
2010-01-17 06:42:30 +00:00
" 768x768 " ,
2009-12-29 14:00:56 +00:00
" 1024x1024 " ,
" 2048x2048 " ,
" 4096x4096 " ,
" 8192x8192 " ,
NULL
} ;
2010-07-11 02:22:39 +00:00
# ifndef MINIMAL
2010-01-17 06:42:30 +00:00
static const char * bloomsamplesizeoptions [ ] =
{
" 32x32 " ,
" 64x64 " ,
" 96x96 " ,
" 128x128 " ,
" 192x192 " ,
" 256x256 " ,
" 384x384 " ,
" 512x512 " ,
NULL
} ;
static const char * bloomdiamondoptions [ ] =
{
2010-01-23 07:14:37 +00:00
" 2x " ,
2010-01-17 06:42:30 +00:00
" 4x " ,
" 6x " ,
" 8x " ,
2010-01-23 07:14:37 +00:00
" 10x " ,
2010-01-17 06:42:30 +00:00
NULL
} ;
2010-07-11 02:22:39 +00:00
# endif
2010-01-17 06:42:30 +00:00
2009-12-29 14:00:56 +00:00
texturemenuinfo_t * info ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2009-12-29 14:00:56 +00:00
int currenttexturefilter ;
int currentanisotropylevel ;
int currentmaxtexturesize ;
2010-11-02 23:17:25 +00:00
# if !defined(MINIMAL) && defined(GLQUAKE)
2010-01-17 06:42:30 +00:00
int currentbloomsamplesize ;
int currentbloomdiamond ;
2009-12-29 14:00:56 +00:00
2010-11-02 23:17:25 +00:00
extern cvar_t r_bloom , r_bloom_sample_size , r_bloom_darken , r_bloom_intensity , r_bloom_diamond_size , r_bloom_alpha , r_bloom_fast_sample ;
# endif
extern cvar_t gl_load24bit , gl_specular , gl_bump , gl_detail , gl_detailscale , gl_compress , gl_savecompressedtex , gl_triplebuffer , gl_picmip , gl_picmip2d , gl_max_size , r_stains , r_bloodstains , r_stainfadetime , r_stainfadeammount , gl_skyboxdist , r_drawflat , gl_schematics ;
# if defined(GLQUAKE)
extern cvar_t gl_texture_anisotropic_filtering , gl_texturemode , gl_playermip ;
2010-01-17 06:42:30 +00:00
# endif
2010-07-11 02:22:39 +00:00
int y ;
menu_t * menu = M_Options_Title ( & y , sizeof ( * info ) ) ;
2009-12-29 14:00:56 +00:00
info = menu - > data ;
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2010-11-02 23:17:25 +00:00
# if !defined(MINIMAL) && defined(GLQUAKE)
2010-01-17 06:42:30 +00:00
if ( r_bloom_sample_size . value > = 512 )
currentbloomsamplesize = 7 ;
else if ( r_bloom_sample_size . value = = 384 )
currentbloomsamplesize = 6 ;
else if ( r_bloom_sample_size . value = = 256 )
currentbloomsamplesize = 5 ;
else if ( r_bloom_sample_size . value = = 192 )
currentbloomsamplesize = 4 ;
else if ( r_bloom_sample_size . value = = 128 )
currentbloomsamplesize = 3 ;
else if ( r_bloom_sample_size . value = = 96 )
currentbloomsamplesize = 2 ;
else if ( r_bloom_sample_size . value = = 64 )
currentbloomsamplesize = 1 ;
else if ( r_bloom_sample_size . value < = 32 )
currentbloomsamplesize = 0 ;
else
currentbloomsamplesize = 0 ;
2010-01-23 07:14:37 +00:00
if ( r_bloom_diamond_size . value > = 10 )
currentbloomdiamond = 4 ;
else if ( r_bloom_diamond_size . value > = 8 )
currentbloomdiamond = 3 ;
else if ( r_bloom_diamond_size . value > = 6 )
2010-01-17 06:42:30 +00:00
currentbloomdiamond = 2 ;
2010-01-23 07:14:37 +00:00
else if ( r_bloom_diamond_size . value > = 4 )
2010-01-17 06:42:30 +00:00
currentbloomdiamond = 1 ;
2010-01-23 07:14:37 +00:00
else if ( r_bloom_diamond_size . value < = 2 )
2010-01-17 06:42:30 +00:00
currentbloomdiamond = 0 ;
else
currentbloomdiamond = 0 ;
# endif
2010-11-02 23:17:25 +00:00
# if defined(GLQUAKE)
2009-12-29 14:00:56 +00:00
if ( ! Q_strcasecmp ( gl_texturemode . string , " gl_nearest_mipmap_nearest " ) )
currenttexturefilter = 0 ;
else if ( ! Q_strcasecmp ( gl_texturemode . string , " gl_linear_mipmap_linear " ) )
currenttexturefilter = 2 ;
else if ( ! Q_strcasecmp ( gl_texturemode . string , " gl_linear_mipmap_nearest " ) )
currenttexturefilter = 1 ;
else
currenttexturefilter = 1 ;
2010-01-17 06:42:30 +00:00
if ( gl_texture_anisotropic_filtering . value > = 16 )
2009-12-29 14:00:56 +00:00
currentanisotropylevel = 4 ;
else if ( gl_texture_anisotropic_filtering . value = = 8 )
currentanisotropylevel = 3 ;
else if ( gl_texture_anisotropic_filtering . value = = 4 )
currentanisotropylevel = 2 ;
else if ( gl_texture_anisotropic_filtering . value = = 2 )
currentanisotropylevel = 1 ;
else if ( gl_texture_anisotropic_filtering . value < = 1 )
currentanisotropylevel = 0 ;
else
currentanisotropylevel = 0 ;
2010-11-02 23:17:25 +00:00
# else
currenttexturefilter = 0 ;
currentanisotropylevel = 0 ;
# endif
2009-12-29 14:00:56 +00:00
2010-01-17 06:42:30 +00:00
if ( gl_max_size . value > = 8192 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 9 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value = = 4096 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 8 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value = = 2048 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 7 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value = = 1024 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 6 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value = = 768 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 5 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value = = 512 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 4 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value = = 384 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 3 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value = = 256 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 2 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value = = 196 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 1 ;
2010-01-17 06:42:30 +00:00
else if ( gl_max_size . value < = 128 )
2009-12-29 14:00:56 +00:00
currentmaxtexturesize = 0 ;
else
currentmaxtexturesize = 0 ;
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Texturing Options " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2009-12-29 14:00:56 +00:00
info - > texturefiltercombo = MC_AddCombo ( menu , 16 , y , " Texture Filter " , texturefilternames , currenttexturefilter ) ; y + = 8 ;
info - > anisotropycombo = MC_AddCombo ( menu , 16 , y , " Anisotropy Level " , anisotropylevels , currentanisotropylevel ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " 32bit Textures " , & gl_load24bit , 0 ) ; y + = 8 ;
2010-11-02 23:17:25 +00:00
# if !defined(MINIMAL) && defined(GLQUAKE)
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " Bloom " , & r_bloom , 0 ) ; y + = 8 ;
2010-01-17 06:42:30 +00:00
MC_AddCheckBox ( menu , 16 , y , " Bloom Fast Sample " , & r_bloom_fast_sample , 0 ) ; y + = 8 ;
info - > bloomsamplesizecombo = MC_AddCombo ( menu , 16 , y , " Bloom Sample Size " , bloomsamplesizeoptions , currentbloomsamplesize ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Bloom Darken " , & r_bloom_darken , 0 , 5 , 0.25 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Bloom Intensity " , & r_bloom_intensity , 0 , 20 , 1 ) ; y + = 8 ;
info - > bloomdiamondcombo = MC_AddCombo ( menu , 16 , y , " Bloom Diamond Size " , bloomdiamondoptions , currentbloomdiamond ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Bloom Alpha " , & r_bloom_alpha , 0 , 1 , 0.1 ) ; y + = 8 ;
# endif
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " Bumpmapping " , & gl_bump , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Specular Highlights " , & gl_specular , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Texture Detail " , & gl_detail , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Texture Detail Scale " , & gl_detailscale , 0 , 10 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Texture Compression " , & gl_compress , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Save Compressed Textures " , & gl_savecompressedtex , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Triple Buffering " , & gl_triplebuffer , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " 3D Texture Picmip " , & gl_picmip , 0 , 16 , 1 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " 2D Texture Picmip " , & gl_picmip2d , 0 , 16 , 1 ) ; y + = 8 ;
2010-11-02 23:17:25 +00:00
# ifdef GLQUAKE
2009-12-29 14:00:56 +00:00
MC_AddSlider ( menu , 16 , y , " Model Texture Picmip " , & gl_playermip , 0 , 16 , 1 ) ; y + = 8 ;
2010-11-02 23:17:25 +00:00
# endif
2009-12-29 14:00:56 +00:00
info - > maxtexturesizecombo = MC_AddCombo ( menu , 16 , y , " Maximum Texture Size " , texturesizeoptions , currentmaxtexturesize ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Stain Maps " , & r_stains , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Blood Stains " , & r_bloodstains , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Stain Fade Time (secs) " , & r_stainfadetime , 0 , 30 , 0.5 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Stain Fade Ammount " , & r_stainfadeammount , 0 , 30 , 1 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Skybox Distance " , & gl_skyboxdist , 0 , 10000 , 100 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Draw Flat Surfaces " , & r_drawflat , 0 , 2 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Map Schematics " , & gl_schematics , 0 ) ; y + = 8 ;
y + = 8 ;
MC_AddCommand ( menu , 16 , y , " Apply " , M_VideoApplyTextures ) ; y + = 8 ;
menu - > selecteditem = ( union menuoption_s * ) info - > texturefiltercombo ;
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 220 , cursorpositionY , NULL , false ) ;
2009-12-29 14:00:56 +00:00
}
2009-11-04 21:16:50 +00:00
2010-01-16 04:59:13 +00:00
typedef struct {
menucombo_t * loadlitcombo ;
} shadowlightingmenuinfo_t ;
2009-12-29 14:00:56 +00:00
qboolean M_VideoApplyShadowLighting ( union menuoption_s * op , struct menu_s * menu , int key )
{
2010-01-16 04:59:13 +00:00
shadowlightingmenuinfo_t * info = menu - > data ;
2009-12-29 14:00:56 +00:00
if ( key ! = K_ENTER )
return false ;
2009-11-04 21:16:50 +00:00
2010-01-16 04:59:13 +00:00
switch ( info - > loadlitcombo - > selectedoption )
{
case 0 :
2010-01-17 06:49:27 +00:00
Cbuf_AddText ( " r_loadlit 0 \n " , RESTRICT_LOCAL ) ;
2010-01-16 04:59:13 +00:00
break ;
case 1 :
2010-01-17 06:49:27 +00:00
Cbuf_AddText ( " r_loadlit 1 \n " , RESTRICT_LOCAL ) ;
2010-01-16 04:59:13 +00:00
break ;
case 2 :
2010-01-17 06:49:27 +00:00
Cbuf_AddText ( " r_loadlit 2 \n " , RESTRICT_LOCAL ) ;
2004-08-23 00:15:46 +00:00
break ;
2010-01-16 04:59:13 +00:00
}
2009-12-29 14:00:56 +00:00
Cbuf_AddText ( " vid_restart \n " , RESTRICT_LOCAL ) ;
M_RemoveMenu ( menu ) ;
Cbuf_AddText ( " menu_shadow_lighting \n " , RESTRICT_LOCAL ) ;
return true ;
}
void M_Menu_Shadow_Lighting_f ( void )
{
2010-01-16 04:59:13 +00:00
shadowlightingmenuinfo_t * info ;
int cursorpositionY ;
int currentloadlit ;
2010-01-16 06:16:42 +00:00
# ifndef MINIMAL
extern cvar_t r_vertexlight ;
2004-08-23 00:15:46 +00:00
# endif
2010-08-28 17:14:38 +00:00
extern cvar_t r_noaliasshadows , r_shadows , r_shadow_realtime_world , r_loadlits , gl_maxshadowlights , r_lightmap_saturation , r_dynamic , r_vertexdlights , r_lightstylesmooth , r_lightstylespeed , r_nolightdir , r_shadow_realtime_world_lightmaps , r_glsl_offsetmapping , r_glsl_offsetmapping_scale , r_shadow_bumpscale_basetexture , r_shadow_bumpscale_bumpmap , r_fb_bmodels , r_fb_models , gl_overbright , r_rocketlight , r_powerupglow , v_powerupshell , r_lightflicker , r_explosionlight ;
2009-12-29 14:00:56 +00:00
2010-01-16 04:59:13 +00:00
static const char * loadlitoptions [ ] =
{
" Off " ,
" On " ,
" On (Regenerate Lighting) " ,
NULL
} ;
2010-07-11 02:22:39 +00:00
int y ;
menu_t * menu = M_Options_Title ( & y , sizeof ( * info ) ) ;
2010-01-16 04:59:13 +00:00
info = menu - > data ;
2009-12-29 14:00:56 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
currentloadlit = r_loadlits . value ;
2009-12-29 14:00:56 +00:00
menu - > selecteditem = ( union menuoption_s * )
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Shadow & Lighting Options " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2009-12-29 14:00:56 +00:00
//MC_AddSlider(menu, 16, y, " Light Map Mode", &gl_lightmapmode,0,2,1); y+=8;
MC_AddSlider ( menu , 16 , y , " Light Map Saturation " , & r_lightmap_saturation , 0 , 1 , 0.1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Dynamic Lighting " , & r_dynamic , 0 ) ; y + = 8 ;
2010-01-16 06:16:42 +00:00
# ifndef MINIMAL
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " Vertex Lighting " , & r_vertexlight , 0 ) ; y + = 8 ;
2010-01-16 06:16:42 +00:00
# endif
2009-12-29 14:00:56 +00:00
MC_AddCheckBox ( menu , 16 , y , " Dynamic Vertex Lights " , & r_vertexdlights , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Lightstyle Smoothing " , & r_lightstylesmooth , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Lightstyle Animation Speed " , & r_lightstylespeed , 0 , 50 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Fullbright BSP Models " , & r_fb_bmodels , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Fullbright Alias Models " , & r_fb_models , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Overbright Bits " , & gl_overbright , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Rocket Dynamic Lighting " , & r_rocketlight , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Powerup Glow " , & r_powerupglow , 0 , 2 , 1 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Powerup Shell " , & v_powerupshell , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Light Flickering " , & r_lightflicker , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Explosion Light " , & r_explosionlight , 0 , 1 , 0.1 ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
MC_AddCheckBox ( menu , 16 , y , " Surface Direction Model Lighting " , & r_nolightdir , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Alias Model Shadows " , & r_noaliasshadows , 0 ) ; y + = 8 ;
2010-07-11 02:22:39 +00:00
MC_AddCheckBox ( menu , 16 , y , " Realtime World Lighting " , & r_shadow_realtime_world , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Realtime World Shadows " , & r_shadow_realtime_world_shadows , 0 ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
MC_AddCheckBox ( menu , 16 , y , " Realtime World Lightmaps " , & r_shadow_realtime_world_lightmaps , 0 ) ; y + = 8 ;
2010-07-11 02:22:39 +00:00
MC_AddCheckBox ( menu , 16 , y , " Realtime Dynamic Lights " , & r_shadow_realtime_dlight , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Realtime Dynamic Light Shadows " , & r_shadow_realtime_dlight_shadows , 0 ) ; y + = 8 ;
2010-08-28 17:14:38 +00:00
MC_AddCheckBox ( menu , 16 , y , " GLSL Offsetmapping " , & r_glsl_offsetmapping , 0 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " GLSL Offsetmapping Scale " , & r_glsl_offsetmapping_scale , 0 , - 1 , 0.01 ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
MC_AddSlider ( menu , 16 , y , " Shadow Bumpscale Basetexture " , & r_shadow_bumpscale_basetexture , 0 , 10 , 1 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Shadow Bumpscale Bumpmap " , & r_shadow_bumpscale_bumpmap , 0 , 50 , 1 ) ; y + = 8 ;
info - > loadlitcombo = MC_AddCombo ( menu , 16 , y , " LIT Loading " , loadlitoptions , currentloadlit ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Maximum Shadow Lights " , & gl_maxshadowlights , 0 , 1000 , 2 ) ; y + = 8 ;
2009-12-29 14:00:56 +00:00
y + = 8 ;
MC_AddCommand ( menu , 16 , y , " Apply " , M_VideoApplyShadowLighting ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
menu - > selecteditem = ( union menuoption_s * ) info - > loadlitcombo ;
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 285 , cursorpositionY , NULL , false ) ;
2009-12-30 04:06:14 +00:00
}
typedef struct {
menucombo_t * noskinscombo ;
} teamplaymenuinfo_t ;
qboolean M_Apply_Teamplay ( union menuoption_s * op , struct menu_s * menu , int key )
{
teamplaymenuinfo_t * info = menu - > data ;
if ( key ! = K_ENTER )
return false ;
switch ( info - > noskinscombo - > selectedoption )
{
case 0 :
Cbuf_AddText ( " noskins 0 \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " noskins 1 \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " noskins 2 \n " , RESTRICT_LOCAL ) ;
break ;
}
M_RemoveMenu ( menu ) ;
Cbuf_AddText ( " menu_teamplay \n " , RESTRICT_LOCAL ) ;
return true ;
}
void M_Menu_Teamplay_f ( void )
{
static const char * noskinsoptions [ ] =
{
2010-01-16 04:59:13 +00:00
" Enable Skins (Download) " ,
2009-12-30 04:06:14 +00:00
" Disable Skins " ,
2010-01-16 04:59:13 +00:00
" Enable Skins (No Download)) " ,
2009-12-30 04:06:14 +00:00
NULL
} ;
teamplaymenuinfo_t * info ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2009-12-30 04:06:14 +00:00
int currentnoskins ;
extern cvar_t cl_parseSay , cl_triggers , tp_forceTriggers , tp_loadlocs , cl_parseFunChars , cl_noblink , noskins ;
2010-07-11 02:22:39 +00:00
int y ;
menu_t * menu = M_Options_Title ( & y , sizeof ( * info ) ) ;
2009-12-30 04:06:14 +00:00
info = menu - > data ;
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2009-12-30 04:06:14 +00:00
currentnoskins = noskins . value ;
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Options " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2009-12-30 04:06:14 +00:00
info - > noskinscombo = MC_AddCombo ( menu , 16 , y , " Skins " , noskinsoptions , currentnoskins ) ; y + = 8 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Enemy Skin " , " cl_enemyskin " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Team Skin " , " cl_teamskin " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Base Skin " , " baseskin " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Fake Name " , " cl_fakename " ) ; y + = 8 + 4 ;
MC_AddCheckBox ( menu , 16 , y , " Parse Fun Chars " , & cl_parseFunChars , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Parse Macros " , & cl_parseSay , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Load Locs " , & tp_loadlocs , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " No Blink " , & cl_noblink , 0 ) ; y + = 8 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Sound Trigger " , " tp_soundtrigger " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Fake Name " , " cl_fakename " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Weapon Order " , " tp_weapon_order " ) ; y + = 8 + 4 ;
2010-01-16 04:59:13 +00:00
MC_AddCheckBox ( menu , 16 , y , " Teamplay Triggers " , & cl_triggers , 0 ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Force Teamplay Triggers " , & tp_forceTriggers , 0 ) ; y + = 8 ;
2009-12-30 04:06:14 +00:00
MC_AddCommand ( menu , 16 , y , " Apply " , M_Apply_Teamplay ) ; y + = 8 ;
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Teamplay Location Names " , " menu_teamplay_locations \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Teamplay Item Needs " , " menu_teamplay_needs \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Teamplay Item Names " , " menu_teamplay_items \n " ) ; y + = 8 ;
menu - > selecteditem = ( union menuoption_s * ) info - > noskinscombo ;
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 200 , cursorpositionY , NULL , false ) ;
2009-12-30 04:06:14 +00:00
}
void M_Menu_Teamplay_Locations_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-01-16 08:18:08 +00:00
2009-12-30 04:06:14 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2009-12-30 04:06:14 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2009-12-30 04:06:14 +00:00
2010-01-16 04:59:13 +00:00
//menu->selecteditem = (union menuoption_s *)
2010-01-15 13:23:08 +00:00
2010-07-11 02:22:39 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Location Names " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Green Armor " , " loc_name_ga " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Grenade Launcher " , " loc_name_gl " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Lightning Gun " , " loc_name_lg " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Nailgun " , " loc_name_ng " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Pentagram " , " loc_name_pent " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Quad " , " loc_name_quad " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Red Armor " , " loc_name_ra " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Ring " , " loc_name_ring " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Rocket Launcher " , " loc_name_rl " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Seperator " , " loc_name_seperator " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Super Nailgun " , " loc_name_sng " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Super Shotgun " , " loc_name_ssg " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Suit " , " loc_name_suit " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Yellow Armor " , " loc_name_ya " ) ; y + = 8 + 4 ;
2009-12-30 04:06:14 +00:00
2010-07-11 02:22:39 +00:00
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Options " , " menu_teamplay \n " ) ; y + = 8 ;
2009-12-30 04:06:14 +00:00
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 232 , cursorpositionY , NULL , false ) ;
2009-12-30 04:06:14 +00:00
}
void M_Menu_Teamplay_Needs_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-01-16 08:18:08 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2009-12-30 04:06:14 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2009-12-30 04:06:14 +00:00
2010-07-11 02:22:39 +00:00
//menu->selecteditem = (union menuoption_s *)
2009-12-30 04:06:14 +00:00
2010-07-11 02:22:39 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Needed Items " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Cells " , " tp_need_cells " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Green Armor " , " tp_need_ga " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Health " , " tp_need_health " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Nails " , " tp_need_nails " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Red Armor " , " tp_need_ra " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Rocket Launcher " , " tp_need_rl " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Rockets " , " tp_need_rockets " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Shells " , " tp_need_shells " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Weapon " , " tp_need_weapon " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Yellow Armor " , " tp_need_ya " ) ; y + = 8 + 4 ;
2009-12-30 04:06:14 +00:00
2010-07-11 02:22:39 +00:00
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Options " , " menu_teamplay \n " ) ; y + = 8 ;
2009-12-30 04:06:14 +00:00
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 200 , cursorpositionY , NULL , false ) ;
2009-12-30 04:06:14 +00:00
}
void M_Menu_Teamplay_Items_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-01-16 08:18:08 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2009-12-30 04:06:14 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2009-12-30 04:06:14 +00:00
2010-07-11 02:22:39 +00:00
//menu->selecteditem = (union menuoption_s *)
2010-01-15 13:23:08 +00:00
2010-07-11 02:22:39 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Item Names " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " -> Teamplay Armor Names " , " menu_teamplay_armor \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " -> Teamplay Weapon Names " , " menu_teamplay_weapons \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " -> Teamplay Powerup Names " , " menu_teamplay_powerups \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " -> Teamplay Ammo & Health Names " , " menu_teamplay_ammo_health \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " -> Teamplay Team Fortress Item Names " , " menu_teamplay_team_fortress \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " -> Teamplay Status, Location & Misc Names " , " menu_teamplay_status_location_misc \n " ) ; y + = 8 ;
2010-01-15 13:23:08 +00:00
2010-07-11 02:22:39 +00:00
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Options " , " menu_teamplay \n " ) ; y + = 8 ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 64 , cursorpositionY , NULL , false ) ;
2010-01-15 13:23:08 +00:00
}
void M_Menu_Teamplay_Items_Armor_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-01-16 08:18:08 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2010-01-15 13:23:08 +00:00
2010-07-11 02:22:39 +00:00
//menu->selecteditem = (union menuoption_s *)
2010-01-15 13:23:08 +00:00
2010-07-11 02:22:39 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Armor Names " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Armor " , " tp_name_armor " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Armor Type - Green " , " tp_name_armortype_ga " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Armor Type - Red " , " tp_name_armortype_ra " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Armor Type - Yellow " , " tp_name_armortype_ya " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Green Armor " , " tp_name_ga " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Red Armor " , " tp_name_ra " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Yellow Armor " , " tp_name_ya " ) ; y + = 8 + 4 ;
2010-01-15 13:23:08 +00:00
2010-07-11 02:22:39 +00:00
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Item Names " , " menu_teamplay_items \n " ) ; y + = 8 ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 232 , cursorpositionY , NULL , false ) ;
2010-01-15 13:23:08 +00:00
}
void M_Menu_Teamplay_Items_Weapons_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
//menu->selecteditem = (union menuoption_s *)
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Weapon Names " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2010-01-15 13:23:08 +00:00
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Axe " , " tp_name_axe " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Grenade Launcher " , " tp_name_gl " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Lightning Gun " , " tp_name_lg " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Nailgun " , " tp_name_ng " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Rocket Launcher " , " tp_name_rl " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Shotgun " , " tp_name_sg " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Super Nailgun " , " tp_name_sng " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Super Shotgun " , " tp_name_ssg " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Weapon " , " tp_name_weapon " ) ; y + = 8 + 4 ;
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Item Names " , " menu_teamplay_items \n " ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 200 , cursorpositionY , NULL , false ) ;
2010-01-15 13:23:08 +00:00
}
void M_Menu_Teamplay_Items_Powerups_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
//menu->selecteditem = (union menuoption_s *)
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Powerup Names " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2010-01-15 13:23:08 +00:00
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Pentagram " , " tp_name_pent " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Pented " , " tp_name_pented " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Quad " , " tp_name_quad " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Quaded " , " tp_name_quaded " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Ring " , " tp_name_ring " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Eyes (Ring) " , " tp_name_eyes " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Resistance Rune " , " tp_name_rune_1 " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Strength Rune " , " tp_name_rune_2 " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Haste Rune " , " tp_name_rune_3 " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Regeneration Rune " , " tp_name_rune_4 " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Suit " , " tp_name_suit " ) ; y + = 8 + 4 ;
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Item Names " , " menu_teamplay_items \n " ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 200 , cursorpositionY , NULL , false ) ;
2010-01-15 13:23:08 +00:00
}
void M_Menu_Teamplay_Items_Ammo_Health_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-01-16 08:18:08 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2010-01-15 13:23:08 +00:00
2010-07-11 02:22:39 +00:00
cursorpositionY = ( y + 24 ) ;
2010-01-15 13:23:08 +00:00
2010-07-11 02:22:39 +00:00
//menu->selecteditem = (union menuoption_s *)
2009-12-30 04:06:14 +00:00
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Ammo & Health Names " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2009-12-30 04:06:14 +00:00
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Backpack " , " tp_name_backpack " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Cells " , " tp_name_cells " ) ; y + = 8 + 4 ;
2010-01-15 13:23:08 +00:00
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Nails " , " tp_name_nails " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Rockets " , " tp_name_rockets " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Shells " , " tp_name_shells " ) ; y + = 8 + 4 ;
2009-12-30 04:06:14 +00:00
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Health " , " tp_name_health " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Mega Health " , " tp_name_mh " ) ; y + = 8 + 4 ;
2010-01-15 13:23:08 +00:00
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Item Names " , " menu_teamplay_items \n " ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 200 , cursorpositionY , NULL , false ) ;
2010-01-15 13:23:08 +00:00
}
void M_Menu_Teamplay_Items_Team_Fortress_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-01-16 08:18:08 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
//menu->selecteditem = (union menuoption_s *)
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Team Fortress Item Names " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2010-01-15 13:23:08 +00:00
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Sentry Gun " , " tp_name_sentry " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Dispenser " , " tp_name_disp " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Flag " , " tp_name_flag " ) ; y + = 8 + 4 ;
y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Item Names " , " menu_teamplay_items \n " ) ; y + = 8 ;
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 200 , cursorpositionY , NULL , false ) ;
2010-01-15 13:23:08 +00:00
}
void M_Menu_Teamplay_Items_Status_Location_Misc_f ( void )
{
menu_t * menu ;
2010-01-16 04:59:13 +00:00
int cursorpositionY ;
2010-01-16 08:18:08 +00:00
2010-07-11 02:22:39 +00:00
int y ;
menu = M_Options_Title ( & y , 0 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
cursorpositionY = ( y + 24 ) ;
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
//menu->selecteditem = (union menuoption_s *)
2010-01-15 13:23:08 +00:00
2010-01-16 04:59:13 +00:00
MC_AddRedText ( menu , 16 , y , " Teamplay Status, Location & Misc. Names " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2010-01-15 13:23:08 +00:00
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " At (Location) " , " tp_name_at " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Enemy " , " tp_name_enemy " ) ; y + = 8 + 4 ;
2009-12-30 04:06:14 +00:00
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " None " , " tp_name_none " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Nothing " , " tp_name_nothing " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Seperator " , " tp_name_seperator " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Someplace " , " tp_name_someplace " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Status Blue " , " tp_name_status_blue " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Status Green " , " tp_name_status_green " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Status Red " , " tp_name_status_red " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Status Yellow " , " tp_name_status_yellow " ) ; y + = 8 + 4 ;
y + = 4 ; MC_AddEditCvar ( menu , 16 , y , " Teammate " , " tp_name_teammate " ) ; y + = 8 + 4 ;
y + = 8 ;
2010-01-15 13:23:08 +00:00
MC_AddConsoleCommand ( menu , 16 , y , " <- Teamplay Item Names " , " menu_teamplay_items \n " ) ; y + = 8 ;
2009-12-30 04:06:14 +00:00
2010-01-16 04:59:13 +00:00
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 200 , cursorpositionY , NULL , false ) ;
2010-01-23 07:14:37 +00:00
}
typedef struct {
menucombo_t * skillcombo ;
menucombo_t * mapcombo ;
} singleplayerinfo_t ;
2010-07-11 02:22:39 +00:00
static const char * maplist_q1 [ ] =
{
" start " ,
" e1m1 " ,
" e1m2 " ,
" e1m3 " ,
" e1m4 " ,
" e1m5 " ,
" e1m6 " ,
" e1m7 " ,
" e1m8 " ,
" e2m1 " ,
" e2m2 " ,
" e2m3 " ,
" e2m4 " ,
" e2m5 " ,
" e2m6 " ,
" e2m7 " ,
" e3m1 " ,
" e3m2 " ,
" e3m3 " ,
" e3m4 " ,
" e3m5 " ,
" e3m6 " ,
" e3m7 " ,
" e4m1 " ,
" e4m2 " ,
" e4m3 " ,
" e4m4 " ,
" e4m5 " ,
" e4m6 " ,
" e4m7 " ,
" e4m8 " ,
" end "
} ;
static const char * mapoptions_q1 [ ] =
{
" Start (Introduction) " ,
" E1M1 (The Slipgate Complex) " ,
" E1M2 (Castle Of The Damned) " ,
" E1M3 (The Necropolis) " ,
" E1M4 (The Grisly Grotto) " ,
" E1M5 (Gloom Keep) " ,
" E1M6 (The Door To Chthon) " ,
" E1M7 (The House Of Chthon) " ,
" E1M8 (Ziggarat Vertigo) " ,
" E2M1 (The Installation) " ,
" E2M2 (The Ogre Citadel) " ,
" E2M3 (The Crypt Of Decay) " ,
" E2M4 (The Ebon Fortress) " ,
" E2M5 (The Wizard's Manse) " ,
" E2M6 (The Dismal Oubliette " ,
" E2M7 (The Underearth) " ,
" E3M1 (Termination Central) " ,
" E3M2 (The Vaults Of Zin) " ,
" E3M3 (The Tomb Of Terror) " ,
" E3M4 (Satan's Dark Delight) " ,
" E3M5 (The Wind Tunnels) " ,
" E3M6 (Chambers Of Torment) " ,
" E3M7 (Tha Haunted Halls) " ,
" E4M1 (The Sewage System) " ,
" E4M2 (The Tower Of Despair) " ,
" E4M3 (The Elder God Shrine) " ,
" E4M4 (The Palace Of Hate) " ,
" E4M5 (Hell's Atrium) " ,
" E4M6 (The Pain Maze) " ,
" E4M7 (Azure Agony) " ,
" E4M8 (The Nameless City) " ,
" End (Shub-Niggurath's Pit) " ,
NULL
} ;
static const char * maplist_q2 [ ] =
{
" base1 " ,
" base2 " ,
" base3 " ,
" train " ,
" bunk1 " ,
" ware1 " ,
" ware2 " ,
" jail1 " ,
" jail2 " ,
" jail3 " ,
" jail4 " ,
" jail5 " ,
" security " ,
" mintro " ,
" mine1 " ,
" mine2 " ,
" mine3 " ,
" mine4 " ,
" fact1 " ,
" fact3 " ,
" fact2 " ,
" power1 " ,
" power2 " ,
" cool1 " ,
" waste1 " ,
" waste2 " ,
" waste3 " ,
" biggun " ,
" hangar1 " ,
" space " ,
" lab " ,
" hangar2 " ,
" command " ,
" strike " ,
" city1 " ,
" city2 " ,
" city3 " ,
" boss1 " ,
" boss2 "
} ;
static const char * mapoptions_q2 [ ] =
{
" base1 (Unit 1 Base Unit: Outer Base) " ,
" base2 (Unit 1 Base Unit: Installation) " ,
" base3 (Unit 1 Base Unit: Comm Center) " ,
" train (Unit 1 Base Unit: Lost Station) " ,
" bunk1 (Unit 2 Warehouse Unit: Ammo Depot) " ,
" ware1 (Unit 2 Warehouse Unit: Supply Station) " ,
" ware2 (Unit 2 Warehouse Unit: Warehouse) " ,
" jail1 (Unit 3 Jail Unit: Main Gate) " ,
" jail2 (Unit 3 Jail Unit: Destination Center) " ,
" jail3 (Unit 3 Jail Unit: Security Compex) " ,
" jail4 (Unit 3 Jail Unit: Torture Chambers) " ,
" jail5 (Unit 3 Jail Unit: Guard House) " ,
" security (Unit 3 Jail Unit: Grid Control) " ,
" mintro (Unit 4 Mine Unit: Mine Entrance) " ,
" mine1 (Unit 4 Mine Unit: Upper Mines) " ,
" mine2 (Unit 4 Mine Unit: Borehole) " ,
" mine3 (Unit 4 Mine Unit: Drilling Area) " ,
" mine4 (Unit 4 Mine Unit: Lower Mines) " ,
" fact1 (Unit 5 Factory Unit: Receiving Center) " ,
" fact3 (Unit 5 Factory Unit: Sudden Death) " ,
" fact2 (Unit 5 Factory Unit: Processing Plant) " ,
" power1 (Unit 6 Power Unit/Big Gun: Power Plant) " ,
" power2 (Unit 6 Power Unit/Big Gun: The Reactor) " ,
" cool1 (Unit 6 Power Unit/Big Gun: Cooling Facility) " ,
" waste1 (Unit 6 Power Unit/Big Gun: Toxic Waste Dump) " ,
" waste2 (Unit 6 Power Unit/Big Gun: Pumping Station 1) " ,
" waste3 (Unit 6 Power Unit/Big Gun: Pumping Station 2) " ,
" biggun (Unit 6 Power Unit/Big Gun: Big Gun) " ,
" hangar1 (Unit 7 Hangar Unit: Outer Hangar) " ,
" space (Unit 7 Hangar Unit: Comm Satelite) " ,
" lab (Unit 7 Hangar Unit: Research Lab) " ,
" hangar2 (Unit 7 Hangar Unit: Inner Hangar) " ,
" command (Unit 7 Hangar Unit: Launch Command) " ,
" strike (Unit 7 Hangar Unit: Outlands) " ,
" city1 (Unit 8 City Unit: Outer Courts) " ,
" city2 (Unit 8 City Unit: Lower Palace) " ,
" city3 (Unit 8 City Unit: Upper Palace) " ,
" boss1 (Unit 9 Boss Levels: Inner Chamber) " ,
" boss2 (Unit 9 Boss Levels: Final Showdown) " ,
NULL
} ;
2010-01-23 07:14:37 +00:00
qboolean M_Apply_SP_Cheats ( union menuoption_s * op , struct menu_s * menu , int key )
{
singleplayerinfo_t * info = menu - > data ;
if ( key ! = K_ENTER )
return false ;
switch ( info - > skillcombo - > selectedoption )
{
case 0 :
Cbuf_AddText ( " skill 0 \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " skill 1 \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " skill 2 \n " , RESTRICT_LOCAL ) ;
break ;
case 3 :
Cbuf_AddText ( " skill 3 \n " , RESTRICT_LOCAL ) ;
2004-08-23 00:15:46 +00:00
break ;
}
2010-07-11 02:22:39 +00:00
if ( ( unsigned int ) info - > mapcombo - > selectedoption > = sizeof ( maplist_q1 ) / sizeof ( maplist_q1 [ 0 ] ) )
Cbuf_AddText ( va ( " map %s \n " , maplist_q1 [ info - > mapcombo - > selectedoption ] ) , RESTRICT_LOCAL ) ;
2010-01-23 07:14:37 +00:00
M_RemoveMenu ( menu ) ;
Cbuf_AddText ( " menu_spcheats \n " , RESTRICT_LOCAL ) ;
return true ;
}
void M_Menu_Singleplayer_Cheats_f ( void )
{
static const char * skilloptions [ ] =
{
" Easy " ,
" Normal " ,
" Hard " ,
" Nightmare " ,
" None Set " ,
NULL
} ;
singleplayerinfo_t * info ;
int cursorpositionY ;
2010-07-11 02:22:39 +00:00
# ifndef CLIENTONLY
2010-01-23 07:14:37 +00:00
int currentskill ;
int currentmap ;
2010-07-11 02:22:39 +00:00
extern cvar_t sv_gravity , sv_cheats , sv_maxspeed , skill ;
2010-01-23 08:13:21 +00:00
extern cvar_t host_mapname ;
2010-07-11 02:22:39 +00:00
# endif
int y ;
menu_t * menu = M_Options_Title ( & y , sizeof ( * info ) ) ;
2010-01-23 07:14:37 +00:00
info = menu - > data ;
cursorpositionY = ( y + 24 ) ;
2010-07-11 02:22:39 +00:00
# ifndef CLIENTONLY
2010-01-23 07:14:37 +00:00
currentskill = skill . value ;
if ( ! currentskill )
currentskill = 4 ; // no skill selected
2010-07-11 02:22:39 +00:00
for ( currentmap = sizeof ( maplist_q1 ) / sizeof ( maplist_q1 [ 0 ] ) - 1 ; currentmap > 0 ; currentmap - - )
if ( ! strcmp ( host_mapname . string , maplist_q1 [ currentmap ] ) )
break ;
/*anything that doesn't match will end up with 0*/
# endif
2010-01-23 07:14:37 +00:00
2010-07-11 02:22:39 +00:00
MC_AddRedText ( menu , 16 , y , " Quake Singleplayer Cheats " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
# ifndef CLIENTONLY
info - > skillcombo = MC_AddCombo ( menu , 16 , y , " Difficulty " , skilloptions , currentskill ) ; y + = 8 ;
info - > mapcombo = MC_AddCombo ( menu , 16 , y , " Map " , mapoptions_q1 , currentmap ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Cheats " , & sv_cheats , 0 ) ; y + = 8 ;
# endif
MC_AddConsoleCommand ( menu , 16 , y , " Toggle Godmode " , " god \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Toggle Flymode " , " fly \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Toggle Noclip " , " noclip \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Quad Damage " , " impulse 255 \n " ) ; y + = 8 ;
# ifndef CLIENTONLY
MC_AddSlider ( menu , 16 , y , " Gravity " , & sv_gravity , 0 , 800 , 25 ) ; y + = 8 ;
# endif
MC_AddSlider ( menu , 16 , y , " Forward Speed " , & cl_forwardspeed , 0 , 1000 , 50 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Side Speed " , & cl_sidespeed , 0 , 1000 , 50 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Back Speed " , & cl_backspeed , 0 , 1000 , 50 ) ; y + = 8 ;
# ifndef CLIENTONLY
MC_AddSlider ( menu , 16 , y , " Max Movement Speed " , & sv_maxspeed , 0 , 1000 , 50 ) ; y + = 8 ;
# endif
MC_AddConsoleCommand ( menu , 16 , y , " Silver & Gold Keys " , " impulse 13 \n impulse 14 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " All Weapons & Items " , " impulse 9 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " No Enemy Targetting " , " notarget \n " ) ; y + = 8 ;
# ifndef CLIENTONLY
MC_AddConsoleCommand ( menu , 16 , y , " Restart Map " , " restart \n " ) ; y + = 8 ;
# else
MC_AddConsoleCommand ( menu , 16 , y , " Suicide " , " kill \n " ) ; y + = 8 ;
# endif
2010-01-23 07:14:37 +00:00
2010-07-11 02:22:39 +00:00
y + = 8 ;
MC_AddCommand ( menu , 16 , y , " Apply Changes " , M_Apply_SP_Cheats ) ; y + = 8 ;
2010-01-23 07:14:37 +00:00
menu - > selecteditem = ( union menuoption_s * ) info - > skillcombo ;
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 170 , cursorpositionY , NULL , false ) ;
}
// Quake 2
typedef struct {
menucombo_t * skillcombo ;
menucombo_t * mapcombo ;
} singleplayerq2info_t ;
qboolean M_Apply_SP_Cheats_Q2 ( union menuoption_s * op , struct menu_s * menu , int key )
{
singleplayerq2info_t * info = menu - > data ;
if ( key ! = K_ENTER )
return false ;
switch ( info - > skillcombo - > selectedoption )
{
case 0 :
Cbuf_AddText ( " skill 0 \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " skill 1 \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " skill 2 \n " , RESTRICT_LOCAL ) ;
break ;
}
2010-07-11 02:22:39 +00:00
if ( ( unsigned int ) info - > mapcombo - > selectedoption > = sizeof ( maplist_q2 ) / sizeof ( maplist_q2 [ 0 ] ) )
Cbuf_AddText ( va ( " map %s \n " , maplist_q2 [ info - > mapcombo - > selectedoption ] ) , RESTRICT_LOCAL ) ;
2010-01-23 07:14:37 +00:00
M_RemoveMenu ( menu ) ;
Cbuf_AddText ( " menu_quake2_spcheats \n " , RESTRICT_LOCAL ) ;
return true ;
}
void M_Menu_Singleplayer_Cheats_Quake2_f ( void )
{
static const char * skilloptions [ ] =
{
" Easy " ,
" Normal " ,
" Hard " ,
" None Set " ,
NULL
} ;
singleplayerq2info_t * info ;
int cursorpositionY ;
2010-11-07 03:58:09 +00:00
# ifndef CLIENTONLY
2010-01-23 07:14:37 +00:00
int currentskill ;
int currentmap ;
2010-07-11 02:22:39 +00:00
extern cvar_t sv_gravity , sv_cheats , sv_maxspeed , skill ;
2010-01-23 08:13:21 +00:00
extern cvar_t host_mapname ;
2010-07-11 02:22:39 +00:00
# endif
int y ;
menu_t * menu = M_Options_Title ( & y , sizeof ( * info ) ) ;
2010-01-23 07:14:37 +00:00
info = menu - > data ;
cursorpositionY = ( y + 24 ) ;
2010-11-07 03:58:09 +00:00
# ifndef CLIENTONLY
2010-01-23 07:14:37 +00:00
currentskill = skill . value ;
if ( ! currentskill )
currentskill = 4 ; // no skill selected
2010-07-11 02:22:39 +00:00
for ( currentmap = sizeof ( maplist_q2 ) / sizeof ( maplist_q2 [ 0 ] ) - 1 ; currentmap > 0 ; currentmap - - )
if ( ! strcmp ( host_mapname . string , maplist_q2 [ currentmap ] ) )
break ;
/*anything that doesn't match will end up with 0*/
# endif
2010-01-23 07:14:37 +00:00
2010-07-11 02:22:39 +00:00
MC_AddRedText ( menu , 16 , y , " Quake2 Singleplayer Cheats " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
# ifndef CLIENTONLY
info - > skillcombo = MC_AddCombo ( menu , 16 , y , " Difficulty " , skilloptions , currentskill ) ; y + = 8 ;
info - > mapcombo = MC_AddCombo ( menu , 16 , y , " Map " , mapoptions_q2 , currentmap ) ; y + = 8 ;
MC_AddCheckBox ( menu , 16 , y , " Cheats " , & sv_cheats , 0 ) ; y + = 8 ;
# endif
MC_AddConsoleCommand ( menu , 16 , y , " Toggle Godmode " , " god \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Toggle Noclip " , " noclip \n " ) ; y + = 8 ;
# ifndef CLIENTONLY
MC_AddSlider ( menu , 16 , y , " Gravity " , & sv_gravity , 0 , 850 , 25 ) ; y + = 8 ;
# endif
MC_AddSlider ( menu , 16 , y , " Forward Speed " , & cl_forwardspeed , 0 , 1000 , 50 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Side Speed " , & cl_sidespeed , 0 , 1000 , 50 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Back Speed " , & cl_backspeed , 0 , 1000 , 50 ) ; y + = 8 ;
# ifndef CLIENTONLY
MC_AddSlider ( menu , 16 , y , " Max Movement Speed " , & sv_maxspeed , 0 , 1000 , 50 ) ; y + = 8 ;
# endif
MC_AddConsoleCommand ( menu , 16 , y , " Unlimited Ammo " , " dmflags 8192 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Quad Damage " , " give quad damage \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Blue & Red Key " , " give blue key \n give red key \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Pyramid Key " , " give pyramid key \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " All Weapons & Items " , " give all \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Data Spinner " , " give data spinner \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Power Cube " , " give power cube \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Data CD " , " give data cd \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Ammo Pack " , " give ammo pack \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Bandolier " , " give bandolier \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Adrenaline " , " give adrenaline \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Ancient Head " , " give ancient head \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Environment Suit " , " give environment suit \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Rebreather " , " give rebreather \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Invulnerability " , " give invulnerability \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Silencer " , " give silencer \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Power Shield " , " give power shield \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Commander's Head " , " give commander's head \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Security Pass " , " give security pass \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Airstrike Marker " , " give airstrike marker \n " ) ; y + = 8 ;
# ifndef CLIENTONLY
MC_AddConsoleCommand ( menu , 16 , y , " Restart Map " , va ( " restart \n " ) ) ; y + = 8 ;
# endif
2010-01-23 07:14:37 +00:00
2010-07-11 02:22:39 +00:00
y + = 8 ;
MC_AddCommand ( menu , 16 , y , " Apply Changes " , M_Apply_SP_Cheats_Q2 ) ; y + = 8 ;
2010-01-23 07:14:37 +00:00
menu - > selecteditem = ( union menuoption_s * ) info - > skillcombo ;
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 170 , cursorpositionY , NULL , false ) ;
}
// Hexen 2
// Quake 2
typedef struct {
menucombo_t * skillcombo ;
menucombo_t * mapcombo ;
} singleplayerh2info_t ;
qboolean M_Apply_SP_Cheats_H2 ( union menuoption_s * op , struct menu_s * menu , int key )
{
singleplayerh2info_t * info = menu - > data ;
if ( key ! = K_ENTER )
return false ;
switch ( info - > skillcombo - > selectedoption )
{
case 0 :
Cbuf_AddText ( " skill 0 \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " skill 1 \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " skill 2 \n " , RESTRICT_LOCAL ) ;
break ;
case 3 :
Cbuf_AddText ( " skill 3 \n " , RESTRICT_LOCAL ) ;
break ;
}
switch ( info - > mapcombo - > selectedoption )
{
case 0 :
Cbuf_AddText ( " map demo1 \n " , RESTRICT_LOCAL ) ;
break ;
case 1 :
Cbuf_AddText ( " map demo2 \n " , RESTRICT_LOCAL ) ;
break ;
case 2 :
Cbuf_AddText ( " map demo3 \n " , RESTRICT_LOCAL ) ;
break ;
case 3 :
Cbuf_AddText ( " map village1 \n " , RESTRICT_LOCAL ) ;
break ;
case 4 :
Cbuf_AddText ( " map village2 \n " , RESTRICT_LOCAL ) ;
break ;
case 5 :
Cbuf_AddText ( " map village3 \n " , RESTRICT_LOCAL ) ;
break ;
case 6 :
Cbuf_AddText ( " map village4 \n " , RESTRICT_LOCAL ) ;
break ;
case 7 :
Cbuf_AddText ( " map village5 \n " , RESTRICT_LOCAL ) ;
break ;
case 8 :
Cbuf_AddText ( " map rider1a \n " , RESTRICT_LOCAL ) ;
break ;
case 9 :
Cbuf_AddText ( " map meso1 \n " , RESTRICT_LOCAL ) ;
break ;
case 10 :
Cbuf_AddText ( " map meso2 \n " , RESTRICT_LOCAL ) ;
break ;
case 11 :
Cbuf_AddText ( " map meso3 \n " , RESTRICT_LOCAL ) ;
break ;
case 12 :
Cbuf_AddText ( " map meso4 \n " , RESTRICT_LOCAL ) ;
break ;
case 13 :
Cbuf_AddText ( " map meso5 \n " , RESTRICT_LOCAL ) ;
break ;
case 14 :
Cbuf_AddText ( " map meso6 \n " , RESTRICT_LOCAL ) ;
break ;
case 15 :
Cbuf_AddText ( " map meso8 \n " , RESTRICT_LOCAL ) ;
break ;
case 16 :
Cbuf_AddText ( " map meso9 \n " , RESTRICT_LOCAL ) ;
break ;
case 17 :
Cbuf_AddText ( " map egypt1 \n " , RESTRICT_LOCAL ) ;
break ;
case 18 :
Cbuf_AddText ( " map egypt2 \n " , RESTRICT_LOCAL ) ;
break ;
case 19 :
Cbuf_AddText ( " map egypt3 \n " , RESTRICT_LOCAL ) ;
break ;
case 20 :
Cbuf_AddText ( " map egypt4 \n " , RESTRICT_LOCAL ) ;
break ;
case 21 :
Cbuf_AddText ( " map egypt5 \n " , RESTRICT_LOCAL ) ;
break ;
case 22 :
Cbuf_AddText ( " map egypt6 \n " , RESTRICT_LOCAL ) ;
break ;
case 23 :
Cbuf_AddText ( " map egypt7 \n " , RESTRICT_LOCAL ) ;
break ;
case 24 :
Cbuf_AddText ( " map rider2c \n " , RESTRICT_LOCAL ) ;
break ;
case 25 :
Cbuf_AddText ( " map romeric1 \n " , RESTRICT_LOCAL ) ;
break ;
case 26 :
Cbuf_AddText ( " map romeric2 \n " , RESTRICT_LOCAL ) ;
break ;
case 27 :
Cbuf_AddText ( " map romeric3 \n " , RESTRICT_LOCAL ) ;
break ;
case 28 :
Cbuf_AddText ( " map romeric4 \n " , RESTRICT_LOCAL ) ;
break ;
case 29 :
Cbuf_AddText ( " map romeric5 \n " , RESTRICT_LOCAL ) ;
break ;
case 30 :
Cbuf_AddText ( " map romeric6 \n " , RESTRICT_LOCAL ) ;
break ;
case 31 :
Cbuf_AddText ( " map romeric7 \n " , RESTRICT_LOCAL ) ;
break ;
case 32 :
Cbuf_AddText ( " map castle4 \n " , RESTRICT_LOCAL ) ;
break ;
case 33 :
Cbuf_AddText ( " map castle5 \n " , RESTRICT_LOCAL ) ;
break ;
case 34 :
Cbuf_AddText ( " map cath \n " , RESTRICT_LOCAL ) ;
break ;
case 35 :
Cbuf_AddText ( " map tower \n " , RESTRICT_LOCAL ) ;
break ;
case 36 :
Cbuf_AddText ( " map eidolon \n " , RESTRICT_LOCAL ) ;
break ;
}
M_RemoveMenu ( menu ) ;
Cbuf_AddText ( " menu_hexen2_spcheats \n " , RESTRICT_LOCAL ) ;
return true ;
}
void M_Menu_Singleplayer_Cheats_Hexen2_f ( void )
{
static const char * skilloptions [ ] =
{
" Easy " ,
" Normal " ,
" Hard " ,
" Nightmare " ,
" None Set " ,
NULL
} ;
static const char * mapoptions [ ] =
{
" demo1 (Blackmarsh: Hub 1 Blackmarsh) " ,
" demo2 (Barbican: Hub 1 Blackmarsh) " ,
" demo3 (The Mill: Hub 1 Blackmarsh) " ,
" village1 (King's Court: Hub 1 Blackmarsh) " ,
" village3 (Stables: Hub 1 Blackmarsh) " ,
" village2 (Inner Courtyard: Hub 1 Blackmarsh) " ,
" village4 (Palance Entrance: Hub 1 Blackmarsh) " ,
" village5 (The Forgotten Chapel: Hub 1 Blackmarsh) " ,
" rider1a (Famine's Domain: Hub 1 Blackmarsh) " ,
" meso1 (Palance of Columns: Hub 2 Mazaera) " ,
" meso2 (Plaza of the Sun: Hub 2 Mazaera) " ,
" meso3 (Square of the Stream: Hub 2 Mazaera) " ,
" meso4 (Tomb of the High Priest: Hub 2 Mazaera) " ,
" meso5 (Obelisk of the Moon: Hub 2 Mazaera) " ,
" meso6 (Court of 1000 Warriors: Hub 2 Mazaera) " ,
" meso8 (Bridge of Stars: Hub 2 Mazaera) " ,
" meso9 (Well of Souls: Hub 2 Mazaera) " ,
" egypt1 (Temple of Horus: Hub 3 Thysis) " ,
" egypt2 (Ancient Tempor of Nefertum: Hub 3 Thysis) " ,
" egypt3 (Tempor of Nefertum: Hub 3 Thysis) " ,
" egypt4 (Palace of the Pharaoh: Hub 3 Thysis " ,
" egypt5 (Pyramid of Anubus: Hub 3 Thysis) " ,
" egypt6 (Temple of Light: Hub 3 Thysis) " ,
" egypt7 (Shrine of Naos: Hub 3 Thysis) " ,
" rider2c (Pestilence's Lair: Hub 3 Thysis) " ,
" romeric1 (The Hall of Heroes: Hub 4 Septimus) " ,
" romeric2 (Gardens of Athena: Hub 4 Septimus) " ,
" romeric3 (Forum of Zeus: Hub 4 Septimus) " ,
" romeric4 (Baths of Demetrius: Hub 4 Septimus) " ,
" romeric5 (Temple of Mars: Hub 4 Septimus) " ,
" romeric6 (Coliseum of War: Hub 4 Septimus) " ,
" romeric7 (Reflecting Pool: Hub 4 Septimus) " ,
" castle4 (The Underhalls: Hub 5 Return to Blackmarsh) " ,
" castle5 (Eidolon's Ordeal: Hub 5 Return to Blackmarsh) " ,
" cath (Cathedral: Hub 5 Return to Blackmarsh) " ,
" tower (Tower of the Dark Mage: Hub 5 Return to Blackmarsh) " ,
" eidolon (Eidolon's Lair: Hub 5 Return to Blackmarsh) " ,
NULL
} ;
singleplayerh2info_t * info ;
int cursorpositionY ;
int currentmap ;
2010-11-07 02:20:14 +00:00
# ifndef CLIENTONLY
2010-07-11 02:22:39 +00:00
int currentskill ;
2010-01-23 08:13:21 +00:00
extern cvar_t sv_gravity , sv_cheats , sv_maxspeed , skill ;
# endif
extern cvar_t host_mapname ;
2010-07-11 02:22:39 +00:00
int y ;
menu_t * menu = M_Options_Title ( & y , sizeof ( * info ) ) ;
2010-01-23 07:14:37 +00:00
info = menu - > data ;
cursorpositionY = ( y + 24 ) ;
2010-11-07 02:20:14 +00:00
# ifndef CLIENTONLY
2010-01-23 07:14:37 +00:00
currentskill = skill . value ;
if ( ! currentskill )
currentskill = 4 ; // no skill selected
2010-01-23 08:13:21 +00:00
# endif
2010-01-23 07:14:37 +00:00
if ( strcmp ( host_mapname . string , " " ) = = 0 )
currentmap = 0 ;
else if ( stricmp ( host_mapname . string , " demo1 " ) = = 0 )
currentmap = 0 ;
else if ( stricmp ( host_mapname . string , " demo2 " ) = = 0 )
currentmap = 1 ;
else if ( stricmp ( host_mapname . string , " demo3 " ) = = 0 )
currentmap = 2 ;
else if ( stricmp ( host_mapname . string , " village1 " ) = = 0 )
currentmap = 3 ;
else if ( stricmp ( host_mapname . string , " village2 " ) = = 0 )
currentmap = 4 ;
else if ( stricmp ( host_mapname . string , " village3 " ) = = 0 )
currentmap = 5 ;
else if ( stricmp ( host_mapname . string , " village4 " ) = = 0 )
currentmap = 6 ;
else if ( stricmp ( host_mapname . string , " village5 " ) = = 0 )
currentmap = 7 ;
else if ( stricmp ( host_mapname . string , " rider1a " ) = = 0 )
currentmap = 8 ;
else if ( stricmp ( host_mapname . string , " meso1 " ) = = 0 )
currentmap = 9 ;
else if ( stricmp ( host_mapname . string , " meso2 " ) = = 0 )
currentmap = 10 ;
else if ( stricmp ( host_mapname . string , " meso3 " ) = = 0 )
currentmap = 11 ;
else if ( stricmp ( host_mapname . string , " meso4 " ) = = 0 )
currentmap = 12 ;
else if ( stricmp ( host_mapname . string , " meso5 " ) = = 0 )
currentmap = 13 ;
else if ( stricmp ( host_mapname . string , " meso6 " ) = = 0 )
currentmap = 14 ;
else if ( stricmp ( host_mapname . string , " meso8 " ) = = 0 )
currentmap = 15 ;
else if ( stricmp ( host_mapname . string , " meso9 " ) = = 0 )
currentmap = 16 ;
else if ( stricmp ( host_mapname . string , " egypt1 " ) = = 0 )
currentmap = 17 ;
else if ( stricmp ( host_mapname . string , " egypt2 " ) = = 0 )
currentmap = 18 ;
else if ( stricmp ( host_mapname . string , " egypt3 " ) = = 0 )
currentmap = 19 ;
else if ( stricmp ( host_mapname . string , " egypt4 " ) = = 0 )
currentmap = 20 ;
else if ( stricmp ( host_mapname . string , " egypt5 " ) = = 0 )
currentmap = 21 ;
else if ( stricmp ( host_mapname . string , " egypt6 " ) = = 0 )
currentmap = 22 ;
else if ( stricmp ( host_mapname . string , " egypt7 " ) = = 0 )
currentmap = 23 ;
else if ( stricmp ( host_mapname . string , " rider2c " ) = = 0 )
currentmap = 24 ;
else if ( stricmp ( host_mapname . string , " romeric1 " ) = = 0 )
currentmap = 25 ;
else if ( stricmp ( host_mapname . string , " romeric2 " ) = = 0 )
currentmap = 26 ;
else if ( stricmp ( host_mapname . string , " romeric3 " ) = = 0 )
currentmap = 27 ;
else if ( stricmp ( host_mapname . string , " romeric4 " ) = = 0 )
currentmap = 28 ;
else if ( stricmp ( host_mapname . string , " romeric5 " ) = = 0 )
currentmap = 29 ;
else if ( stricmp ( host_mapname . string , " romeric6 " ) = = 0 )
currentmap = 30 ;
else if ( stricmp ( host_mapname . string , " romeric7 " ) = = 0 )
currentmap = 31 ;
else if ( stricmp ( host_mapname . string , " castle4 " ) = = 0 )
currentmap = 32 ;
else if ( stricmp ( host_mapname . string , " castle5 " ) = = 0 )
currentmap = 33 ;
else if ( stricmp ( host_mapname . string , " cath " ) = = 0 )
currentmap = 34 ;
else if ( stricmp ( host_mapname . string , " tower " ) = = 0 )
currentmap = 35 ;
else if ( stricmp ( host_mapname . string , " eidolon " ) = = 0 )
currentmap = 36 ;
else
currentmap = 0 ;
MC_AddRedText ( menu , 16 , y , " Hexen2 Singleplayer Cheats " , false ) ; y + = 8 ;
MC_AddWhiteText ( menu , 16 , y , " <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , false ) ; y + = 8 ;
y + = 8 ;
2010-11-07 02:20:14 +00:00
# ifndef CLIENTONLY
info - > skillcombo = MC_AddCombo ( menu , 16 , y , " Difficulty " , skilloptions , currentskill ) ; y + = 8 ;
# endif
info - > mapcombo = MC_AddCombo ( menu , 16 , y , " Map " , mapoptions , currentmap ) ; y + = 8 ;
# ifndef CLIENTONLY
2010-01-23 07:14:37 +00:00
MC_AddCheckBox ( menu , 16 , y , " Cheats " , & sv_cheats , 0 ) ; y + = 8 ;
2010-01-23 08:13:21 +00:00
# endif
2010-01-23 07:14:37 +00:00
MC_AddConsoleCommand ( menu , 16 , y , " Toggle Godmode " , " god \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Toggle Flymode " , " fly \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Toggle Noclip " , " noclip \n " ) ; y + = 8 ;
2010-11-07 02:20:14 +00:00
# ifndef CLIENTONLY
2010-01-23 07:14:37 +00:00
MC_AddSlider ( menu , 16 , y , " Gravity " , & sv_gravity , 0 , 800 , 25 ) ; y + = 8 ;
2010-01-23 08:13:21 +00:00
# endif
2010-01-23 07:14:37 +00:00
MC_AddSlider ( menu , 16 , y , " Forward Speed " , & cl_forwardspeed , 0 , 1000 , 50 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Side Speed " , & cl_sidespeed , 0 , 1000 , 50 ) ; y + = 8 ;
MC_AddSlider ( menu , 16 , y , " Back Speed " , & cl_backspeed , 0 , 1000 , 50 ) ; y + = 8 ;
2010-11-07 02:20:14 +00:00
# ifndef CLIENTONLY
2010-01-23 07:14:37 +00:00
MC_AddSlider ( menu , 16 , y , " Max Movement Speed " , & sv_maxspeed , 0 , 1000 , 50 ) ; y + = 8 ;
2010-01-23 08:13:21 +00:00
# endif
2010-01-23 07:14:37 +00:00
MC_AddConsoleCommand ( menu , 16 , y , " Sheep Transformation " , " impulse 14 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Change To Paladin (lvl3+) " , " impulse 171 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Change To Crusader (lvl3+) " , " impulse 172 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Change to Necromancer (lvl3+) " , " impulse 173 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Change to Assassin (lvl3+) " , " impulse 174 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Remove Monsters " , " impulse 35 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Freeze Monsters " , " impulse 36 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Unfreeze Monsters " , " impulse 37 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Increase Level By 1 " , " impulse 40 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Increase Experience " , " impulse 41 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Display Co-ordinates " , " impulse 42 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " All Weapons & Mana " , " impulse 9 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " All Weapons & Mana & Items " , " impulse 43 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " No Enemy Targetting " , " notarget \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Enable Crosshair " , " crosshair 1 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " 20 Of Each Artifact " , " impulse 299 \n " ) ; y + = 8 ;
MC_AddConsoleCommand ( menu , 16 , y , " Restart Map " , " impulse 99 \n " ) ; y + = 8 ;
y + = 8 ;
MC_AddCommand ( menu , 16 , y , " Apply Changes " , M_Apply_SP_Cheats_H2 ) ; y + = 8 ;
menu - > selecteditem = ( union menuoption_s * ) info - > skillcombo ;
menu - > cursoritem = ( menuoption_t * ) MC_AddWhiteText ( menu , 250 , cursorpositionY , NULL , false ) ;
2004-08-23 00:15:46 +00:00
}