summaryrefslogtreecommitdiff
path: root/setup/mainmenu.c
diff options
context:
space:
mode:
Diffstat (limited to 'setup/mainmenu.c')
-rw-r--r--setup/mainmenu.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/setup/mainmenu.c b/setup/mainmenu.c
index ca29e9cf..2b484418 100644
--- a/setup/mainmenu.c
+++ b/setup/mainmenu.c
@@ -23,6 +23,8 @@
#include "config.h"
#include "textscreen.h"
+#include "execute.h"
+
#include "configfile.h"
#include "m_argv.h"
@@ -33,7 +35,7 @@
#include "multiplayer.h"
#include "sound.h"
-void DoQuit(void *widget, void *dosave)
+static void DoQuit(void *widget, void *dosave)
{
if (dosave != NULL)
{
@@ -43,7 +45,7 @@ void DoQuit(void *widget, void *dosave)
exit(0);
}
-void QuitConfirm(void *unused1, void *unused2)
+static void QuitConfirm(void *unused1, void *unused2)
{
txt_window_t *window;
txt_label_t *label;
@@ -71,6 +73,26 @@ void QuitConfirm(void *unused1, void *unused2)
TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL);
}
+static void LaunchDoom(void *unused1, void *unused2)
+{
+ execute_context_t *exec;
+
+ // Save configuration first
+
+ M_SaveDefaults();
+
+ // Shut down textscreen GUI
+
+ TXT_Shutdown();
+
+ // Launch Doom
+
+ exec = NewExecuteContext();
+ ExecuteDoom(exec);
+
+ exit(0);
+}
+
void MainMenu(void)
{
txt_window_t *window;
@@ -89,7 +111,7 @@ void MainMenu(void)
(TxtWidgetSignalFunc) ConfigSound, NULL),
TXT_NewButton2("Compatibility",
(TxtWidgetSignalFunc) CompatibilitySettings, NULL),
- TXT_NewButton("Save parameters and launch DOOM"),
+ TXT_NewButton2("Save parameters and launch DOOM", LaunchDoom, NULL),
TXT_NewStrut(0, 1),
TXT_NewButton2("Start a Network game",
(TxtWidgetSignalFunc) StartMultiGame, NULL),