Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

ui_display.c

Go to the documentation of this file.
00001 /*
00002 ===========================================================================
00003 Copyright (C) 1999-2005 Id Software, Inc.
00004 
00005 This file is part of Quake III Arena source code.
00006 
00007 Quake III Arena source code is free software; you can redistribute it
00008 and/or modify it under the terms of the GNU General Public License as
00009 published by the Free Software Foundation; either version 2 of the License,
00010 or (at your option) any later version.
00011 
00012 Quake III Arena source code is distributed in the hope that it will be
00013 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Foobar; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020 ===========================================================================
00021 */
00022 //
00023 /*
00024 =======================================================================
00025 
00026 DISPLAY OPTIONS MENU
00027 
00028 =======================================================================
00029 */
00030 
00031 #include "ui_local.h"
00032 
00033 
00034 #define ART_FRAMEL          "menu/art/frame2_l"
00035 #define ART_FRAMER          "menu/art/frame1_r"
00036 #define ART_BACK0           "menu/art/back_0"
00037 #define ART_BACK1           "menu/art/back_1"
00038 
00039 #define ID_GRAPHICS         10
00040 #define ID_DISPLAY          11
00041 #define ID_SOUND            12
00042 #define ID_NETWORK          13
00043 #define ID_BRIGHTNESS       14
00044 #define ID_SCREENSIZE       15
00045 #define ID_BACK             16
00046 
00047 
00048 typedef struct {
00049     menuframework_s menu;
00050 
00051     menutext_s      banner;
00052     menubitmap_s    framel;
00053     menubitmap_s    framer;
00054 
00055     menutext_s      graphics;
00056     menutext_s      display;
00057     menutext_s      sound;
00058     menutext_s      network;
00059 
00060     menuslider_s    brightness;
00061     menuslider_s    screensize;
00062 
00063     menubitmap_s    back;
00064 } displayOptionsInfo_t;
00065 
00066 static displayOptionsInfo_t displayOptionsInfo;
00067 
00068 
00069 /*
00070 =================
00071 UI_DisplayOptionsMenu_Event
00072 =================
00073 */
00074 static void UI_DisplayOptionsMenu_Event( void* ptr, int event ) {
00075     if( event != QM_ACTIVATED ) {
00076         return;
00077     }
00078 
00079     switch( ((menucommon_s*)ptr)->id ) {
00080     case ID_GRAPHICS:
00081         UI_PopMenu();
00082         UI_GraphicsOptionsMenu();
00083         break;
00084 
00085     case ID_DISPLAY:
00086         break;
00087 
00088     case ID_SOUND:
00089         UI_PopMenu();
00090         UI_SoundOptionsMenu();
00091         break;
00092 
00093     case ID_NETWORK:
00094         UI_PopMenu();
00095         UI_NetworkOptionsMenu();
00096         break;
00097 
00098     case ID_BRIGHTNESS:
00099         trap_Cvar_SetValue( "r_gamma", displayOptionsInfo.brightness.curvalue / 10.0f );
00100         break;
00101     
00102     case ID_SCREENSIZE:
00103         trap_Cvar_SetValue( "cg_viewsize", displayOptionsInfo.screensize.curvalue * 10 );
00104         break;
00105 
00106     case ID_BACK:
00107         UI_PopMenu();
00108         break;
00109     }
00110 }
00111 
00112 
00113 /*
00114 ===============
00115 UI_DisplayOptionsMenu_Init
00116 ===============
00117 */
00118 static void UI_DisplayOptionsMenu_Init( void ) {
00119     int     y;
00120 
00121     memset( &displayOptionsInfo, 0, sizeof(displayOptionsInfo) );
00122 
00123     UI_DisplayOptionsMenu_Cache();
00124     displayOptionsInfo.menu.wrapAround = qtrue;
00125     displayOptionsInfo.menu.fullscreen = qtrue;
00126 
00127     displayOptionsInfo.banner.generic.type      = MTYPE_BTEXT;
00128     displayOptionsInfo.banner.generic.flags     = QMF_CENTER_JUSTIFY;
00129     displayOptionsInfo.banner.generic.x         = 320;
00130     displayOptionsInfo.banner.generic.y         = 16;
00131     displayOptionsInfo.banner.string            = "SYSTEM SETUP";
00132     displayOptionsInfo.banner.color             = color_white;
00133     displayOptionsInfo.banner.style             = UI_CENTER;
00134 
00135     displayOptionsInfo.framel.generic.type      = MTYPE_BITMAP;
00136     displayOptionsInfo.framel.generic.name      = ART_FRAMEL;
00137     displayOptionsInfo.framel.generic.flags     = QMF_INACTIVE;
00138     displayOptionsInfo.framel.generic.x         = 0;  
00139     displayOptionsInfo.framel.generic.y         = 78;
00140     displayOptionsInfo.framel.width             = 256;
00141     displayOptionsInfo.framel.height            = 329;
00142 
00143     displayOptionsInfo.framer.generic.type      = MTYPE_BITMAP;
00144     displayOptionsInfo.framer.generic.name      = ART_FRAMER;
00145     displayOptionsInfo.framer.generic.flags     = QMF_INACTIVE;
00146     displayOptionsInfo.framer.generic.x         = 376;
00147     displayOptionsInfo.framer.generic.y         = 76;
00148     displayOptionsInfo.framer.width             = 256;
00149     displayOptionsInfo.framer.height            = 334;
00150 
00151     displayOptionsInfo.graphics.generic.type        = MTYPE_PTEXT;
00152     displayOptionsInfo.graphics.generic.flags       = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
00153     displayOptionsInfo.graphics.generic.id          = ID_GRAPHICS;
00154     displayOptionsInfo.graphics.generic.callback    = UI_DisplayOptionsMenu_Event;
00155     displayOptionsInfo.graphics.generic.x           = 216;
00156     displayOptionsInfo.graphics.generic.y           = 240 - 2 * PROP_HEIGHT;
00157     displayOptionsInfo.graphics.string              = "GRAPHICS";
00158     displayOptionsInfo.graphics.style               = UI_RIGHT;
00159     displayOptionsInfo.graphics.color               = color_red;
00160 
00161     displayOptionsInfo.display.generic.type         = MTYPE_PTEXT;
00162     displayOptionsInfo.display.generic.flags        = QMF_RIGHT_JUSTIFY;
00163     displayOptionsInfo.display.generic.id           = ID_DISPLAY;
00164     displayOptionsInfo.display.generic.callback     = UI_DisplayOptionsMenu_Event;
00165     displayOptionsInfo.display.generic.x            = 216;
00166     displayOptionsInfo.display.generic.y            = 240 - PROP_HEIGHT;
00167     displayOptionsInfo.display.string               = "DISPLAY";
00168     displayOptionsInfo.display.style                = UI_RIGHT;
00169     displayOptionsInfo.display.color                = color_red;
00170 
00171     displayOptionsInfo.sound.generic.type           = MTYPE_PTEXT;
00172     displayOptionsInfo.sound.generic.flags          = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
00173     displayOptionsInfo.sound.generic.id             = ID_SOUND;
00174     displayOptionsInfo.sound.generic.callback       = UI_DisplayOptionsMenu_Event;
00175     displayOptionsInfo.sound.generic.x              = 216;
00176     displayOptionsInfo.sound.generic.y              = 240;
00177     displayOptionsInfo.sound.string                 = "SOUND";
00178     displayOptionsInfo.sound.style                  = UI_RIGHT;
00179     displayOptionsInfo.sound.color                  = color_red;
00180 
00181     displayOptionsInfo.network.generic.type         = MTYPE_PTEXT;
00182     displayOptionsInfo.network.generic.flags        = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
00183     displayOptionsInfo.network.generic.id           = ID_NETWORK;
00184     displayOptionsInfo.network.generic.callback     = UI_DisplayOptionsMenu_Event;
00185     displayOptionsInfo.network.generic.x            = 216;
00186     displayOptionsInfo.network.generic.y            = 240 + PROP_HEIGHT;
00187     displayOptionsInfo.network.string               = "NETWORK";
00188     displayOptionsInfo.network.style                = UI_RIGHT;
00189     displayOptionsInfo.network.color                = color_red;
00190 
00191     y = 240 - 1 * (BIGCHAR_HEIGHT+2);
00192     displayOptionsInfo.brightness.generic.type      = MTYPE_SLIDER;
00193     displayOptionsInfo.brightness.generic.name      = "Brightness:";
00194     displayOptionsInfo.brightness.generic.flags     = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
00195     displayOptionsInfo.brightness.generic.callback  = UI_DisplayOptionsMenu_Event;
00196     displayOptionsInfo.brightness.generic.id        = ID_BRIGHTNESS;
00197     displayOptionsInfo.brightness.generic.x         = 400;
00198     displayOptionsInfo.brightness.generic.y         = y;
00199     displayOptionsInfo.brightness.minvalue          = 5;
00200     displayOptionsInfo.brightness.maxvalue          = 20;
00201     if( !uis.glconfig.deviceSupportsGamma ) {
00202         displayOptionsInfo.brightness.generic.flags |= QMF_GRAYED;
00203     }
00204 
00205     y += BIGCHAR_HEIGHT+2;
00206     displayOptionsInfo.screensize.generic.type      = MTYPE_SLIDER;
00207     displayOptionsInfo.screensize.generic.name      = "Screen Size:";
00208     displayOptionsInfo.screensize.generic.flags     = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
00209     displayOptionsInfo.screensize.generic.callback  = UI_DisplayOptionsMenu_Event;
00210     displayOptionsInfo.screensize.generic.id        = ID_SCREENSIZE;
00211     displayOptionsInfo.screensize.generic.x         = 400;
00212     displayOptionsInfo.screensize.generic.y         = y;
00213     displayOptionsInfo.screensize.minvalue          = 3;
00214     displayOptionsInfo.screensize.maxvalue          = 10;
00215 
00216     displayOptionsInfo.back.generic.type        = MTYPE_BITMAP;
00217     displayOptionsInfo.back.generic.name        = ART_BACK0;
00218     displayOptionsInfo.back.generic.flags       = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
00219     displayOptionsInfo.back.generic.callback    = UI_DisplayOptionsMenu_Event;
00220     displayOptionsInfo.back.generic.id          = ID_BACK;
00221     displayOptionsInfo.back.generic.x           = 0;
00222     displayOptionsInfo.back.generic.y           = 480-64;
00223     displayOptionsInfo.back.width               = 128;
00224     displayOptionsInfo.back.height              = 64;
00225     displayOptionsInfo.back.focuspic            = ART_BACK1;
00226 
00227     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.banner );
00228     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.framel );
00229     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.framer );
00230     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.graphics );
00231     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.display );
00232     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.sound );
00233     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.network );
00234     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.brightness );
00235     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.screensize );
00236     Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.back );
00237 
00238     displayOptionsInfo.brightness.curvalue  = trap_Cvar_VariableValue("r_gamma") * 10;
00239     displayOptionsInfo.screensize.curvalue  = trap_Cvar_VariableValue( "cg_viewsize")/10;
00240 }
00241 
00242 
00243 /*
00244 ===============
00245 UI_DisplayOptionsMenu_Cache
00246 ===============
00247 */
00248 void UI_DisplayOptionsMenu_Cache( void ) {
00249     trap_R_RegisterShaderNoMip( ART_FRAMEL );
00250     trap_R_RegisterShaderNoMip( ART_FRAMER );
00251     trap_R_RegisterShaderNoMip( ART_BACK0 );
00252     trap_R_RegisterShaderNoMip( ART_BACK1 );
00253 }
00254 
00255 
00256 /*
00257 ===============
00258 UI_DisplayOptionsMenu
00259 ===============
00260 */
00261 void UI_DisplayOptionsMenu( void ) {
00262     UI_DisplayOptionsMenu_Init();
00263     UI_PushMenu( &displayOptionsInfo.menu );
00264     Menu_SetCursorToItem( &displayOptionsInfo.menu, &displayOptionsInfo.display );
00265 }

Generated on Thu Aug 25 12:37:40 2005 for Quake III Arena by  doxygen 1.3.9.1