Make sure the menus for quake2 and hexen2 have a splitscreen option.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5490 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
145c99e802
commit
f75beaff81
2 changed files with 39 additions and 28 deletions
|
@ -330,6 +330,25 @@ void M_Menu_SinglePlayer_f (void)
|
||||||
static menuresel_t resel;
|
static menuresel_t resel;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if MAX_SPLITS > 1
|
||||||
|
static const char *splitopts[] =
|
||||||
|
{
|
||||||
|
"Single",
|
||||||
|
"Dual",
|
||||||
|
"Tripple",
|
||||||
|
"QUAD",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
static const char *splitvals[] =
|
||||||
|
{
|
||||||
|
"0",
|
||||||
|
"1",
|
||||||
|
"2",
|
||||||
|
"3",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
Key_Dest_Add(kdm_emenu);
|
Key_Dest_Add(kdm_emenu);
|
||||||
|
|
||||||
#ifdef CLIENTONLY
|
#ifdef CLIENTONLY
|
||||||
|
@ -351,13 +370,18 @@ void M_Menu_SinglePlayer_f (void)
|
||||||
|
|
||||||
//quake2 uses the 'newgame' alias, which controls the intro video and then start map.
|
//quake2 uses the 'newgame' alias, which controls the intro video and then start map.
|
||||||
menu->selecteditem = (menuoption_t*)
|
menu->selecteditem = (menuoption_t*)
|
||||||
MC_AddConsoleCommand (menu, 64, 170, 40, "Easy", va("closemenu; skill 0;deathmatch 0; coop %i;newgame\n", cl_splitscreen.ival>0));
|
MC_AddConsoleCommand (menu, 64, 170, 40, "Easy", va("closemenu; skill 0;deathmatch 0; set_calc coop ($cl_splitscreen>0);newgame\n"));
|
||||||
MC_AddConsoleCommand (menu, 64, 170, 48, "Medium", va("closemenu; skill 1;deathmatch 0; coop %i;newgame\n", cl_splitscreen.ival>0));
|
MC_AddConsoleCommand (menu, 64, 170, 48, "Medium", va("closemenu; skill 1;deathmatch 0; set_calc coop ($cl_splitscreen>0);newgame\n"));
|
||||||
MC_AddConsoleCommand (menu, 64, 170, 56, "Hard", va("closemenu; skill 2;deathmatch 0; coop %i;newgame\n", cl_splitscreen.ival>0));
|
MC_AddConsoleCommand (menu, 64, 170, 56, "Hard", va("closemenu; skill 2;deathmatch 0; set_calc coop ($cl_splitscreen>0);newgame\n"));
|
||||||
#ifdef SAVEDGAMES
|
#ifdef SAVEDGAMES
|
||||||
MC_AddConsoleCommand (menu, 64, 170, 72, "Load Game", "menu_load\n");
|
MC_AddConsoleCommand (menu, 64, 170, 72, "Load Game", "menu_load\n");
|
||||||
MC_AddConsoleCommand (menu, 64, 170, 80, "Save Game", "menu_save\n");
|
MC_AddConsoleCommand (menu, 64, 170, 80, "Save Game", "menu_save\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if MAX_SPLITS > 1
|
||||||
|
b = (menubutton_t*)MC_AddCvarCombo(menu, 72, 170, 96, "Splitscreen", &cl_splitscreen, splitopts, splitvals);
|
||||||
|
#endif
|
||||||
|
|
||||||
menu->cursoritem = (menuoption_t*)MC_AddWhiteText(menu, 48, 0, 40, NULL, false);
|
menu->cursoritem = (menuoption_t*)MC_AddWhiteText(menu, 48, 0, 40, NULL, false);
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
@ -483,6 +507,8 @@ void M_Menu_SinglePlayer_f (void)
|
||||||
MC_AddConsoleCommandHexen2BigFont(menu, 80, y+=20, "Save Game", "menu_save\n");
|
MC_AddConsoleCommandHexen2BigFont(menu, 80, y+=20, "Save Game", "menu_save\n");
|
||||||
MC_AddConsoleCommandHexen2BigFont(menu, 80, y+=20, "Load Game", "menu_load\n");
|
MC_AddConsoleCommandHexen2BigFont(menu, 80, y+=20, "Load Game", "menu_load\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
MC_AddCvarCombo(menu, 72, 170, y+=20, "Splitscreen", &cl_splitscreen, splitopts, splitvals);
|
||||||
}
|
}
|
||||||
|
|
||||||
menu->cursoritem = (menuoption_t *)MC_AddCursor(menu, &resel, 56, menu->selecteditem?menu->selecteditem->common.posy:0);
|
menu->cursoritem = (menuoption_t *)MC_AddCursor(menu, &resel, 56, menu->selecteditem?menu->selecteditem->common.posy:0);
|
||||||
|
@ -527,24 +553,6 @@ void M_Menu_SinglePlayer_f (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if MAX_SPLITS > 1
|
|
||||||
const char *opts[] =
|
|
||||||
{
|
|
||||||
"Single",
|
|
||||||
"Dual",
|
|
||||||
"Tripple",
|
|
||||||
"QUAD",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
const char *vals[] =
|
|
||||||
{
|
|
||||||
"0",
|
|
||||||
"1",
|
|
||||||
"2",
|
|
||||||
"3",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
int width;
|
int width;
|
||||||
if (R_GetShaderSizes(p, &width, NULL, true) <= 0)
|
if (R_GetShaderSizes(p, &width, NULL, true) <= 0)
|
||||||
width = 232;
|
width = 232;
|
||||||
|
@ -565,7 +573,7 @@ void M_Menu_SinglePlayer_f (void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if MAX_SPLITS > 1
|
#if MAX_SPLITS > 1
|
||||||
b = (menubutton_t*)MC_AddCvarCombo(menu, 72, 72+width/2, 92, "", &cl_splitscreen, opts, vals);
|
b = (menubutton_t*)MC_AddCvarCombo(menu, 72, 72+width/2, 92, "", &cl_splitscreen, splitopts, splitvals);
|
||||||
MC_AddWhiteText(menu, 72, 0, 92, "^aSplitscreen", false);
|
MC_AddWhiteText(menu, 72, 0, 92, "^aSplitscreen", false);
|
||||||
b->common.height = 20;
|
b->common.height = 20;
|
||||||
b->common.width = width;
|
b->common.width = width;
|
||||||
|
|
|
@ -908,15 +908,18 @@ qboolean SVQ2_InitGameProgs(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//stop q2 from crashing.
|
//Q2 gamecode depends upon maxclients being set+locked in order to know how many player slots there actually are. It crashes when its wrong.
|
||||||
if (!deathmatch.value && !coop.value)
|
if (!deathmatch.value && !coop.value)
|
||||||
maxclients.value = 1;
|
svq2_maxclients = 1;
|
||||||
else
|
else
|
||||||
maxclients.value = maxclients.ival;
|
svq2_maxclients = maxclients.ival;
|
||||||
if (maxclients.value > MAX_CLIENTS)
|
if (Cvar_VariableValue("cl_splitscreen"))
|
||||||
Cvar_SetValue(&maxclients, MAX_CLIENTS);
|
svq2_maxclients = max(svq2_maxclients, MAX_SPLITS);
|
||||||
|
if (svq2_maxclients > MAX_CLIENTS)
|
||||||
|
svq2_maxclients = MAX_CLIENTS;
|
||||||
|
if (svq2_maxclients != maxclients.value)
|
||||||
|
Cvar_SetValue(&maxclients, svq2_maxclients);
|
||||||
|
|
||||||
svq2_maxclients = maxclients.value;
|
|
||||||
maxclients.flags |= CVAR_LATCH;
|
maxclients.flags |= CVAR_LATCH;
|
||||||
deathmatch.flags |= CVAR_LATCH;
|
deathmatch.flags |= CVAR_LATCH;
|
||||||
coop.flags |= CVAR_LATCH;
|
coop.flags |= CVAR_LATCH;
|
||||||
|
|
Loading…
Reference in a new issue