int i, j;
char name[MAX_OSPATH];
char *str;
- QFile *f;
+ qfile_t *f;
int version;
for (i=0 ; i<MAX_SAVEGAMES ; i++)
{
strcpy (m_filenames[i], "--- UNUSED SLOT ---");
loadable[i] = false;
- sprintf (name, "%s/s%i.sav", com_gamedir, i);
- f = Qopen (name, "rz");
+ sprintf (name, "s%i.sav", i);
+ f = FS_Open (name, "r", false);
if (!f)
continue;
- str = Qgetline (f);
+ str = FS_Getline (f);
sscanf (str, "%i\n", &version);
- str = Qgetline (f);
+ str = FS_Getline (f);
strncpy (m_filenames[i], str, sizeof(m_filenames[i])-1);
// change _ back to space
if (m_filenames[i][j] == '_')
m_filenames[i][j] = ' ';
loadable[i] = true;
- Qclose (f);
+ FS_Close (f);
}
}
if (menuplyr_load)
{
menuplyr_load = false;
- f = COM_LoadFile("gfx/menuplyr.lmp", true);
+ f = FS_LoadFile("gfx/menuplyr.lmp", true);
if (!f)
{
menuplyr_failed = true;
}
-#define OPTIONS_ITEMS 27
+#define OPTIONS_ITEMS 28
int options_cursor;
extern cvar_t gl_delayfinish;
extern cvar_t slowmo;
+extern dllhandle_t jpeg_dll;
void M_Menu_Options_AdjustSliders (int dir)
{
Cvar_SetValueQuick (&scr_viewsize, bound(30, scr_viewsize.value + dir * 10, 120));
break;
case 8:
- Cvar_SetValueQuick (&r_sky, !r_sky.integer);
+ if (jpeg_dll != NULL)
+ Cvar_SetValueQuick (&scr_screenshot_jpeg, !scr_screenshot_jpeg.integer);
break;
case 9:
- Cvar_SetValueQuick (&v_overbrightbits, bound(0, v_overbrightbits.integer + dir, 4));
+ Cvar_SetValueQuick (&r_sky, !r_sky.integer);
break;
case 10:
- Cvar_SetValueQuick (&gl_combine, !gl_combine.integer);
+ Cvar_SetValueQuick (&v_overbrightbits, bound(0, v_overbrightbits.integer + dir, 4));
break;
case 11:
- Cvar_SetValueQuick (&gl_dither, !gl_dither.integer);
+ Cvar_SetValueQuick (&gl_combine, !gl_combine.integer);
break;
case 12:
- Cvar_SetValueQuick (&gl_delayfinish, !gl_delayfinish.integer);
+ Cvar_SetValueQuick (&gl_dither, !gl_dither.integer);
break;
case 13:
+ Cvar_SetValueQuick (&gl_delayfinish, !gl_delayfinish.integer);
+ break;
+ case 14:
Cvar_SetValueQuick (&slowmo, bound(0, slowmo.value + dir * 0.25, 5));
break;
- case 14: // music volume
+ case 15: // music volume
#ifdef _WIN32
Cvar_SetValueQuick (&bgmvolume, bound(0, bgmvolume.value + dir * 1.0, 1));
#else
Cvar_SetValueQuick (&bgmvolume, bound(0, bgmvolume.value + dir * 0.1, 1));
#endif
break;
- case 15: // sfx volume
+ case 16: // sfx volume
Cvar_SetValueQuick (&volume, bound(0, volume.value + dir * 0.1, 1));
break;
- case 16:
+ case 17:
Cvar_SetValueQuick (&crosshair, bound(0, crosshair.integer + dir, 5));
break;
- case 17:
+ case 18:
Cvar_SetValueQuick (&crosshair_size, bound(1, crosshair_size.value + dir, 5));
break;
- case 18: // static crosshair
+ case 19: // static crosshair
Cvar_SetValueQuick (&crosshair_static, !crosshair_static.integer);
break;
- case 19: // show framerate
+ case 20: // show framerate
Cvar_SetValueQuick (&showfps, !showfps.integer);
break;
- case 20: // always run
+ case 21: // always run
if (cl_forwardspeed.value > 200)
{
Cvar_SetValueQuick (&cl_forwardspeed, 200);
Cvar_SetValueQuick (&cl_backspeed, 400);
}
break;
- case 21: // lookspring
+ case 22: // lookspring
Cvar_SetValueQuick (&lookspring, !lookspring.integer);
break;
- case 22: // lookstrafe
+ case 23: // lookstrafe
Cvar_SetValueQuick (&lookstrafe, !lookstrafe.integer);
break;
- case 23: // mouse speed
+ case 24: // mouse speed
Cvar_SetValueQuick (&sensitivity, bound(1, sensitivity.value + dir * 0.5, 50));
break;
- case 24: // mouse look
+ case 25: // mouse look
Cvar_SetValueQuick (&freelook, !freelook.integer);
break;
- case 25: // invert mouse
+ case 26: // invert mouse
Cvar_SetValueQuick (&m_pitch, -m_pitch.value);
break;
- case 26: // windowed mouse
+ case 27: // windowed mouse
Cvar_SetValueQuick (&vid_mouse, !vid_mouse.integer);
break;
}
M_Print(16, y, " Color Control Options");y += 8;
M_Print(16, y, " 2D Resolution");M_DrawSlider(220, y, scr_2dresolution.value, 0, 1);y += 8;
M_Print(16, y, " Screen size");M_DrawSlider(220, y, scr_viewsize.value, 30, 120);y += 8;
+ M_ItemPrint(16, y, " JPEG screenshots", jpeg_dll != NULL);M_DrawCheckbox(220, y, scr_screenshot_jpeg.integer);y += 8;
M_Print(16, y, " Sky");M_DrawCheckbox(220, y, r_sky.integer);y += 8;
M_Print(16, y, " Overbright Bits");M_DrawSlider(220, y, v_overbrightbits.value, 0, 4);y += 8;
M_Print(16, y, " Texture Combine");M_DrawCheckbox(220, y, gl_combine.integer);y += 8;
qboolean m_serverInfoMessage = false;
double m_serverInfoMessageTime;
+extern cvar_t sv_public;
+
void M_Menu_GameOptions_f (void)
{
key_dest = key_menu;
}
-int gameoptions_cursor_table[] = {40, 56, 64, 72, 80, 88, 96, 112, 120};
-#define NUM_GAMEOPTIONS 9
+int gameoptions_cursor_table[] = {40, 56, 64, 72, 80, 88, 96, 104, 120, 128};
+#define NUM_GAMEOPTIONS 10
int gameoptions_cursor;
void M_GameOptions_Draw (void)
else
M_Print (160, 96, va("%i minutes", timelimit.integer));
+ M_Print (0, 104, " Public server");
+ M_Print (160, 104, (sv_public.integer == 0) ? "no" : "yes");
+
g = lookupgameinfo();
- M_Print (0, 112, " Episode");
- M_Print (160, 112, g->episodes[startepisode].description);
+ M_Print (0, 120, " Episode");
+ M_Print (160, 120, g->episodes[startepisode].description);
- M_Print (0, 120, " Level");
- M_Print (160, 120, g->levels[g->episodes[startepisode].firstLevel + startlevel].description);
- M_Print (160, 128, g->levels[g->episodes[startepisode].firstLevel + startlevel].name);
+ M_Print (0, 128, " Level");
+ M_Print (160, 128, g->levels[g->episodes[startepisode].firstLevel + startlevel].description);
+ M_Print (160, 136, g->levels[g->episodes[startepisode].firstLevel + startlevel].name);
// line cursor
M_DrawCharacter (144, gameoptions_cursor_table[gameoptions_cursor], 12+((int)(realtime*4)&1));
break;
case 7:
+ Cvar_SetValueQuick (&sv_public, !sv_public.integer);
+ break;
+
+ case 8:
startepisode += dir;
g = lookupgameinfo();
startlevel = 0;
break;
- case 8:
+ case 9:
startlevel += dir;
g = lookupgameinfo();
void M_Search_Draw (void)
{
- const char* string;
cachepic_t *p;
int x;
return;
}
- if (gamemode == GAME_TRANSFUSION)
- string = "No Transfusion servers found";
- else
- string = "No Quake servers found";
- M_PrintWhite ((320/2) - ((22*8)/2), 64, string);
+ M_PrintWhite ((320/2) - ((22*8)/2), 64, va("No %s servers found", gamename));
if ((realtime - searchCompleteTime) < 3.0)
return;
if (gamemode == GAME_NEHAHRA)
{
- if (COM_FileExists("maps/neh1m4.bsp"))
+ if (FS_FileExists("maps/neh1m4.bsp"))
{
- if (COM_FileExists("hearing.dem"))
+ if (FS_FileExists("hearing.dem"))
{
Con_Printf("Nehahra movie and game detected.\n");
NehGameType = TYPE_BOTH;
}
else
{
- if (COM_FileExists("hearing.dem"))
+ if (FS_FileExists("hearing.dem"))
{
Con_Printf("Nehahra movie detected.\n");
NehGameType = TYPE_DEMO;