1 /*
2 ===========================================================================
3 Copyright (C) 2000 - 2013, Raven Software, Inc.
4 Copyright (C) 2001 - 2013, Activision, Inc.
5 Copyright (C) 2013 - 2015, OpenJK contributors
6 
7 This file is part of the OpenJK source code.
8 
9 OpenJK is free software; you can redistribute it and/or modify it
10 under the terms of the GNU General Public License version 2 as
11 published by the Free Software Foundation.
12 
13 This program is distributed in the hope that it will be useful,
14 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 this program; if not, see <http://www.gnu.org/licenses/>.
20 ===========================================================================
21 */
22 
23 // this file is parsed at runtime by botlib's text preprocessor (used for .menu scripting)
24 // include guards aren't necessary
25 
26 #define CT_LTBLUE1	0.367	0.261	0.722
27 #define CT_DKBLUE1	0.199	0.0		0.398
28 
29 #define CT_LTCYAN	0		0.5		0.5
30 #define CT_DKCYAN	0		0.25	0.25
31 
32 #define ITEM_TYPE_TEXT			0		// simple text
33 #define ITEM_TYPE_BUTTON		1		// button, basically text with a border
34 #define ITEM_TYPE_RADIOBUTTON	2		// toggle button, may be grouped
35 #define ITEM_TYPE_CHECKBOX		3		// check box
36 #define ITEM_TYPE_EDITFIELD		4		// editable text, associated with a cvar
37 #define ITEM_TYPE_COMBO			5		// drop down list
38 #define ITEM_TYPE_LISTBOX		6		// scrollable list
39 #define ITEM_TYPE_MODEL			7		// model
40 #define ITEM_TYPE_OWNERDRAW		8		// owner draw, name specs what it is
41 #define ITEM_TYPE_NUMERICFIELD	9		// editable text, associated with a cvar
42 #define ITEM_TYPE_SLIDER		10		// mouse speed, volume, etc.
43 #define ITEM_TYPE_YESNO			11		// yes no cvar setting
44 #define ITEM_TYPE_MULTI			12		// multiple list setting, enumerated
45 #define ITEM_TYPE_BIND			13		// multiple list setting, enumerated
46 #define ITEM_TYPE_TEXTSCROLL	14		// scrolls text
47 #define ITEM_TYPE_INTSLIDER		15		// mouse speed, volume, etc.
48 
49 #define ITEM_ALIGN_LEFT 0                 // left alignment
50 #define ITEM_ALIGN_CENTER 1               // center alignment
51 #define ITEM_ALIGN_RIGHT 2                // right alignment
52 
53 #define ITEM_TEXTSTYLE_NORMAL 0           // normal text
54 #define ITEM_TEXTSTYLE_BLINK 1            // fast blinking
55 #define ITEM_TEXTSTYLE_PULSE 2            // slow pulsing
56 #define ITEM_TEXTSTYLE_SHADOWED 3         // drop shadow ( need a color for this )
57 #define ITEM_TEXTSTYLE_OUTLINED 4         // drop shadow ( need a color for this )
58 #define ITEM_TEXTSTYLE_OUTLINESHADOWED 5  // drop shadow ( need a color for this )
59 #define ITEM_TEXTSTYLE_SHADOWEDMORE 6         // drop shadow ( need a color for this )
60 
61 #define WINDOW_BORDER_NONE 0              // no border
62 #define WINDOW_BORDER_FULL 1              // full border based on border color ( single pixel )
63 #define WINDOW_BORDER_HORZ 2              // horizontal borders only
64 #define WINDOW_BORDER_VERT 3              // vertical borders only
65 #define WINDOW_BORDER_KCGRADIENT 4        // horizontal border using the gradient bars
66 
67 #define WINDOW_STYLE_EMPTY 0              // no background
68 #define WINDOW_STYLE_FILLED 1             // filled with background color
69 #define WINDOW_STYLE_GRADIENT 2           // gradient bar based on background color
70 #define WINDOW_STYLE_SHADER   3           // gradient bar based on background color
71 #define WINDOW_STYLE_TEAMCOLOR 4          // team color
72 #define WINDOW_STYLE_CINEMATIC 5          // cinematic
73 
74 #define MENU_TRUE 1                       // uh.. true
75 #define MENU_FALSE 0                      // and false
76 
77 #define HUD_VERTICAL				0x00
78 #define HUD_HORIZONTAL				0x01
79 
80 // list box element types
81 #define LISTBOX_TEXT  0x00
82 #define LISTBOX_IMAGE 0x01
83 
84 // list feeders
85 #define FEEDER_MAPS							0x01			// text maps based on game type
86 #define FEEDER_SERVERS						0x02			// servers
87 #define FEEDER_ALLMAPS						0x04			// all maps available, in graphic format
88 #define FEEDER_REDTEAM_LIST					0x05			// red team members
89 #define FEEDER_BLUETEAM_LIST				0x06			// blue team members
90 #define FEEDER_PLAYER_LIST					0x07			// players
91 #define FEEDER_TEAM_LIST					0x08			// team members for team voting
92 #define FEEDER_MODS							0x09			// team members for team voting
93 #define FEEDER_DEMOS 						0x0a			// team members for team voting
94 #define FEEDER_SCOREBOARD					0x0b			// team members for team voting
95 #define FEEDER_Q3HEADS		 				0x0c			// model heads
96 #define FEEDER_SERVERSTATUS					0x0d			// server status
97 #define FEEDER_FINDPLAYER					0x0e			// find player
98 #define FEEDER_CINEMATICS					0x0f			// cinematics
99 
100 #define FEEDER_FORCECFG						0x10			// force config list
101 
102 #define FEEDER_SIEGE_TEAM1					0x11			// siege class list for team1
103 #define FEEDER_SIEGE_TEAM2					0x12			// siege class list for team2
104 
105 #define FEEDER_PLAYER_SPECIES				0x13			// models/player/*
106 #define FEEDER_PLAYER_SKIN_HEAD				0x14			// head*.skin files in species folder
107 #define FEEDER_PLAYER_SKIN_TORSO			0x15			// torso*.skin files in species folder
108 #define FEEDER_PLAYER_SKIN_LEGS				0x16			// lower*.skin files in species folder
109 #define FEEDER_COLORCHOICES					0x17			// special hack to feed text/actions from playerchoice.txt in species folder
110 
111 #define FEEDER_TEAM1_INFANTRY				0x18			// for siege team choice
112 #define FEEDER_TEAM1_VANGUARD				0x19			// for siege team choice
113 #define FEEDER_TEAM1_SUPPORT				0x1a			// for siege team choice
114 #define FEEDER_TEAM1_JEDI					0x1b			// for siege team choice
115 #define FEEDER_TEAM1_DEMO					0x1c			// for siege team choice
116 #define FEEDER_TEAM1_HEAVY					0x1d			// for siege team choice
117 
118 #define FEEDER_TEAM2_INFANTRY				0x1e			// for siege team choice
119 #define FEEDER_TEAM2_VANGUARD				0x1f			// for siege team choice
120 #define FEEDER_TEAM2_SUPPORT				0x20			// for siege team choice
121 #define FEEDER_TEAM2_JEDI					0x21			// for siege team choice
122 #define FEEDER_TEAM2_DEMO					0x22			// for siege team choice
123 #define FEEDER_TEAM2_HEAVY					0x23			// for siege team choice
124 
125 #define FEEDER_SIEGE_BASE_CLASS				0x24			// for siege team choice
126 #define FEEDER_SIEGE_CLASS_WEAPONS			0x25			// for siege team choice
127 #define FEEDER_SIEGE_CLASS_INVENTORY		0x26			// for siege team choice
128 #define FEEDER_SIEGE_CLASS_FORCE			0x27			// for siege team choice
129 #define FEEDER_LANGUAGES					0x28			// for language choice
130 #define FEEDER_MOVES						0x29			// moves for the data pad moves screen
131 #define FEEDER_MOVES_TITLES					0x2a			// move titles for the data pad moves screen
132 #define FEEDER_SABER_SINGLE_INFO			0x2b			// saber single
133 #define FEEDER_SABER_STAFF_INFO				0x2c			// saber staff
134 
135 
136 // Xbox specific, hope no one minds
137 #define FEEDER_XBL_ACCOUNTS					0xA0			// list of available XBL accounts
138 #define FEEDER_XBL_PLAYERS					0xA1			// players (current and recent)
139 #define FEEDER_XBL_FRIENDS					0xA2			// friends
140 #define FEEDER_XBL_SERVERS					0xA3			// results of an optimatch query
141 
142 // display flags
143 #define CG_SHOW_BLUE_TEAM_HAS_REDFLAG     0x00000001
144 #define CG_SHOW_RED_TEAM_HAS_BLUEFLAG     0x00000002
145 #define CG_SHOW_ANYTEAMGAME               0x00000004
146 #define CG_SHOW_HARVESTER                 0x00000008
147 #define CG_SHOW_ONEFLAG                   0x00000010
148 #define CG_SHOW_CTF                       0x00000020
149 #define CG_SHOW_OBELISK                   0x00000040
150 #define CG_SHOW_HEALTHCRITICAL            0x00000080
151 #define CG_SHOW_SINGLEPLAYER              0x00000100
152 #define CG_SHOW_TOURNAMENT                0x00000200
153 #define CG_SHOW_DURINGINCOMINGVOICE       0x00000400
154 #define CG_SHOW_IF_PLAYER_HAS_FLAG				0x00000800
155 #define CG_SHOW_LANPLAYONLY								0x00001000
156 #define CG_SHOW_MINED											0x00002000
157 #define CG_SHOW_HEALTHOK			            0x00004000
158 #define CG_SHOW_TEAMINFO			            0x00008000
159 #define CG_SHOW_NOTEAMINFO		            0x00010000
160 #define CG_SHOW_OTHERTEAMHASFLAG          0x00020000
161 #define CG_SHOW_YOURTEAMHASENEMYFLAG      0x00040000
162 #define CG_SHOW_ANYNONTEAMGAME            0x00080000
163 #define CG_SHOW_2DONLY										0x10000000
164 
165 
166 #define UI_SHOW_LEADER				            0x00000001
167 #define UI_SHOW_NOTLEADER			            0x00000002
168 #define UI_SHOW_FAVORITESERVERS						0x00000004
169 #define UI_SHOW_ANYNONTEAMGAME						0x00000008
170 #define UI_SHOW_ANYTEAMGAME								0x00000010
171 #define UI_SHOW_NEWHIGHSCORE							0x00000020
172 #define UI_SHOW_DEMOAVAILABLE							0x00000040
173 #define UI_SHOW_NEWBESTTIME								0x00000080
174 #define UI_SHOW_FFA												0x00000100
175 #define UI_SHOW_NOTFFA										0x00000200
176 #define UI_SHOW_NETANYNONTEAMGAME	 				0x00000400
177 #define UI_SHOW_NETANYTEAMGAME		 				0x00000800
178 #define UI_SHOW_NOTFAVORITESERVERS				0x00001000
179 
180 
181 
182 
183 // owner draw types
184 // ideally these should be done outside of this file but
185 // this makes it much easier for the macro expansion to
186 // convert them for the designers ( from the .menu files )
187 #define CG_OWNERDRAW_BASE 1
188 #define CG_PLAYER_ARMOR_ICON 1
189 #define CG_PLAYER_ARMOR_VALUE 2
190 #define CG_PLAYER_HEAD 3
191 #define CG_PLAYER_HEALTH 4
192 #define CG_PLAYER_AMMO_ICON 5
193 #define CG_PLAYER_AMMO_VALUE 6
194 #define CG_SELECTEDPLAYER_HEAD 7
195 #define CG_SELECTEDPLAYER_NAME 8
196 #define CG_SELECTEDPLAYER_LOCATION 9
197 #define CG_SELECTEDPLAYER_STATUS 10
198 #define CG_SELECTEDPLAYER_WEAPON 11
199 #define CG_SELECTEDPLAYER_POWERUP 12
200 
201 #define CG_FLAGCARRIER_HEAD 13
202 #define CG_FLAGCARRIER_NAME 14
203 #define CG_FLAGCARRIER_LOCATION 15
204 #define CG_FLAGCARRIER_STATUS 16
205 #define CG_FLAGCARRIER_WEAPON 17
206 #define CG_FLAGCARRIER_POWERUP 18
207 
208 #define CG_PLAYER_ITEM 19
209 #define CG_PLAYER_SCORE 20
210 
211 #define CG_BLUE_FLAGHEAD 21
212 #define CG_BLUE_FLAGSTATUS 22
213 #define CG_BLUE_FLAGNAME 23
214 #define CG_RED_FLAGHEAD 24
215 #define CG_RED_FLAGSTATUS 25
216 #define CG_RED_FLAGNAME 26
217 
218 #define CG_BLUE_SCORE 27
219 #define CG_RED_SCORE 28
220 #define CG_RED_NAME 29
221 #define CG_BLUE_NAME 30
222 #define CG_HARVESTER_SKULLS 31					// only shows in harvester
223 #define CG_ONEFLAG_STATUS 32						// only shows in one flag
224 #define CG_PLAYER_LOCATION 33
225 #define CG_TEAM_COLOR 34
226 #define CG_CTF_POWERUP 35
227 
228 #define CG_AREA_POWERUP	36
229 #define CG_AREA_LAGOMETER	37            // painted with old system
230 #define CG_PLAYER_HASFLAG 38
231 #define CG_GAME_TYPE 39                 // not done
232 
233 #define CG_SELECTEDPLAYER_ARMOR 40
234 #define CG_SELECTEDPLAYER_HEALTH 41
235 #define CG_PLAYER_STATUS 42
236 #define CG_FRAGGED_MSG 43               // painted with old system
237 #define CG_PROXMINED_MSG 44             // painted with old system
238 #define CG_AREA_FPSINFO 45              // painted with old system
239 #define CG_AREA_SYSTEMCHAT 46           // painted with old system
240 #define CG_AREA_TEAMCHAT 47             // painted with old system
241 #define CG_AREA_CHAT 48                 // painted with old system
242 #define CG_GAME_STATUS 49
243 #define CG_KILLER 50
244 #define CG_PLAYER_ARMOR_ICON2D 51
245 #define CG_PLAYER_AMMO_ICON2D 52
246 #define CG_ACCURACY 53
247 #define CG_ASSISTS 54
248 #define CG_DEFEND 55
249 #define CG_EXCELLENT 56
250 #define CG_IMPRESSIVE 57
251 #define CG_PERFECT 58
252 #define CG_GAUNTLET 59
253 #define CG_SPECTATORS 60
254 #define CG_TEAMINFO 61
255 #define CG_VOICE_HEAD 62
256 #define CG_VOICE_NAME 63
257 #define CG_PLAYER_HASFLAG2D 64
258 #define CG_HARVESTER_SKULLS2D 65					// only shows in harvester
259 #define CG_CAPFRAGLIMIT 66
260 #define CG_1STPLACE 67
261 #define CG_2NDPLACE 68
262 #define CG_CAPTURES 69
263 #define CG_PLAYER_FORCE_VALUE 70
264 
265 
266 
267 
268 #define UI_OWNERDRAW_BASE 200
269 #define UI_HANDICAP 200
270 #define UI_EFFECTS 201
271 #define UI_PLAYERMODEL 202
272 #define UI_CLANNAME 203
273 #define UI_CLANLOGO 204
274 #define UI_GAMETYPE 205
275 #define UI_MAPPREVIEW 206
276 #define UI_SKILL 207
277 #define UI_BLUETEAMNAME 208
278 #define UI_REDTEAMNAME 209
279 #define UI_BLUETEAM1 210
280 #define UI_BLUETEAM2 211
281 #define UI_BLUETEAM3 212
282 #define UI_BLUETEAM4 213
283 #define UI_BLUETEAM5 214
284 #define UI_REDTEAM1 215
285 #define UI_REDTEAM2 216
286 #define UI_REDTEAM3 217
287 #define UI_REDTEAM4 218
288 #define UI_REDTEAM5 219
289 #define UI_NETSOURCE 220
290 #define UI_NETMAPPREVIEW 221
291 #define UI_NETFILTER 222
292 #define UI_TIER 223
293 #define UI_OPPONENTMODEL 224
294 #define UI_TIERMAP1 225
295 #define UI_TIERMAP2 226
296 #define UI_TIERMAP3 227
297 #define UI_PLAYERLOGO 228
298 #define UI_OPPONENTLOGO 229
299 #define UI_PLAYERLOGO_METAL 230
300 #define UI_OPPONENTLOGO_METAL 231
301 #define UI_PLAYERLOGO_NAME 232
302 #define UI_OPPONENTLOGO_NAME 233
303 #define UI_TIER_MAPNAME 234
304 #define UI_TIER_GAMETYPE 235
305 #define UI_ALLMAPS_SELECTION 236
306 #define UI_OPPONENT_NAME 237
307 #define UI_VOTE_KICK 238
308 #define UI_BOTNAME 239
309 #define UI_BOTSKILL 240
310 #define UI_REDBLUE 241
311 #define UI_CROSSHAIR 242
312 #define UI_SELECTEDPLAYER 243
313 #define UI_MAPCINEMATIC 244
314 #define UI_NETGAMETYPE 245
315 #define UI_NETMAPCINEMATIC 246
316 #define UI_SERVERREFRESHDATE 247
317 #define UI_SERVERMOTD 248
318 #define UI_GLINFO  249
319 #define UI_KEYBINDSTATUS 250
320 #define UI_CLANCINEMATIC 251
321 #define UI_MAP_TIMETOBEAT 252
322 #define UI_JOINGAMETYPE 253
323 #define UI_PREVIEWCINEMATIC 254
324 #define UI_STARTMAPCINEMATIC 255
325 #define UI_MAPS_SELECTION 256
326 #define UI_FORCE_SIDE 257
327 #define UI_FORCE_RANK 258
328 #define UI_FORCE_RANK_HEAL 259
329 #define UI_FORCE_RANK_LEVITATION 260
330 #define UI_FORCE_RANK_SPEED 261
331 #define UI_FORCE_RANK_PUSH 262
332 #define UI_FORCE_RANK_PULL 263
333 #define UI_FORCE_RANK_TELEPATHY 264
334 #define UI_FORCE_RANK_GRIP 265
335 #define UI_FORCE_RANK_LIGHTNING 266
336 #define UI_FORCE_RANK_RAGE 267
337 #define UI_FORCE_RANK_PROTECT 268
338 #define UI_FORCE_RANK_ABSORB 269
339 #define UI_FORCE_RANK_TEAM_HEAL 270
340 #define UI_FORCE_RANK_TEAM_FORCE	271
341 #define UI_FORCE_RANK_DRAIN			272
342 #define UI_FORCE_RANK_SEE			273
343 #define UI_FORCE_RANK_SABERATTACK	274
344 #define UI_FORCE_RANK_SABERDEFEND	275
345 #define UI_FORCE_RANK_SABERTHROW	276
346 #define UI_VERSION					277
347 #define UI_TOTALFORCESTARS			278
348 #define UI_AUTOSWITCHLIST			279
349 
350 //How handy it would be if this were an enum.
351 #define UI_BLUETEAM6 280
352 #define UI_BLUETEAM7 281
353 #define UI_BLUETEAM8 282
354 #define UI_REDTEAM6 283
355 #define UI_REDTEAM7 284
356 #define UI_REDTEAM8 285
357 
358 // Yes it would be handy
359 #define UI_FORCE_MASTERY_SET 286
360 #define UI_SKIN_COLOR 287
361 #define UI_FORCE_POINTS 288
362 
363 //extra, for patch
364 #define UI_JEDI_NONJEDI 289
365 
366 #define UI_CHAT_MAIN		291
367 #define UI_CHAT_ATTACK		292
368 #define UI_CHAT_DEFEND		293
369 #define UI_CHAT_REQUEST		294
370 #define UI_CHAT_REPLY		295
371 #define UI_CHAT_SPOT		296
372 #define UI_CHAT_TACTICAL	297
373 
374 #define VOICECHAT_GETFLAG			"getflag"				// command someone to get the flag
375 #define VOICECHAT_OFFENSE			"offense"				// command someone to go on offense
376 #define VOICECHAT_DEFEND			"defend"				// command someone to go on defense
377 #define VOICECHAT_DEFENDFLAG		"defendflag"			// command someone to defend the flag
378 #define VOICECHAT_PATROL			"patrol"				// command someone to go on patrol (roam)
379 #define VOICECHAT_CAMP				"camp"					// command someone to camp (we don't have sounds for this one)
380 #define VOICECHAT_FOLLOWME			"followme"				// command someone to follow you
381 #define VOICECHAT_RETURNFLAG		"returnflag"			// command someone to return our flag
382 #define VOICECHAT_FOLLOWFLAGCARRIER	"followflagcarrier"		// command someone to follow the flag carrier
383 #define VOICECHAT_YES				"yes"					// yes, affirmative, etc.
384 #define VOICECHAT_NO				"no"					// no, negative, etc.
385 #define VOICECHAT_ONGETFLAG			"ongetflag"				// I'm getting the flag
386 #define VOICECHAT_ONOFFENSE			"onoffense"				// I'm on offense
387 #define VOICECHAT_ONDEFENSE			"ondefense"				// I'm on defense
388 #define VOICECHAT_ONPATROL			"onpatrol"				// I'm on patrol (roaming)
389 #define VOICECHAT_ONCAMPING			"oncamp"				// I'm camping somewhere
390 #define VOICECHAT_ONFOLLOW			"onfollow"				// I'm following
391 #define VOICECHAT_ONFOLLOWCARRIER	"onfollowcarrier"		// I'm following the flag carrier
392 #define VOICECHAT_ONRETURNFLAG		"onreturnflag"			// I'm returning our flag
393 #define VOICECHAT_INPOSITION		"inposition"			// I'm in position
394 #define VOICECHAT_IHAVEFLAG			"ihaveflag"				// I have the flag
395 #define VOICECHAT_BASEATTACK		"baseattack"			// the base is under attack
396 #define VOICECHAT_ENEMYHASFLAG		"enemyhasflag"			// the enemy has our flag (CTF)
397 #define VOICECHAT_STARTLEADER		"startleader"			// I'm the leader
398 #define VOICECHAT_STOPLEADER		"stopleader"			// I resign leadership
399 #define VOICECHAT_TRASH				"trash"					// lots of trash talk
400 #define VOICECHAT_WHOISLEADER		"whoisleader"			// who is the team leader
401 #define VOICECHAT_WANTONDEFENSE		"wantondefense"			// I want to be on defense
402 #define VOICECHAT_WANTONOFFENSE		"wantonoffense"			// I want to be on offense
403 #define VOICECHAT_KILLINSULT		"kill_insult"			// I just killed you
404 #define VOICECHAT_TAUNT				"taunt"					// I want to taunt you
405 #define VOICECHAT_DEATHINSULT		"death_insult"			// you just killed me
406 #define VOICECHAT_KILLGAUNTLET		"kill_gauntlet"			// I just killed you with the gauntlet
407 #define VOICECHAT_PRAISE			"praise"				// you did something good
408