From 40fe796d857d34c61e06ed13cbac1e7978120c3c Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Wed, 4 Aug 2021 18:44:31 +0200 Subject: [PATCH] Add a main screen option to warp to any episode --- cgdoom/cgdoom-ui.c | 5 ++++- cgdoom/cgdoom-ui.h | 7 ++++--- cgdoom/cgdoom.c | 8 ++++++-- cgdoom/d_main.c | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/cgdoom/cgdoom-ui.c b/cgdoom/cgdoom-ui.c index 8f6d254..a40206a 100644 --- a/cgdoom/cgdoom-ui.c +++ b/cgdoom/cgdoom-ui.c @@ -348,7 +348,7 @@ int Layout_Event(Layout *l, int key) } int UI_Main(WADFileInfo *wads, int wad_count, int *dev_info, int *use_mmap, - int *startmap) + int *startmap, int *startepisode) { Layout l; Layout_Init(&l); @@ -374,6 +374,7 @@ int UI_Main(WADFileInfo *wads, int wad_count, int *dev_info, int *use_mmap, } Layout_Spacing(&l, 12); + Layout_Integer(&l, "Start at episode:", startepisode); Layout_Integer(&l, "Start at map:", startmap); Layout_Spacing(&l, 12); @@ -392,6 +393,8 @@ int UI_Main(WADFileInfo *wads, int wad_count, int *dev_info, int *use_mmap, if(*startmap < 1) *startmap = 1; + if(*startepisode < 1) + *startepisode = 1; } return -1; diff --git a/cgdoom/cgdoom-ui.h b/cgdoom/cgdoom-ui.h index da014d0..405aa54 100644 --- a/cgdoom/cgdoom-ui.h +++ b/cgdoom/cgdoom-ui.h @@ -61,9 +61,10 @@ int Layout_Event(Layout *l, int key); /* Show the program's main screen; returns index of selected WAD file. */ int UI_Main(WADFileInfo *wads, int wad_count, - int *dev_info, /* Enable technical detail screens */ - int *use_mmap, /* Map file to memory (as opposed to using Bfile) */ - int *startmap /* Warp to this map */ + int *dev_info, /* Enable technical detail screens */ + int *use_mmap, /* Map file to memory (as opposed to using Bfile) */ + int *startmap, /* Warp to this map */ + int *startepisode /* Warp to this episode */ ); #endif /* CGDOOM_UI_H */ diff --git a/cgdoom/cgdoom.c b/cgdoom/cgdoom.c index b3e1c29..bcb5b5b 100644 --- a/cgdoom/cgdoom.c +++ b/cgdoom/cgdoom.c @@ -615,10 +615,14 @@ int main(void){ WADFileInfo wads[16]; int wad_count = FindWADs(wads, 16); - extern int startmap; + extern int startmap, startepisode; int dev_info = 0; + startmap = 1; - int choice = UI_Main(wads, wad_count, &dev_info, &gWADmethod, &startmap); + startepisode = 1; + + int choice = UI_Main(wads, wad_count, &dev_info, &gWADmethod, + &startmap, &startepisode); if(choice < 0) return 1; diff --git a/cgdoom/d_main.c b/cgdoom/d_main.c index eca33c4..d1784bd 100644 --- a/cgdoom/d_main.c +++ b/cgdoom/d_main.c @@ -461,7 +461,7 @@ void D_DoomMain() else if(skill==3) startskill = sk_hard; else if(skill==4) startskill = sk_nightmare; - startepisode = episode; + episode = startepisode; map = startmap; autostart = false;