00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
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
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
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
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
00259
00260
00261 void UI_DisplayOptionsMenu( void ) {
00262 UI_DisplayOptionsMenu_Init();
00263 UI_PushMenu( &displayOptionsInfo.menu );
00264 Menu_SetCursorToItem( &displayOptionsInfo.menu, &displayOptionsInfo.display );
00265 }