Restore all menu options to sane behavior

Load/Save game is still not supported.
This commit is contained in:
Lephenixnoir 2021-08-04 10:41:24 +02:00
parent 27f40b003e
commit 8b7649c824
Signed by: Lephenixnoir
GPG Key ID: 1BBA026E13FC0495
5 changed files with 88 additions and 27 deletions

3
README
View File

@ -13,8 +13,9 @@ sources (GPL) and nDoom (GPLv2). See LICENSE.
UI improvements TODO:
-> Better keyboard layout (including more keys, eg. Run)
-> Unlock entries of the game menu and options menu
=> Edit messages accordingly ("press y"/etc)
-> Warp to level from the main screen
-> Figure out why blue key looks yellow in status bar
WAD support TODO:
-> Unmodified 1.9 shareware WAD works all the way through?

View File

@ -67,13 +67,17 @@
#define DETAILHI "High detail"
#define DETAILLO "Low detail"
#define DETAILCGD "in cgdoom, press [+] or [-]\nto change detail level"
#define GAMMALVL0 "Gamma correction OFF"
#define GAMMALVL1 "Gamma correction level 1"
#define GAMMALVL2 "Gamma correction level 2"
#define GAMMALVL3 "Gamma correction level 3"
#define GAMMALVL4 "Gamma correction level 4"
#define GAMMALV "Brightness: %d/4"
#define EMPTYSTRING "empty slot"
#define NOTIMP "not implemented in cgdoom yet!"
//
// P_inter.C
//

60
cgdoom/dstrings.c Normal file
View File

@ -0,0 +1,60 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// $Log:$
//
// DESCRIPTION:
// Globally defined strings.
//
//-----------------------------------------------------------------------------
#include "dstrings.h"
const char* endmsg[NUM_QUITMESSAGES+1]=
{
// DOOM1
QUITMSG,
"please don't leave, there's more\ndemons to toast!",
"let's beat it -- this is turning\ninto a bloodbath!",
"i wouldn't leave if i were you.\ndos is much worse.",
"you're trying to say you like dos\nbetter than me, right?",
"don't leave yet -- there's a\ndemon around that corner!",
"ya know, next time you come in here\ni'm gonna toast ya.",
"go ahead and leave. see if i care."
// QuitDOOM II messages
"you want to quit?\nthen, thou hast lost an eighth!",
"don't go now, there's a \ndimensional shambler waiting\nat the dos prompt!",
"get outta here and go back\nto your boring programs.",
"if i were your boss, i'd \n deathmatch ya in a minute!",
"look, bud. you leave now\nand you forfeit your body count!",
"just leave. when you come\nback, i'll be waiting with a bat.",
"you're lucky i don't smack\nyou for thinking about leaving."
// FinalDOOM?
"fuck you, pussy!\nget the fuck out!",
"you quit and i'll jizz\nin your cystholes!",
"if you leave, i'll make\nthe lord drink my jizz.",
"hey, ron! can we say\n'fuck' in the game?",
"i'd leave: this is just\nmore monsters and levels.\nwhat a load.",
"suck it down, asshole!\nyou're a fucking wimp!",
"don't quit now! we're \nstill spending your money!",
// Internal debug. Different style, too.
"THIS IS NO MESSAGE!\nPage intentionally left blank."
};

View File

@ -22,7 +22,6 @@
//
//-----------------------------------------------------------------------------
//static const char
#include "os.h"
@ -174,8 +173,8 @@ menu_t* currentMenu;
void M_NewGame(int choice);
void M_Episode(int choice);
void M_ChooseSkill(int choice);
//void M_LoadGame(int choice);
//void M_SaveGame(int choice);
void M_LoadGame(int choice);
void M_SaveGame(int choice);
void M_Options(int choice);
void M_EndGame(int choice);
void M_ReadThis(int choice);
@ -241,10 +240,9 @@ enum
menuitem_t MainMenu[]=
{
{1,"M_NGAME",M_NewGame,'n'},
//CGD: hack to remove but keep menu size
{1,"M_OPTION",M_Options,'o'},
{1,"M_LOADG",M_NewGame/*M_LoadGame*/,'l'},
{1,"M_SAVEG",M_NewGame/*M_SaveGame*/,'s'},
{1,"M_LOADG",M_LoadGame,'l'},
{1,"M_SAVEG",M_SaveGame,'s'},
// Another hickup with Special edition.
{1,"M_RDTHIS",M_ReadThis,'r'},
{1,"M_QUITG",M_QuitDOOM,'q'}
@ -506,6 +504,16 @@ void M_DrawLoad(void)
*/
void M_LoadGame(int choice)
{
M_StartMessage(NOTIMP, NULL, true);
}
void M_SaveGame(int choice)
{
M_StartMessage(NOTIMP, NULL, true);
}
//
// Draw border for the savegame description
//
@ -637,7 +645,7 @@ void M_DrawEpisode(void)
void M_VerifyNightmare(int ch)
{
if (ch != 'y')
if (ch != 'y' && ch != ' ' && ch != KEY_ENTER)
return;
G_DeferedInitNew((skill_t)nightmare,epi+1,1);
@ -724,7 +732,7 @@ void M_ChangeMessages(int choice)
//
void M_EndGameResponse(int ch)
{
if (ch != 'y')
if (ch != 'y' && ch != ' ' && ch != KEY_ENTER)
return;
currentMenu->lastOn = itemOn;
@ -767,7 +775,7 @@ void M_FinishReadThis(int choice)
void M_QuitResponse(int ch)
{
if (ch != 'y')
if (ch != 'y' && ch != ' ' && ch != KEY_ENTER)
return;
I_Quit ();
@ -781,9 +789,9 @@ void M_QuitDOOM(int choice)
choice = 0;
// We pick index 0 which is language sensitive,
// or one at random, between 1 and maximum number.
//sprintf(endstring,"%s\n\n"DOSY, endmsg[ (gametic%(NUM_QUITMESSAGES-2))+1 ]);
sprintf(endstring,"%s\n\n"DOSY, endmsg[ (gametic%(NUM_QUITMESSAGES-2))+1 ]);
// M_StartMessage(QUITMSG/*endstring*/,(void *)M_QuitResponse,true);
M_StartMessage(endstring,(void *)M_QuitResponse,true);
}
@ -810,19 +818,7 @@ void M_ChangeSensitivity(int choice)
void M_ChangeDetail(int choice)
{
choice = 0;
detailLevel = 1 - detailLevel;
// FIXME - does not work. Remove anyway?
//printf( "M_ChangeDetail: low detail mode n.a.\n");
return;
/*R_SetViewSize (screenblocks, detailLevel);
if (!detailLevel)
players[consoleplayer].message = DETAILHI;
else
players[consoleplayer].message = DETAILLO;*/
M_StartMessage(DETAILCGD,NULL,true);
}
//
@ -996,7 +992,7 @@ boolean M_Responder (event_t* ev)
if (messageToPrint)
{
if (messageNeedsInput == true &&
!(ch == ' ' || ch == 'n' || ch == 'y' || ch == KEY_ESCAPE))
!(ch == ' ' || ch == 'n' || ch == 'y' || ch == KEY_ESCAPE || ch == KEY_ENTER))
return false;
menuactive = (boolean)messageLastMenuActive;

View File

@ -502,7 +502,7 @@ void CGCycleGamma()
I_SetPalette(usegamma);
static char message[32];
sprintf(message, "Brightness: %d/4", usegamma);
sprintf(message, GAMMALV, usegamma);
plyr->message = message;
}