home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2000 March / maximum-cd-2000-03.iso / Quake3 Game Source / Q3AGameSource.exe / Main / ui_setup.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-18  |  9.7 KB  |  308 lines

  1. // Copyright (C) 1999-2000 Id Software, Inc.
  2. //
  3. /*
  4. =======================================================================
  5.  
  6. SETUP MENU
  7.  
  8. =======================================================================
  9. */
  10.  
  11.  
  12. #include "ui_local.h"
  13.  
  14.  
  15. #define SETUP_MENU_VERTICAL_SPACING        34
  16.  
  17. #define ART_BACK0        "menu/art/back_0"
  18. #define ART_BACK1        "menu/art/back_1"    
  19. #define ART_FRAMEL        "menu/art/frame2_l"
  20. #define ART_FRAMER        "menu/art/frame1_r"
  21.  
  22. #define ID_CUSTOMIZEPLAYER        10
  23. #define ID_CUSTOMIZECONTROLS    11
  24. #define ID_SYSTEMCONFIG            12
  25. #define ID_GAME                    13
  26. #define ID_CDKEY                14
  27. #define ID_LOAD                    15
  28. #define ID_SAVE                    16
  29. #define ID_DEFAULTS                17
  30. #define ID_BACK                    18
  31.  
  32.  
  33. typedef struct {
  34.     menuframework_s    menu;
  35.  
  36.     menutext_s        banner;
  37.     menubitmap_s    framel;
  38.     menubitmap_s    framer;
  39.     menutext_s        setupplayer;
  40.     menutext_s        setupcontrols;
  41.     menutext_s        setupsystem;
  42.     menutext_s        game;
  43.     menutext_s        cdkey;
  44. //    menutext_s        load;
  45. //    menutext_s        save;
  46.     menutext_s        defaults;
  47.     menubitmap_s    back;
  48. } setupMenuInfo_t;
  49.  
  50. static setupMenuInfo_t    setupMenuInfo;
  51.  
  52.  
  53. /*
  54. =================
  55. Setup_ResetDefaults_Action
  56. =================
  57. */
  58. static void Setup_ResetDefaults_Action( qboolean result ) {
  59.     if( !result ) {
  60.         return;
  61.     }
  62.     trap_Cmd_ExecuteText( EXEC_APPEND, "exec default.cfg\n");
  63.     trap_Cmd_ExecuteText( EXEC_APPEND, "cvar_restart\n");
  64.     trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart\n" );
  65. }
  66.  
  67.  
  68. /*
  69. =================
  70. Setup_ResetDefaults_Draw
  71. =================
  72. */
  73. static void Setup_ResetDefaults_Draw( void ) {
  74.     UI_DrawProportionalString( SCREEN_WIDTH/2, 356 + PROP_HEIGHT * 0, "WARNING: This will reset *ALL*", UI_CENTER|UI_SMALLFONT, color_yellow );
  75.     UI_DrawProportionalString( SCREEN_WIDTH/2, 356 + PROP_HEIGHT * 1, "options to their default values.", UI_CENTER|UI_SMALLFONT, color_yellow );
  76. }
  77.  
  78.  
  79. /*
  80. ===============
  81. UI_SetupMenu_Event
  82. ===============
  83. */
  84. static void UI_SetupMenu_Event( void *ptr, int event ) {
  85.     if( event != QM_ACTIVATED ) {
  86.         return;
  87.     }
  88.  
  89.     switch( ((menucommon_s*)ptr)->id ) {
  90.     case ID_CUSTOMIZEPLAYER:
  91.         UI_PlayerSettingsMenu();
  92.         break;
  93.  
  94.     case ID_CUSTOMIZECONTROLS:
  95.         UI_ControlsMenu();
  96.         break;
  97.  
  98.     case ID_SYSTEMCONFIG:
  99.         UI_GraphicsOptionsMenu();
  100.         break;
  101.  
  102.     case ID_GAME:
  103.         UI_PreferencesMenu();
  104.         break;
  105.  
  106.     case ID_CDKEY:
  107.         UI_CDKeyMenu();
  108.         break;
  109.  
  110.     case ID_LOAD:
  111.         UI_LoadConfigMenu();
  112.         break;
  113.  
  114.     case ID_SAVE:
  115.         UI_SaveConfigMenu();
  116.         break;
  117.  
  118.     case ID_DEFAULTS:
  119.         UI_ConfirmMenu( "SET TO DEFAULTS?", Setup_ResetDefaults_Draw, Setup_ResetDefaults_Action );
  120.         break;
  121.  
  122.     case ID_BACK:
  123.         UI_PopMenu();
  124.         break;
  125.     }
  126. }
  127.  
  128.  
  129. /*
  130. ===============
  131. UI_SetupMenu_Init
  132. ===============
  133. */
  134. static void UI_SetupMenu_Init( void ) {
  135.     int                y;
  136.  
  137.     UI_SetupMenu_Cache();
  138.  
  139.     memset( &setupMenuInfo, 0, sizeof(setupMenuInfo) );
  140.     setupMenuInfo.menu.wrapAround = qtrue;
  141.     setupMenuInfo.menu.fullscreen = qtrue;
  142.  
  143.     setupMenuInfo.banner.generic.type                = MTYPE_BTEXT;
  144.     setupMenuInfo.banner.generic.x                    = 320;
  145.     setupMenuInfo.banner.generic.y                    = 16;
  146.     setupMenuInfo.banner.string                        = "SETUP";
  147.     setupMenuInfo.banner.color                        = color_white;
  148.     setupMenuInfo.banner.style                        = UI_CENTER;
  149.  
  150.     setupMenuInfo.framel.generic.type                = MTYPE_BITMAP;
  151.     setupMenuInfo.framel.generic.name                = ART_FRAMEL;
  152.     setupMenuInfo.framel.generic.flags                = QMF_INACTIVE;
  153.     setupMenuInfo.framel.generic.x                    = 0;  
  154.     setupMenuInfo.framel.generic.y                    = 78;
  155.     setupMenuInfo.framel.width                      = 256;
  156.     setupMenuInfo.framel.height                      = 329;
  157.  
  158.     setupMenuInfo.framer.generic.type                = MTYPE_BITMAP;
  159.     setupMenuInfo.framer.generic.name                = ART_FRAMER;
  160.     setupMenuInfo.framer.generic.flags                = QMF_INACTIVE;
  161.     setupMenuInfo.framer.generic.x                    = 376;
  162.     setupMenuInfo.framer.generic.y                    = 76;
  163.     setupMenuInfo.framer.width                      = 256;
  164.     setupMenuInfo.framer.height                      = 334;
  165.  
  166.     y = 134;
  167.     setupMenuInfo.setupplayer.generic.type            = MTYPE_PTEXT;
  168.     setupMenuInfo.setupplayer.generic.flags            = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  169.     setupMenuInfo.setupplayer.generic.x                = 320;
  170.     setupMenuInfo.setupplayer.generic.y                = y;
  171.     setupMenuInfo.setupplayer.generic.id            = ID_CUSTOMIZEPLAYER;
  172.     setupMenuInfo.setupplayer.generic.callback        = UI_SetupMenu_Event; 
  173.     setupMenuInfo.setupplayer.string                = "PLAYER";
  174.     setupMenuInfo.setupplayer.color                    = color_red;
  175.     setupMenuInfo.setupplayer.style                    = UI_CENTER;
  176.  
  177.     y += SETUP_MENU_VERTICAL_SPACING;
  178.     setupMenuInfo.setupcontrols.generic.type        = MTYPE_PTEXT;
  179.     setupMenuInfo.setupcontrols.generic.flags        = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  180.     setupMenuInfo.setupcontrols.generic.x            = 320;
  181.     setupMenuInfo.setupcontrols.generic.y            = y;
  182.     setupMenuInfo.setupcontrols.generic.id            = ID_CUSTOMIZECONTROLS;
  183.     setupMenuInfo.setupcontrols.generic.callback    = UI_SetupMenu_Event; 
  184.     setupMenuInfo.setupcontrols.string                = "CONTROLS";
  185.     setupMenuInfo.setupcontrols.color                = color_red;
  186.     setupMenuInfo.setupcontrols.style                = UI_CENTER;
  187.  
  188.     y += SETUP_MENU_VERTICAL_SPACING;
  189.     setupMenuInfo.setupsystem.generic.type            = MTYPE_PTEXT;
  190.     setupMenuInfo.setupsystem.generic.flags            = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  191.     setupMenuInfo.setupsystem.generic.x                = 320;
  192.     setupMenuInfo.setupsystem.generic.y                = y;
  193.     setupMenuInfo.setupsystem.generic.id            = ID_SYSTEMCONFIG;
  194.     setupMenuInfo.setupsystem.generic.callback        = UI_SetupMenu_Event; 
  195.     setupMenuInfo.setupsystem.string                = "SYSTEM";
  196.     setupMenuInfo.setupsystem.color                    = color_red;
  197.     setupMenuInfo.setupsystem.style                    = UI_CENTER;
  198.  
  199.     y += SETUP_MENU_VERTICAL_SPACING;
  200.     setupMenuInfo.game.generic.type                    = MTYPE_PTEXT;
  201.     setupMenuInfo.game.generic.flags                = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  202.     setupMenuInfo.game.generic.x                    = 320;
  203.     setupMenuInfo.game.generic.y                    = y;
  204.     setupMenuInfo.game.generic.id                    = ID_GAME;
  205.     setupMenuInfo.game.generic.callback                = UI_SetupMenu_Event; 
  206.     setupMenuInfo.game.string                        = "GAME OPTIONS";
  207.     setupMenuInfo.game.color                        = color_red;
  208.     setupMenuInfo.game.style                        = UI_CENTER;
  209.  
  210.     y += SETUP_MENU_VERTICAL_SPACING;
  211.     setupMenuInfo.cdkey.generic.type                = MTYPE_PTEXT;
  212.     setupMenuInfo.cdkey.generic.flags                = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  213.     setupMenuInfo.cdkey.generic.x                    = 320;
  214.     setupMenuInfo.cdkey.generic.y                    = y;
  215.     setupMenuInfo.cdkey.generic.id                    = ID_CDKEY;
  216.     setupMenuInfo.cdkey.generic.callback            = UI_SetupMenu_Event; 
  217.     setupMenuInfo.cdkey.string                        = "CD Key";
  218.     setupMenuInfo.cdkey.color                        = color_red;
  219.     setupMenuInfo.cdkey.style                        = UI_CENTER;
  220.  
  221.     if( !trap_Cvar_VariableValue( "cl_paused" ) ) {
  222. #if 0
  223.         y += SETUP_MENU_VERTICAL_SPACING;
  224.         setupMenuInfo.load.generic.type                    = MTYPE_PTEXT;
  225.         setupMenuInfo.load.generic.flags                = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  226.         setupMenuInfo.load.generic.x                    = 320;
  227.         setupMenuInfo.load.generic.y                    = y;
  228.         setupMenuInfo.load.generic.id                    = ID_LOAD;
  229.         setupMenuInfo.load.generic.callback                = UI_SetupMenu_Event; 
  230.         setupMenuInfo.load.string                        = "LOAD";
  231.         setupMenuInfo.load.color                        = color_red;
  232.         setupMenuInfo.load.style                        = UI_CENTER;
  233.  
  234.         y += SETUP_MENU_VERTICAL_SPACING;
  235.         setupMenuInfo.save.generic.type                    = MTYPE_PTEXT;
  236.         setupMenuInfo.save.generic.flags                = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  237.         setupMenuInfo.save.generic.x                    = 320;
  238.         setupMenuInfo.save.generic.y                    = y;
  239.         setupMenuInfo.save.generic.id                    = ID_SAVE;
  240.         setupMenuInfo.save.generic.callback                = UI_SetupMenu_Event; 
  241.         setupMenuInfo.save.string                        = "SAVE";
  242.         setupMenuInfo.save.color                        = color_red;
  243.         setupMenuInfo.save.style                        = UI_CENTER;
  244. #endif
  245.  
  246.         y += SETUP_MENU_VERTICAL_SPACING;
  247.         setupMenuInfo.defaults.generic.type                = MTYPE_PTEXT;
  248.         setupMenuInfo.defaults.generic.flags            = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
  249.         setupMenuInfo.defaults.generic.x                = 320;
  250.         setupMenuInfo.defaults.generic.y                = y;
  251.         setupMenuInfo.defaults.generic.id                = ID_DEFAULTS;
  252.         setupMenuInfo.defaults.generic.callback            = UI_SetupMenu_Event; 
  253.         setupMenuInfo.defaults.string                    = "DEFAULTS";
  254.         setupMenuInfo.defaults.color                    = color_red;
  255.         setupMenuInfo.defaults.style                    = UI_CENTER;
  256.     }
  257.  
  258.     setupMenuInfo.back.generic.type                    = MTYPE_BITMAP;
  259.     setupMenuInfo.back.generic.name                    = ART_BACK0;
  260.     setupMenuInfo.back.generic.flags                = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
  261.     setupMenuInfo.back.generic.id                    = ID_BACK;
  262.     setupMenuInfo.back.generic.callback                = UI_SetupMenu_Event;
  263.     setupMenuInfo.back.generic.x                    = 0;
  264.     setupMenuInfo.back.generic.y                    = 480-64;
  265.     setupMenuInfo.back.width                        = 128;
  266.     setupMenuInfo.back.height                        = 64;
  267.     setupMenuInfo.back.focuspic                        = ART_BACK1;
  268.  
  269.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.banner );
  270.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.framel );
  271.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.framer );
  272.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupplayer );
  273.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupcontrols );
  274.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.setupsystem );
  275.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.game );
  276.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.cdkey );
  277. //    Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.load );
  278. //    Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.save );
  279.     if( !trap_Cvar_VariableValue( "cl_paused" ) ) {
  280.         Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.defaults );
  281.     }
  282.     Menu_AddItem( &setupMenuInfo.menu, &setupMenuInfo.back );
  283. }
  284.  
  285.  
  286. /*
  287. =================
  288. UI_SetupMenu_Cache
  289. =================
  290. */
  291. void UI_SetupMenu_Cache( void ) {
  292.     trap_R_RegisterShaderNoMip( ART_BACK0 );
  293.     trap_R_RegisterShaderNoMip( ART_BACK1 );
  294.     trap_R_RegisterShaderNoMip( ART_FRAMEL );
  295.     trap_R_RegisterShaderNoMip( ART_FRAMER );
  296. }
  297.  
  298.  
  299. /*
  300. ===============
  301. UI_SetupMenu
  302. ===============
  303. */
  304. void UI_SetupMenu( void ) {
  305.     UI_SetupMenu_Init();
  306.     UI_PushMenu( &setupMenuInfo.menu );
  307. }
  308.