Skip to content

Commit

Permalink
add key bindings to reload current level / go to next level
Browse files Browse the repository at this point in the history
Thanks Aurelius for the suggestion.
  • Loading branch information
fabiangreffrath committed Aug 10, 2020
1 parent 9dbdf65 commit 24bca87
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Source/g_game.c
Expand Up @@ -123,6 +123,9 @@ int key_menu_escape; // |
int key_menu_enter; // phares 3/7/98
// [FG] clear key bindings with the DEL key
int key_menu_clear;
// [FG] reload current level / go to next level
int key_menu_reloadlevel;
int key_menu_nextlevel;
int key_strafeleft;
int key_straferight;
int key_fire;
Expand Down
3 changes: 3 additions & 0 deletions Source/g_game.h
Expand Up @@ -80,6 +80,9 @@ extern int key_menu_escape; // |
extern int key_menu_enter; // phares 3/7/98
// [FG] clear key bindings with the DEL key
extern int key_menu_clear;
// [FG] reload current level / go to next level
extern int key_menu_reloadlevel;
extern int key_menu_nextlevel;
extern int key_strafeleft;
extern int key_straferight;

Expand Down
87 changes: 87 additions & 0 deletions Source/m_menu.c
Expand Up @@ -2233,6 +2233,77 @@ void M_DrawInstructions()
}
}

// [FG] reload current level / go to next level
// adapted from prboom-plus/src/e6y.c:369-449
static int G_ReloadLevel(void)
{
int result = false;

if (gamestate == GS_LEVEL &&
!deathmatch && !netgame &&
!demorecording && !demoplayback &&
!menuactive)
{
G_DeferedInitNew(gameskill, gameepisode, gamemap);
result = true;
}

return result;
}

static int G_GotoNextLevel(void)
{
int changed = false;

byte doom_next[4][9] = {
{12, 13, 19, 15, 16, 17, 18, 21, 14},
{22, 23, 24, 25, 29, 27, 28, 31, 26},
{32, 33, 34, 35, 36, 39, 38, 41, 37},
{42, 49, 44, 45, 46, 47, 48, 11, 43}};
byte doom2_next[32] = {
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 31, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 1,
32, 16};

if (gamemode == commercial)
{
if (!haswolflevels)
doom2_next[14] = 16;
}
else
{
if (gamemode == shareware)
doom_next[0][7] = 11;

if (gamemode == registered)
doom_next[2][7] = 11;
}

if (gamestate == GS_LEVEL &&
!deathmatch && !netgame &&
!demorecording && !demoplayback &&
!menuactive)
{
int epsd, map;

if (gamemode == commercial)
{
epsd = gameepisode;
map = doom2_next[gamemap-1];
}
else
{
epsd = doom_next[gameepisode-1][gamemap-1] / 10;
map = doom_next[gameepisode-1][gamemap-1] % 10;
}

G_DeferedInitNew(gameskill, epsd, map);
changed = true;
}

return changed;
}

/////////////////////////////
//
Expand Down Expand Up @@ -2399,6 +2470,10 @@ setup_menu_t keys_settings3[] = // Key Binding screen strings
// [FG] prev/next weapon keys and buttons
{"PREV" ,S_KEY ,m_scrn,KB_X,KB_Y+12*8,{&key_prevweapon},&mousebprevweapon,&joybprevweapon},
{"NEXT" ,S_KEY ,m_scrn,KB_X,KB_Y+13*8,{&key_nextweapon},&mousebnextweapon,&joybnextweapon},
// [FG] reload current level / go to next level
{"LEVELS" ,S_SKIP|S_TITLE,m_null,KB_X,KB_Y+14*8},
{"RELOAD LEVEL",S_KEY ,m_scrn,KB_X,KB_Y+15*8,{&key_menu_reloadlevel}},
{"NEXT LEVEL" ,S_KEY ,m_scrn,KB_X,KB_Y+16*8,{&key_menu_nextlevel}},

{"<- PREV",S_SKIP|S_PREV,m_null,KB_PREV,KB_Y+20*8, {keys_settings2}},
{"NEXT ->",S_SKIP|S_NEXT,m_null,KB_NEXT,KB_Y+20*8, {keys_settings4}},
Expand Down Expand Up @@ -4569,6 +4644,18 @@ boolean M_Responder (event_t* ev)
M_SetupNextMenu(&SetupDef);
return true;
}

// [FG] reload current level / go to next level
if (ch != 0 && ch == key_menu_reloadlevel)
{
if (G_ReloadLevel())
return true;
}
if (ch != 0 && ch == key_menu_nextlevel)
{
if (G_GotoNextLevel())
return true;
}
}

// Pop-up Main menu?
Expand Down
15 changes: 15 additions & 0 deletions Source/m_misc.c
Expand Up @@ -665,6 +665,21 @@ default_t defaults[] = {
"key to clear a key binding"
},

// [FG] reload current level / go to next level
{
"key_menu_reloadlevel",
(config_t *) &key_menu_reloadlevel, NULL,
{0}, {0,255}, number, ss_keys, wad_no,
"key to restart current level"
},

{
"key_menu_nextlevel",
(config_t *) &key_menu_nextlevel, NULL,
{0}, {0,255}, number, ss_keys, wad_no,
"key to go to next level"
},

{
"key_strafeleft",
(config_t *) &key_strafeleft, NULL,
Expand Down

0 comments on commit 24bca87

Please sign in to comment.