Skip to content

Commit 1b0e5bd

Browse files
committed
Added a Advanced Graphics Menu for more Options
1 parent b74bd1e commit 1b0e5bd

File tree

7 files changed

+342
-20
lines changed

7 files changed

+342
-20
lines changed

engine/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2936,6 +2936,7 @@ Q3UIOBJ_ = \
29362936
$(B)/$(BASEGAME)/ui/bg_misc.o \
29372937
$(B)/$(BASEGAME)/ui/bg_lib.o \
29382938
$(B)/$(BASEGAME)/ui/ui_addbots.o \
2939+
$(B)/$(BASEGAME)/ui/ui_advanced_graphics.o \
29392940
$(B)/$(BASEGAME)/ui/ui_atoms.o \
29402941
$(B)/$(BASEGAME)/ui/ui_cdkey.o \
29412942
$(B)/$(BASEGAME)/ui/ui_cinematics.o \
Lines changed: 239 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,239 @@
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+
}

engine/code/q3_ui/ui_display.c

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ DISPLAY OPTIONS MENU
4242
// END
4343

4444
#define ID_GRAPHICS 10
45+
#define ID_ADVANCED_GRAPHICS 17
4546
#define ID_DISPLAY 11
4647
#define ID_SOUND 12
4748
#define ID_NETWORK 13
@@ -62,6 +63,7 @@ typedef struct {
6263
// END
6364

6465
menutext_s graphics;
66+
menutext_s advanced_graphics;
6567
menutext_s display;
6668
menutext_s sound;
6769
menutext_s network;
@@ -94,6 +96,11 @@ static void UI_DisplayOptionsMenu_Event( void* ptr, int event ) {
9496
UI_GraphicsOptionsMenu();
9597
break;
9698

99+
case ID_ADVANCED_GRAPHICS:
100+
UI_PopMenu();
101+
UI_AdvancedGraphicsOptionsMenu();
102+
break;
103+
97104
case ID_DISPLAY:
98105
break;
99106

@@ -177,12 +184,23 @@ static void UI_DisplayOptionsMenu_Init( void ) {
177184
displayOptionsInfo.graphics.color = text_color_normal;
178185
// END
179186

187+
188+
displayOptionsInfo.advanced_graphics.generic.type = MTYPE_PTEXT;
189+
displayOptionsInfo.advanced_graphics.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
190+
displayOptionsInfo.advanced_graphics.generic.id = ID_ADVANCED_GRAPHICS;
191+
displayOptionsInfo.advanced_graphics.generic.callback = UI_DisplayOptionsMenu_Event;
192+
displayOptionsInfo.advanced_graphics.generic.x = 216;
193+
displayOptionsInfo.advanced_graphics.generic.y = 240 - PROP_HEIGHT;
194+
displayOptionsInfo.advanced_graphics.string = "ADVANCED GRAPHICS";
195+
displayOptionsInfo.advanced_graphics.style = UI_RIGHT;
196+
displayOptionsInfo.advanced_graphics.color = text_color_normal;
197+
180198
displayOptionsInfo.display.generic.type = MTYPE_PTEXT;
181199
displayOptionsInfo.display.generic.flags = QMF_RIGHT_JUSTIFY;
182200
displayOptionsInfo.display.generic.id = ID_DISPLAY;
183201
displayOptionsInfo.display.generic.callback = UI_DisplayOptionsMenu_Event;
184202
displayOptionsInfo.display.generic.x = 216;
185-
displayOptionsInfo.display.generic.y = 240 - PROP_HEIGHT;
203+
displayOptionsInfo.display.generic.y = 240;
186204
displayOptionsInfo.display.string = "DISPLAY";
187205
displayOptionsInfo.display.style = UI_RIGHT;
188206
// BAGPUSS
@@ -195,7 +213,7 @@ static void UI_DisplayOptionsMenu_Init( void ) {
195213
displayOptionsInfo.sound.generic.id = ID_SOUND;
196214
displayOptionsInfo.sound.generic.callback = UI_DisplayOptionsMenu_Event;
197215
displayOptionsInfo.sound.generic.x = 216;
198-
displayOptionsInfo.sound.generic.y = 240;
216+
displayOptionsInfo.sound.generic.y = 240 + PROP_HEIGHT;
199217
displayOptionsInfo.sound.string = "SOUND";
200218
displayOptionsInfo.sound.style = UI_RIGHT;
201219
// BAGPUSS
@@ -208,7 +226,7 @@ static void UI_DisplayOptionsMenu_Init( void ) {
208226
displayOptionsInfo.network.generic.id = ID_NETWORK;
209227
displayOptionsInfo.network.generic.callback = UI_DisplayOptionsMenu_Event;
210228
displayOptionsInfo.network.generic.x = 216;
211-
displayOptionsInfo.network.generic.y = 240 + PROP_HEIGHT;
229+
displayOptionsInfo.network.generic.y = 240 + 2 * PROP_HEIGHT;
212230
displayOptionsInfo.network.string = "NETWORK";
213231
displayOptionsInfo.network.style = UI_RIGHT;
214232
// BAGPUSS
@@ -273,6 +291,7 @@ static void UI_DisplayOptionsMenu_Init( void ) {
273291
*/
274292
// END
275293
Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.graphics );
294+
Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.advanced_graphics );
276295
Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.display );
277296
Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.sound );
278297
Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.network );

engine/code/q3_ui/ui_local.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -976,6 +976,12 @@ void UI_LoadConfigMenu( void );
976976
void UI_SaveConfigMenu_Cache( void );
977977
void UI_SaveConfigMenu( void );
978978

979+
//
980+
// ui_advanced_graphics.c
981+
//
982+
void UI_AdvancedGraphicsOptionsMenu_Cache( void );
983+
void UI_AdvancedGraphicsOptionsMenu( void );
984+
979985
//
980986
// ui_display.c
981987
//

0 commit comments

Comments
 (0)