summaryrefslogtreecommitdiff
path: root/setup/mainmenu.c
diff options
context:
space:
mode:
Diffstat (limited to 'setup/mainmenu.c')
-rw-r--r--setup/mainmenu.c315
1 files changed, 0 insertions, 315 deletions
diff --git a/setup/mainmenu.c b/setup/mainmenu.c
deleted file mode 100644
index a3dfafed..00000000
--- a/setup/mainmenu.c
+++ /dev/null
@@ -1,315 +0,0 @@
-// Emacs style mode select -*- C++ -*-
-//-----------------------------------------------------------------------------
-//
-// Copyright(C) 2006 Simon Howard
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-// 02111-1307, USA.
-//
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef _WIN32_WCE
-#include "libc_wince.h"
-#endif
-
-#include "config.h"
-#include "textscreen.h"
-
-#include "execute.h"
-
-#include "configfile.h"
-#include "m_argv.h"
-
-#include "setup_icon.c"
-
-#include "compatibility.h"
-#include "display.h"
-#include "joystick.h"
-#include "keyboard.h"
-#include "mouse.h"
-#include "multiplayer.h"
-#include "sound.h"
-
-static const int cheat_sequence[] =
-{
- KEY_UPARROW, KEY_UPARROW, KEY_DOWNARROW, KEY_DOWNARROW,
- KEY_LEFTARROW, KEY_RIGHTARROW, KEY_LEFTARROW, KEY_RIGHTARROW,
- 'b', 'a', KEY_ENTER, 0
-};
-
-static unsigned int cheat_sequence_index = 0;
-
-// I think these are good "sensible" defaults:
-
-static void SensibleDefaults(void)
-{
- key_up = 'w';
- key_down = 's';
- key_strafeleft = 'a';
- key_straferight = 'd';
- mousebprevweapon = 4;
- mousebnextweapon = 3;
- snd_musicdevice = 3;
- joybspeed = 29;
- vanilla_savegame_limit = 0;
- vanilla_keyboard_mapping = 0;
- vanilla_demo_limit = 0;
- show_endoom = 0;
- dclick_use = 0;
- novert = 1;
-}
-
-static int MainMenuKeyPress(txt_window_t *window, int key, void *user_data)
-{
- if (key == cheat_sequence[cheat_sequence_index])
- {
- ++cheat_sequence_index;
-
- if (cheat_sequence[cheat_sequence_index] == 0)
- {
- SensibleDefaults();
- cheat_sequence_index = 0;
-
- window = TXT_NewWindow(NULL);
- TXT_AddWidget(window, TXT_NewLabel(" \x01 "));
- TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL);
-
- return 1;
- }
- }
- else
- {
- cheat_sequence_index = 0;
- }
-
- return 0;
-}
-
-static void DoQuit(void *widget, void *dosave)
-{
- if (dosave != NULL)
- {
- M_SaveDefaults();
- }
-
- exit(0);
-}
-
-static void QuitConfirm(void *unused1, void *unused2)
-{
- txt_window_t *window;
- txt_label_t *label;
- txt_button_t *yes_button;
- txt_button_t *no_button;
-
- window = TXT_NewWindow(NULL);
-
- TXT_AddWidgets(window,
- label = TXT_NewLabel("Exiting setup.\nSave settings?"),
- TXT_NewStrut(24, 0),
- yes_button = TXT_NewButton2(" Yes ", DoQuit, DoQuit),
- no_button = TXT_NewButton2(" No ", DoQuit, NULL),
- NULL);
-
- TXT_SetWidgetAlign(label, TXT_HORIZ_CENTER);
- TXT_SetWidgetAlign(yes_button, TXT_HORIZ_CENTER);
- TXT_SetWidgetAlign(no_button, TXT_HORIZ_CENTER);
-
- // Only an "abort" button in the middle.
- TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL);
- TXT_SetWindowAction(window, TXT_HORIZ_CENTER,
- TXT_NewWindowAbortAction(window));
- 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();
- PassThroughArguments(exec);
- ExecuteDoom(exec);
-
- exit(0);
-}
-
-void MainMenu(void)
-{
- txt_window_t *window;
- txt_window_action_t *quit_action;
- txt_window_action_t *warp_action;
-
- window = TXT_NewWindow("Main Menu");
-
- TXT_AddWidgets(window,
- TXT_NewButton2("Configure Display",
- (TxtWidgetSignalFunc) ConfigDisplay, NULL),
- TXT_NewButton2("Configure Joystick",
- (TxtWidgetSignalFunc) ConfigJoystick, NULL),
- TXT_NewButton2("Configure Keyboard",
- (TxtWidgetSignalFunc) ConfigKeyboard, NULL),
- TXT_NewButton2("Configure Mouse",
- (TxtWidgetSignalFunc) ConfigMouse, NULL),
- TXT_NewButton2("Configure Sound",
- (TxtWidgetSignalFunc) ConfigSound, NULL),
- TXT_NewButton2("Compatibility",
- (TxtWidgetSignalFunc) CompatibilitySettings, NULL),
- TXT_NewButton2("Save parameters and launch DOOM", LaunchDoom, NULL),
- TXT_NewStrut(0, 1),
- TXT_NewButton2("Start a Network Game",
- (TxtWidgetSignalFunc) StartMultiGame, NULL),
- TXT_NewButton2("Join a Network Game",
- (TxtWidgetSignalFunc) JoinMultiGame, NULL),
- TXT_NewButton2("Multiplayer Configuration",
- (TxtWidgetSignalFunc) MultiplayerConfig, NULL),
- NULL);
-
- quit_action = TXT_NewWindowAction(KEY_ESCAPE, "Quit");
- warp_action = TXT_NewWindowAction(KEY_F1, "Warp");
- TXT_SignalConnect(quit_action, "pressed", QuitConfirm, NULL);
- TXT_SignalConnect(warp_action, "pressed",
- (TxtWidgetSignalFunc) WarpMenu, NULL);
- TXT_SetWindowAction(window, TXT_HORIZ_LEFT, quit_action);
- TXT_SetWindowAction(window, TXT_HORIZ_CENTER, warp_action);
-
- TXT_SetKeyListener(window, MainMenuKeyPress, NULL);
-}
-
-//
-// Initialize all configuration variables, load config file, etc
-//
-
-static void InitConfig(void)
-{
- M_ApplyPlatformDefaults();
-
- SetChatMacroDefaults();
- SetPlayerNameDefault();
-
- M_SetConfigDir();
- M_LoadDefaults();
-}
-
-//
-// Application icon
-//
-
-static void SetIcon(void)
-{
- SDL_Surface *surface;
- Uint8 *mask;
- int i;
-
- // Generate the mask
-
- mask = malloc(setup_icon_w * setup_icon_h / 8);
- memset(mask, 0, setup_icon_w * setup_icon_h / 8);
-
- for (i=0; i<setup_icon_w * setup_icon_h; ++i)
- {
- if (setup_icon_data[i * 3] != 0x00
- || setup_icon_data[i * 3 + 1] != 0x00
- || setup_icon_data[i * 3 + 2] != 0x00)
- {
- mask[i / 8] |= 1 << (7 - i % 8);
- }
- }
-
-
- surface = SDL_CreateRGBSurfaceFrom(setup_icon_data,
- setup_icon_w,
- setup_icon_h,
- 24,
- setup_icon_w * 3,
- 0xff << 0,
- 0xff << 8,
- 0xff << 16,
- 0);
-
- SDL_WM_SetIcon(surface, mask);
- SDL_FreeSurface(surface);
- free(mask);
-}
-
-// Initialize the textscreen library.
-
-static void InitTextscreen(void)
-{
- SetDisplayDriver();
-
- if (!TXT_Init())
- {
- fprintf(stderr, "Failed to initialize GUI\n");
- exit(-1);
- }
-
- TXT_SetDesktopTitle(PACKAGE_NAME " Setup ver " PACKAGE_VERSION);
- SetIcon();
-}
-
-// Restart the textscreen library. Used when the video_driver variable
-// is changed.
-
-void RestartTextscreen(void)
-{
- TXT_Shutdown();
- InitTextscreen();
-}
-
-//
-// Initialize and run the textscreen GUI.
-//
-
-static void RunGUI(void)
-{
- InitTextscreen();
- MainMenu();
-
- TXT_GUIMainLoop();
-}
-
-int main(int argc, char *argv[])
-{
- myargc = argc;
- myargv = argv;
-
-#ifdef _WIN32_WCE
-
- // Windows CE has no environment, but SDL provides an implementation.
- // Populate the environment with the values we normally find.
-
- PopulateEnvironment();
-
-#endif
-
- InitConfig();
- RunGUI();
-
- return 0;
-}
-