|
| 1 | +/* |
| 2 | +=========================================================================== |
| 3 | +Copyright (C) 1999-2005 Id Software, Inc. |
| 4 | +Copyright (C) 2002-2021 Q3Rally Team (Per Thormann - q3rally@gmail.com) |
| 5 | +
|
| 6 | +This file is part of q3rally source code. |
| 7 | +
|
| 8 | +q3rally source code is free software; you can redistribute it |
| 9 | +and/or modify it under the terms of the GNU General Public License as |
| 10 | +published by the Free Software Foundation; either version 2 of the License, |
| 11 | +or (at your option) any later version. |
| 12 | +
|
| 13 | +q3rally source code is distributed in the hope that it will be |
| 14 | +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 | +GNU General Public License for more details. |
| 17 | +
|
| 18 | +You should have received a copy of the GNU General Public License |
| 19 | +along with q3rally; if not, write to the Free Software |
| 20 | +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| 21 | +=========================================================================== |
| 22 | +*/ |
| 23 | +// |
| 24 | +/* |
| 25 | +======================================================================= |
| 26 | +
|
| 27 | +ADVANCED GRAPHICS OPTIONS MENU |
| 28 | +
|
| 29 | +======================================================================= |
| 30 | +*/ |
| 31 | + |
| 32 | +#include "ui_local.h" |
| 33 | + |
| 34 | +#define ID_GRAPHICS 10 |
| 35 | +#define ID_ADVANCED_GRAPHICS 17 |
| 36 | +#define ID_DISPLAY 11 |
| 37 | +#define ID_SOUND 12 |
| 38 | +#define ID_NETWORK 13 |
| 39 | +#define ID_HDR 14 |
| 40 | +#define ID_POSTPROCESS 15 |
| 41 | +#define ID_BACK 16 |
| 42 | + |
| 43 | +static const char *enabled_items[] = { |
| 44 | + "Off", "On", NULL |
| 45 | +}; |
| 46 | + |
| 47 | +typedef struct { |
| 48 | + menuframework_s menu; |
| 49 | + |
| 50 | + menutext_s banner; |
| 51 | + menutext_s graphics; |
| 52 | + menutext_s advanced_graphics; |
| 53 | + menutext_s display; |
| 54 | + menutext_s sound; |
| 55 | + menutext_s network; |
| 56 | + |
| 57 | + menulist_s hdr; |
| 58 | + menulist_s postprocess; |
| 59 | + |
| 60 | + menutext_s back; |
| 61 | +} advancedGraphicsOptionsInfo_t; |
| 62 | + |
| 63 | +static advancedGraphicsOptionsInfo_t advancedGraphicsOptionsInfo; |
| 64 | + |
| 65 | +static void UI_AdvancedGraphicsOptionsMenu_Event( void* ptr, int event ) { |
| 66 | + if( event != QM_ACTIVATED ) { |
| 67 | + return; |
| 68 | + } |
| 69 | + |
| 70 | + switch( ((menucommon_s*)ptr)->id ) { |
| 71 | + case ID_GRAPHICS: |
| 72 | + UI_PopMenu(); |
| 73 | + UI_GraphicsOptionsMenu(); |
| 74 | + break; |
| 75 | + |
| 76 | + case ID_ADVANCED_GRAPHICS: |
| 77 | + break; |
| 78 | + |
| 79 | + case ID_DISPLAY: |
| 80 | + UI_PopMenu(); |
| 81 | + UI_DisplayOptionsMenu(); |
| 82 | + break; |
| 83 | + |
| 84 | + case ID_SOUND: |
| 85 | + UI_PopMenu(); |
| 86 | + UI_SoundOptionsMenu(); |
| 87 | + break; |
| 88 | + |
| 89 | + case ID_NETWORK: |
| 90 | + UI_PopMenu(); |
| 91 | + UI_NetworkOptionsMenu(); |
| 92 | + break; |
| 93 | + |
| 94 | + case ID_HDR: |
| 95 | + trap_Cvar_SetValue( "r_hdr", advancedGraphicsOptionsInfo.hdr.curvalue ); |
| 96 | + break; |
| 97 | + |
| 98 | + case ID_POSTPROCESS: |
| 99 | + trap_Cvar_SetValue( "r_postProcess", advancedGraphicsOptionsInfo.postprocess.curvalue ); |
| 100 | + break; |
| 101 | + |
| 102 | + case ID_BACK: |
| 103 | + UI_PopMenu(); |
| 104 | + break; |
| 105 | + } |
| 106 | +} |
| 107 | + |
| 108 | + |
| 109 | +static sfxHandle_t UI_AdvancedGraphicsOptionsMenu_Key( int key ) { |
| 110 | + if( key == K_MOUSE2 || key == K_ESCAPE ) { |
| 111 | + UI_PopMenu(); |
| 112 | + return menu_out_sound; |
| 113 | + } |
| 114 | + |
| 115 | + return Menu_DefaultKey( &advancedGraphicsOptionsInfo.menu, key ); |
| 116 | +} |
| 117 | + |
| 118 | +static void UI_AdvancedGraphicsOptionsMenu_Init( void ) { |
| 119 | + int y; |
| 120 | + |
| 121 | + memset( &advancedGraphicsOptionsInfo, 0, sizeof(advancedGraphicsOptionsInfo) ); |
| 122 | + |
| 123 | + UI_AdvancedGraphicsOptionsMenu_Cache(); |
| 124 | + advancedGraphicsOptionsInfo.menu.wrapAround = qtrue; |
| 125 | + advancedGraphicsOptionsInfo.menu.fullscreen = qtrue; |
| 126 | + advancedGraphicsOptionsInfo.menu.key = UI_AdvancedGraphicsOptionsMenu_Key; |
| 127 | + |
| 128 | + advancedGraphicsOptionsInfo.banner.generic.type = MTYPE_BTEXT; |
| 129 | + advancedGraphicsOptionsInfo.banner.generic.flags = QMF_CENTER_JUSTIFY; |
| 130 | + advancedGraphicsOptionsInfo.banner.generic.x = 320; |
| 131 | + advancedGraphicsOptionsInfo.banner.generic.y = 16; |
| 132 | + advancedGraphicsOptionsInfo.banner.string = "SYSTEM SETUP"; |
| 133 | + advancedGraphicsOptionsInfo.banner.color = color_white; |
| 134 | + advancedGraphicsOptionsInfo.banner.style = UI_CENTER; |
| 135 | + |
| 136 | + advancedGraphicsOptionsInfo.graphics.generic.type = MTYPE_PTEXT; |
| 137 | + advancedGraphicsOptionsInfo.graphics.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; |
| 138 | + advancedGraphicsOptionsInfo.graphics.generic.id = ID_GRAPHICS; |
| 139 | + advancedGraphicsOptionsInfo.graphics.generic.callback = UI_AdvancedGraphicsOptionsMenu_Event; |
| 140 | + advancedGraphicsOptionsInfo.graphics.generic.x = 216; |
| 141 | + advancedGraphicsOptionsInfo.graphics.generic.y = 240 - 2 * PROP_HEIGHT; |
| 142 | + advancedGraphicsOptionsInfo.graphics.string = "GRAPHICS"; |
| 143 | + advancedGraphicsOptionsInfo.graphics.style = UI_RIGHT; |
| 144 | + advancedGraphicsOptionsInfo.graphics.color = text_color_normal; |
| 145 | + |
| 146 | + advancedGraphicsOptionsInfo.advanced_graphics.generic.type = MTYPE_PTEXT; |
| 147 | + advancedGraphicsOptionsInfo.advanced_graphics.generic.flags = QMF_RIGHT_JUSTIFY; |
| 148 | + advancedGraphicsOptionsInfo.advanced_graphics.generic.id = ID_ADVANCED_GRAPHICS; |
| 149 | + advancedGraphicsOptionsInfo.advanced_graphics.generic.callback = UI_AdvancedGraphicsOptionsMenu_Event; |
| 150 | + advancedGraphicsOptionsInfo.advanced_graphics.generic.x = 216; |
| 151 | + advancedGraphicsOptionsInfo.advanced_graphics.generic.y = 240 - PROP_HEIGHT; |
| 152 | + advancedGraphicsOptionsInfo.advanced_graphics.string = "ADVANCED GRAPHICS"; |
| 153 | + advancedGraphicsOptionsInfo.advanced_graphics.style = UI_RIGHT; |
| 154 | + advancedGraphicsOptionsInfo.advanced_graphics.color = text_color_normal; |
| 155 | + |
| 156 | + advancedGraphicsOptionsInfo.display.generic.type = MTYPE_PTEXT; |
| 157 | + advancedGraphicsOptionsInfo.display.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; |
| 158 | + advancedGraphicsOptionsInfo.display.generic.id = ID_DISPLAY; |
| 159 | + advancedGraphicsOptionsInfo.display.generic.callback = UI_AdvancedGraphicsOptionsMenu_Event; |
| 160 | + advancedGraphicsOptionsInfo.display.generic.x = 216; |
| 161 | + advancedGraphicsOptionsInfo.display.generic.y = 240; |
| 162 | + advancedGraphicsOptionsInfo.display.string = "DISPLAY"; |
| 163 | + advancedGraphicsOptionsInfo.display.style = UI_RIGHT; |
| 164 | + advancedGraphicsOptionsInfo.display.color = text_color_normal; |
| 165 | + |
| 166 | + advancedGraphicsOptionsInfo.sound.generic.type = MTYPE_PTEXT; |
| 167 | + advancedGraphicsOptionsInfo.sound.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; |
| 168 | + advancedGraphicsOptionsInfo.sound.generic.id = ID_SOUND; |
| 169 | + advancedGraphicsOptionsInfo.sound.generic.callback = UI_AdvancedGraphicsOptionsMenu_Event; |
| 170 | + advancedGraphicsOptionsInfo.sound.generic.x = 216; |
| 171 | + advancedGraphicsOptionsInfo.sound.generic.y = 240 + PROP_HEIGHT; |
| 172 | + advancedGraphicsOptionsInfo.sound.string = "SOUND"; |
| 173 | + advancedGraphicsOptionsInfo.sound.style = UI_RIGHT; |
| 174 | + advancedGraphicsOptionsInfo.sound.color = text_color_normal; |
| 175 | + |
| 176 | + advancedGraphicsOptionsInfo.network.generic.type = MTYPE_PTEXT; |
| 177 | + advancedGraphicsOptionsInfo.network.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; |
| 178 | + advancedGraphicsOptionsInfo.network.generic.id = ID_NETWORK; |
| 179 | + advancedGraphicsOptionsInfo.network.generic.callback = UI_AdvancedGraphicsOptionsMenu_Event; |
| 180 | + advancedGraphicsOptionsInfo.network.generic.x = 216; |
| 181 | + advancedGraphicsOptionsInfo.network.generic.y = 240 + 2 * PROP_HEIGHT; |
| 182 | + advancedGraphicsOptionsInfo.network.string = "NETWORK"; |
| 183 | + advancedGraphicsOptionsInfo.network.style = UI_RIGHT; |
| 184 | + advancedGraphicsOptionsInfo.network.color = text_color_normal; |
| 185 | + |
| 186 | + y = 240 - 1 * (BIGCHAR_HEIGHT + 2); |
| 187 | + advancedGraphicsOptionsInfo.hdr.generic.type = MTYPE_SPINCONTROL; |
| 188 | + advancedGraphicsOptionsInfo.hdr.generic.name = "HDR:"; |
| 189 | + advancedGraphicsOptionsInfo.hdr.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; |
| 190 | + advancedGraphicsOptionsInfo.hdr.generic.callback = UI_AdvancedGraphicsOptionsMenu_Event; |
| 191 | + advancedGraphicsOptionsInfo.hdr.generic.id = ID_HDR; |
| 192 | + advancedGraphicsOptionsInfo.hdr.generic.x = 400; |
| 193 | + advancedGraphicsOptionsInfo.hdr.generic.y = y; |
| 194 | + advancedGraphicsOptionsInfo.hdr.itemnames = enabled_items; |
| 195 | + advancedGraphicsOptionsInfo.hdr.curvalue = trap_Cvar_VariableValue( "r_hdr" ) != 0; |
| 196 | + |
| 197 | + y += BIGCHAR_HEIGHT + 2; |
| 198 | + advancedGraphicsOptionsInfo.postprocess.generic.type = MTYPE_SPINCONTROL; |
| 199 | + advancedGraphicsOptionsInfo.postprocess.generic.name = "Post Process:"; |
| 200 | + advancedGraphicsOptionsInfo.postprocess.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; |
| 201 | + advancedGraphicsOptionsInfo.postprocess.generic.callback = UI_AdvancedGraphicsOptionsMenu_Event; |
| 202 | + advancedGraphicsOptionsInfo.postprocess.generic.id = ID_POSTPROCESS; |
| 203 | + advancedGraphicsOptionsInfo.postprocess.generic.x = 400; |
| 204 | + advancedGraphicsOptionsInfo.postprocess.generic.y = y; |
| 205 | + advancedGraphicsOptionsInfo.postprocess.itemnames = enabled_items; |
| 206 | + advancedGraphicsOptionsInfo.postprocess.curvalue = trap_Cvar_VariableValue( "r_postProcess" ) != 0; |
| 207 | + |
| 208 | + advancedGraphicsOptionsInfo.back.generic.type = MTYPE_PTEXT; |
| 209 | + advancedGraphicsOptionsInfo.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; |
| 210 | + advancedGraphicsOptionsInfo.back.generic.x = 20; |
| 211 | + advancedGraphicsOptionsInfo.back.generic.y = 480 - 50; |
| 212 | + advancedGraphicsOptionsInfo.back.generic.id = ID_BACK; |
| 213 | + advancedGraphicsOptionsInfo.back.generic.callback = UI_AdvancedGraphicsOptionsMenu_Event; |
| 214 | + advancedGraphicsOptionsInfo.back.string = "< BACK"; |
| 215 | + advancedGraphicsOptionsInfo.back.color = text_color_normal; |
| 216 | + advancedGraphicsOptionsInfo.back.style = UI_LEFT | UI_SMALLFONT; |
| 217 | + |
| 218 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.banner ); |
| 219 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.graphics ); |
| 220 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.advanced_graphics ); |
| 221 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.display ); |
| 222 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.sound ); |
| 223 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.network ); |
| 224 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.hdr ); |
| 225 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.postprocess ); |
| 226 | + Menu_AddItem( &advancedGraphicsOptionsInfo.menu, ( void * ) &advancedGraphicsOptionsInfo.back ); |
| 227 | +} |
| 228 | + |
| 229 | +void UI_AdvancedGraphicsOptionsMenu_Cache( void ) { |
| 230 | +} |
| 231 | + |
| 232 | +void UI_AdvancedGraphicsOptionsMenu( void ) { |
| 233 | +// STONELANCE FIXME: get rid of this after proper tansitions are added |
| 234 | + uis.transitionIn = 0; |
| 235 | +// END |
| 236 | + UI_AdvancedGraphicsOptionsMenu_Init(); |
| 237 | + UI_PushMenu( &advancedGraphicsOptionsInfo.menu ); |
| 238 | + Menu_SetCursorToItem( &advancedGraphicsOptionsInfo.menu, &advancedGraphicsOptionsInfo.hdr ); |
| 239 | +} |
0 commit comments