#define COMPASS_SIZE		109
#define MINIMAP_X			11.5
#define MINIMAP_Y			5 
#define MINIMAP_W			89.5
#define	MINIMAP_H			89.5

#define COMPASS_SIZE_MP		125
#define MINIMAP_X_MP			0
#define MINIMAP_Y_MP			12
#define MINIMAP_W_MP			102
#define	MINIMAP_H_MP			102

#define FULLSCREEN			0 0 640 480
#define FULLSCREEN_WIDE		-107 0 854 480

#define ORIGIN_TITLE		48 40
#define ORIGIN_TITLE_SS		104 120

#define FONTSCALE_SMALL		0.3750 // 18
#define FONTSCALE_NORMAL	0.4583
#define FONTSCALE_BOLD		0.4583
#define FONTSCALE_BIG		0.5833
#define FONTSCALE_EXTRABIG	1.0000

#define TEXTSIZE_SMALL		FONTSCALE_SMALL
#define TEXTSIZE_SMALL_SS	(FONTSCALE_SMALL*2)
#define TEXTSIZE_DEFAULT	FONTSCALE_NORMAL
#define TEXTSIZE_DEFAULT_SS	(FONTSCALE_NORMAL*2)
#define TEXTSIZE_TITLE		FONTSCALE_BIG
#define TEXTSIZE_TITLE_SS	1


#define TEXTSIZE_BOLD		TEXTSIZE_DEFAULT
#define TEXTSIZE_BIG		TEXTSIZE_TITLE

#define COLOR_TITLE			1 0.8 0.4 1
#define COLOR_FOCUSED		1 1 1 1
#define COLOR_UNFOCUSED		0.4823 0.4823 0.4823 1
#define COLOR_DISABLED		0.35 0.35 0.35 1
#define COLOR_SAFEAREA		0 0 1 1

#define	BUTTON_A			1
#define	BUTTON_B			2
#define	BUTTON_X			3
#define	BUTTON_Y			4
#define	BUTTON_LSHLDR		5
#define	BUTTON_RSHLDR		6
#define	BUTTON_START		14
#define	BUTTON_BACK			15
#define	BUTTON_LSTICK		16
#define	BUTTON_RSTICK		17
#define	BUTTON_LTRIG		18
#define	BUTTON_RTRIG		19
#define	DPAD_UP				20
#define	DPAD_DOWN			21
#define	DPAD_LEFT			22
#define	DPAD_RIGHT			23
#define APAD_UP			28
#define APAD_DOWN		29
#define APAD_LEFT		30
#define APAD_RIGHT		31

#define	COLOR_USMC		0.6 0.64 0.69
#define COLOR_ARAB		0.65 0.57 0.41
#define COLOR_USSR		0.52 0.28 0.28
#define COLOR_SAS		0 0 0

#define DEFAULT_MP_CFG			"default_mp.cfg"
#define SPLITSCREEN_MP_CFG		"default_splitscreen.cfg"
#define SYSTEMLINK_MP_CFG		"default_systemlink.cfg"
#define XBOXLIVE_MP_CFG			"default_xboxlive.cfg"

#define MAX_RANK		int(tableLookup( "mp/rankTable.csv", 0, "maxrank", 1))
#define MAX_PRESTIGE	int(tableLookup( "mp/rankIconTable.csv", 0, "maxprestige", 1))

#define PRESTIGE_AVAIL (stat(2326) < MAX_PRESTIGE && stat(2301) == int(tableLookup("mp/rankTable.csv",0,MAX_RANK,7)))
#define PRESTIGE_NEXT (stat(2326) < MAX_PRESTIGE && stat(252) == MAX_RANK)
#define PRESTIGE_FINISH (stat(2326) == MAX_PRESTIGE)

#define CAN_RANK_UP	(stat(252) < MAX_RANK || stat(2326) < MAX_PRESTIGE)

#define ITEM_TYPE_TEXT				0		// simple text
#define ITEM_TYPE_BUTTON			1		// button, basically text with a border
#define ITEM_TYPE_RADIOBUTTON		2		// toggle button, may be grouped
#define ITEM_TYPE_CHECKBOX			3		// check box
#define ITEM_TYPE_EDITFIELD 		4		// editable text, associated with a dvar
#define ITEM_TYPE_COMBO 			5		// drop down list
#define ITEM_TYPE_LISTBOX			6		// scrollable list
#define ITEM_TYPE_MODEL 			7		// model
#define ITEM_TYPE_OWNERDRAW 		8		// owner draw, name specs what it is
#define ITEM_TYPE_NUMERICFIELD		9		// editable text, associated with a dvar
#define ITEM_TYPE_SLIDER			10		// mouse speed, volume, etc.
#define ITEM_TYPE_YESNO 			11		// yes no dvar setting
#define ITEM_TYPE_MULTI 			12		// multiple list setting, enumerated
#define ITEM_TYPE_DVARENUM 			13		// multiple list setting, enumerated from a dvar
#define ITEM_TYPE_BIND				14		// bind
#define ITEM_TYPE_MENUMODEL 		15		// special menu model
#define ITEM_TYPE_VALIDFILEFIELD	16		// text must be valid for use in a dos filename
#define ITEM_TYPE_DECIMALFIELD		17		// editable text, associated with a dvar, which allows decimal input
#define ITEM_TYPE_UPREDITFIELD		18		// editable text, associated with a dvar
#define ITEM_TYPE_GAME_MESSAGE_WINDOW 19	// game message window

#define ITEM_ALIGN_LEFT 			0		// aligns left of text to left of containing rectangle
#define ITEM_ALIGN_CENTER			1		// aligns center of text to center of containing rectangle
#define ITEM_ALIGN_RIGHT			2		// aligns right of text to right of containing rectangle
#define ITEM_ALIGN_X_MASK			3

#define ITEM_ALIGN_LEGACY 			0		// aligns bottom of text to top of containing rectangle
#define ITEM_ALIGN_TOP	 			4		// aligns top of text to top of containing rectangle
#define ITEM_ALIGN_MIDDLE			8		// aligns middle of text to middle of containing rectangle
#define ITEM_ALIGN_BOTTOM			12		// aligns bottom of text to bottom of containing rectangle
#define ITEM_ALIGN_Y_MASK			12

#define ITEM_ALIGN_LEGACY_LEFT		0
#define ITEM_ALIGN_LEGACY_CENTER	1
#define ITEM_ALIGN_LEGACY_RIGHT		2
#define ITEM_ALIGN_TOP_LEFT			4
#define ITEM_ALIGN_TOP_CENTER		5
#define ITEM_ALIGN_TOP_RIGHT		6
#define ITEM_ALIGN_MIDDLE_LEFT		8
#define ITEM_ALIGN_MIDDLE_CENTER	9
#define ITEM_ALIGN_MIDDLE_RIGHT		10
#define ITEM_ALIGN_BOTTOM_LEFT		12
#define ITEM_ALIGN_BOTTOM_CENTER	13
#define ITEM_ALIGN_BOTTOM_RIGHT		14

#define ITEM_TEXTSTYLE_NORMAL			0	// normal text
#define ITEM_TEXTSTYLE_BLINK			1	// fast blinking
#define ITEM_TEXTSTYLE_SHADOWED 		3	// drop shadow ( need a color for this )
#define ITEM_TEXTSTYLE_SHADOWEDMORE 	6	// drop shadow ( need a color for this )
#define ITEM_TEXTSTYLE_OUTLINED       	8	// outlined
#define ITEM_TEXTSTYLE_MONOSPACE		128

#define WINDOW_BORDER_NONE			0		// no border
#define WINDOW_BORDER_FULL			1		// full border based on border color ( single pixel )
#define WINDOW_BORDER_HORZ			2		// horizontal borders only
#define WINDOW_BORDER_VERT			3		// vertical borders only
#define WINDOW_BORDER_KCGRADIENT	4		// horizontal border using the gradient bars
#define WINDOW_BORDER_RAISED		5		// darken the bottom and right sides of the border
#define WINDOW_BORDER_SUNKEN		6		// darken the top and left sides of the border

#define WINDOW_STYLE_EMPTY				0	// no background
#define WINDOW_STYLE_FILLED 			1	// filled with background color
#define WINDOW_STYLE_GRADIENT			2	// gradient bar based on background color
#define WINDOW_STYLE_SHADER 			3	// shader based on background color
#define WINDOW_STYLE_TEAMCOLOR			4	// team color
#define WINDOW_STYLE_DVAR_SHADER		5	// draws the shader specified by the dvar
#define WINDOW_STYLE_LOADBAR 			6	// shader based on background color

#define MODE_BOTTOMUP_ALIGN_TOP		0 // text appears on bottom of list and moves up to specified Y coordinate as old text fades out
#define MODE_BOTTOMUP_ALIGN_BOTTOM	1 // text appears on bottom of list and moves away from specified Y coordinate as new text pushes it up
#define MODE_TOPDOWN_ALIGN_TOP		2 // text appears on top of list and moves away from specified Y coordinate as new text pushes it down
#define MODE_TOPDOWN_ALIGN_BOTTOM	3 // text appears on top of list and moves down to specified Y coordinate as old text fades out

#define MENU_TRUE			1
#define MENU_FALSE			0

#define HUD_VERTICAL			0x00
#define HUD_HORIZONTAL			0x01

#define RANGETYPE_ABSOLUTE		0
#define RANGETYPE_RELATIVE		1

// list box element types
#define LISTBOX_TEXT				0x00
#define LISTBOX_IMAGE				0x01

// list feeders
#define FEEDER_HEADS				0x00	// model heads
#define FEEDER_MAPS 				0x01	// text maps based on game type
#define FEEDER_SERVERS				0x02	// servers
#define FEEDER_CLAN_MEMBERS			0x03	// clan names
#define FEEDER_ALLMAPS				0x04	// all maps available, in graphic format
#define FEEDER_REDTEAM_LIST 		0x05	// red team members
#define FEEDER_BLUETEAM_LIST		0x06	// blue team members
#define FEEDER_PLAYER_LIST			0x07	// players
#define FEEDER_TEAM_LIST			0x08	// team members for team voting
#define FEEDER_MODS 				0x09	// team members for team voting
#define FEEDER_DEMOS				0x0a	// team members for team voting
#define FEEDER_SCOREBOARD			0x0b	// team members for team voting
#define FEEDER_Q3HEADS				0x0c	// model heads
#define FEEDER_SERVERSTATUS 		0x0d	// server status
#define FEEDER_FINDPLAYER			0x0e	// find player
#define FEEDER_CINEMATICS			0x0f	// cinematics
#define FEEDER_SAVEGAMES			0x10	// savegames
#define FEEDER_PICKSPAWN			0x11
#define FEEDER_LOBBY_MEMBERS		0x12	// list of players in your party
#define FEEDER_LOBBY_MEMBERS_TALK	0x13	// icon for whether they are speaking or not
#define FEEDER_MUTELIST				0x14	// list of musted players
#define FEEDER_PLAYERSTALKING		0x15	// list of players who are currently talking
#define FEEDER_SPLITSCREENPLAYERS	0x16	// list of all players who are playing splitscreen
#define FEEDER_LOBBY_MEMBERS_READY	0x17	// icon for whether they are ready or not
#define FEEDER_PLAYER_PROFILES		0x18	// player profiles
#define FEEDER_PARTY_MEMBERS		0x19	// list of players in your party
#define FEEDER_PARTY_MEMBERS_TALK	0x1a	// icon for whether they are speaking or not
#define FEEDER_PARTY_MEMBERS_READY	0x1b	// icon for whether they are ready or not
#define FEEDER_PLAYLISTS			0x1c	// list of all playlists
#define FEEDER_GAMEMODES			0x1d    // list of all game type modes, including any player custom modes
#define FEEDER_LEADERBOARD			0x1e	// list of rows for a leaderboard
#define FEEDER_MYTEAM_MEMBERS		0x20	// list of marine team members
#define FEEDER_MYTEAM_MEMBERS_TALK	0x21	// icon for whether they are speaking
#define FEEDER_ENEMY_MEMBERS		0x22	// list of opfor team members
#define FEEDER_ENEMY_MEMBERS_TALK	0x23	// icon for whether they are speaking
#define FEEDER_LOBBY_MEMBERS_STAT	0x24	// last round stats for lobby members
#define FEEDER_MYTEAM_MEMBERS_STAT	0x25	// last round stats for marine team members
#define FEEDER_ENEMY_MEMBERS_STAT	0x26	// last round stats for opfor team members
#define FEEDER_ONLINEFRIENDS			0x27	// list of your online friends
#define FEEDER_LOBBY_MEMBERS_RANK	0x28	// rank icon
#define FEEDER_PARTY_MEMBERS_RANK	0x29	// rank icon
#define FEEDER_ENEMY_MEMBERS_RANK	0x30	// rank icon
#define FEEDER_MYTEAM_MEMBERS_RANK  0x31	// rank icon

// display flags
#define CG_SHOW_BLUE_TEAM_HAS_REDFLAG		0x00000001
#define CG_SHOW_RED_TEAM_HAS_BLUEFLAG		0x00000002
#define CG_SHOW_ANYTEAMGAME					0x00000004
#define CG_SHOW_CTF 						0x00000020
#define CG_SHOW_OBELISK 					0x00000040
#define CG_SHOW_HEALTHCRITICAL				0x00000080
#define CG_SHOW_SINGLEPLAYER				0x00000100
#define CG_SHOW_TOURNAMENT					0x00000200
#define CG_SHOW_DURINGINCOMINGVOICE 		0x00000400
#define CG_SHOW_IF_PLAYER_HAS_FLAG			0x00000800
#define CG_SHOW_LANPLAYONLY 				0x00001000
#define CG_SHOW_MINED						0x00002000
#define CG_SHOW_HEALTHOK					0x00004000
#define CG_SHOW_TEAMINFO					0x00008000
#define CG_SHOW_NOTEAMINFO					0x00010000
#define CG_SHOW_OTHERTEAMHASFLAG			0x00020000
#define CG_SHOW_YOURTEAMHASENEMYFLAG		0x00040000
#define CG_SHOW_ANYNONTEAMGAME				0x00080000
#define CG_SHOW_TEXTASINT					0x00200000
#define CG_SHOW_HIGHLIGHTED					0x00100000

#define CG_SHOW_NOT_V_CLEAR					0x02000000

#define CG_SHOW_2DONLY						0x10000000


#define UI_SHOW_LEADER						0x00000001
#define UI_SHOW_NOTLEADER					0x00000002
#define UI_SHOW_FAVORITESERVERS 			0x00000004
#define UI_SHOW_ANYNONTEAMGAME				0x00000008
#define UI_SHOW_ANYTEAMGAME 				0x00000010
#define UI_SHOW_NEWHIGHSCORE				0x00000020
#define UI_SHOW_DEMOAVAILABLE				0x00000040
#define UI_SHOW_NEWBESTTIME 				0x00000080
#define UI_SHOW_FFA				 			0x00000100
#define UI_SHOW_NOTFFA						0x00000200
#define UI_SHOW_NETANYNONTEAMGAME			0x00000400
#define UI_SHOW_NETANYTEAMGAME				0x00000800
#define UI_SHOW_NOTFAVORITESERVERS			0x00001000

// font types
#define UI_FONT_DEFAULT			0	// auto-chose betwen big/reg/small
#define UI_FONT_NORMAL			1
#define UI_FONT_BIG				2
#define UI_FONT_SMALL			3
#define UI_FONT_BOLD			4
#define UI_FONT_CONSOLE			5
#define UI_FONT_OBJECTIVE		6

#define UI_FONT_LARGE		    9

// owner draw types
// ideally these should be done outside of this file but
// this makes it much easier for the macro expansion to
// convert them for the designers ( from the .menu files )
#define CG_OWNERDRAW_BASE			1
#define CG_PLAYER_AMMO_VALUE		5
#define CG_PLAYER_AMMO_BACKDROP		6

#define CG_PLAYER_STANCE			20

#define CG_SPECTATORS				60

#define CG_HOLD_BREATH_HINT			71
#define CG_CURSORHINT				72
#define CG_PLAYER_POWERUP			73
#define CG_PLAYER_HOLDABLE			74
#define CG_PLAYER_INVENTORY			75
#define CG_CURSORHINT_STATUS		78	// like 'health' bar when pointing at a func_explosive

#define CG_PLAYER_BAR_HEALTH		79
#define CG_MANTLE_HINT				80

#define CG_PLAYER_WEAPON_NAME		81
#define CG_PLAYER_WEAPON_NAME_BACK	82

#define CG_CENTER_MESSAGE			90	// for things like "You were killed by ..."

#define CG_TANK_BODY_DIR			95
#define CG_TANK_BARREL_DIR			96

#define CG_DEADQUOTE				97

#define CG_PLAYER_BAR_HEALTH_BACK	98

#define CG_MISSION_OBJECTIVE_HEADER		99
#define CG_MISSION_OBJECTIVE_LIST		100
#define CG_MISSION_OBJECTIVE_BACKDROP	101
#define CG_PAUSED_MENU_LINE				102

#define CG_OFFHAND_WEAPON_ICON_FRAG			103
#define CG_OFFHAND_WEAPON_ICON_SMOKEFLASH	104
#define CG_OFFHAND_WEAPON_AMMO_FRAG			105
#define CG_OFFHAND_WEAPON_AMMO_SMOKEFLASH	106
#define CG_OFFHAND_WEAPON_NAME_FRAG			107
#define CG_OFFHAND_WEAPON_NAME_SMOKEFLASH	108
#define CG_OFFHAND_WEAPON_SELECT_FRAG		109
#define CG_OFFHAND_WEAPON_SELECT_SMOKEFLASH	110
#define CG_SAVING							111
#define	CG_PLAYER_LOW_HEALTH_OVERLAY		112

#define CG_INVALID_CMD_HINT				113
#define CG_PLAYER_SPRINT_METER			114
#define CG_PLAYER_SPRINT_BACK			115

#define CG_PLAYER_WEAPON_BACKGROUND			116
#define CG_PLAYER_WEAPON_AMMO_CLIP_GRAPHIC	117
#define CG_PLAYER_WEAPON_PRIMARY_ICON		118
#define CG_PLAYER_WEAPON_AMMO_STOCK			119
#define CG_PLAYER_WEAPON_LOW_AMMO_WARNING	120

#define CG_PLAYER_COMPASS_TICKERTAPE		145
#define CG_PLAYER_COMPASS_TICKERTAPE_NO_OBJ	146

#define CG_PLAYER_COMPASS_PLAYER		150
#define CG_PLAYER_COMPASS_BACK			151
#define CG_PLAYER_COMPASS_POINTERS		152
#define CG_PLAYER_COMPASS_ACTORS		153
#define CG_PLAYER_COMPASS_TANKS			154
#define CG_PLAYER_COMPASS_HELICOPTERS	155
#define CG_PLAYER_COMPASS_PLANES		156
#define CG_PLAYER_COMPASS_AUTOMOBILES	157
#define CG_PLAYER_COMPASS_FRIENDS		158
#define CG_PLAYER_COMPASS_MAP			159
#define CG_PLAYER_COMPASS_NORTHCOORD	160
#define CG_PLAYER_COMPASS_EASTCOORD		161
#define CG_PLAYER_COMPASS_NCOORD_SCROLL	162
#define CG_PLAYER_COMPASS_ECOORD_SCROLL	163
#define CG_PLAYER_COMPASS_GOALDISTANCE	164

#define CG_PLAYER_ACTIONSLOT_DPAD		165
#define CG_PLAYER_ACTIONSLOT_1			166
#define CG_PLAYER_ACTIONSLOT_2			167
#define CG_PLAYER_ACTIONSLOT_3			168
#define CG_PLAYER_ACTIONSLOT_4			169
#define CG_PLAYER_COMPASS_ENEMIES		170

#define CG_PLAYER_FULLMAP_BACK			180
#define CG_PLAYER_FULLMAP_MAP			181
#define CG_PLAYER_FULLMAP_POINTERS		182
#define CG_PLAYER_FULLMAP_PLAYER		183
#define CG_PLAYER_FULLMAP_ACTORS		184
#define CG_PLAYER_FULLMAP_FRIENDS		185
#define CG_PLAYER_FULLMAP_LOCATION_SELECTOR 186
#define CG_PLAYER_FULLMAP_BORDER		187
#define CG_PLAYER_FULLMAP_ENEMIES		188

#define CG_VEHICLE_RETICLE			190
#define CG_HUD_TARGETS_VEHICLE		191
#define CG_HUD_TARGETS_JAVELIN		192

#define CG_TALKER1					193
#define CG_TALKER2					194
#define CG_TALKER3					195
#define CG_TALKER4					196

#define UI_OWNERDRAW_BASE			200
#define UI_HANDICAP 				200
#define UI_EFFECTS					201
#define UI_PLAYERMODEL				202
#define UI_GAMETYPE 				205
#define UI_SKILL					207
#define UI_NETSOURCE				220
#define UI_NETFILTER				222
#define UI_VOTE_KICK				238
#define UI_NETGAMETYPE				245
#define UI_SERVERREFRESHDATE		247
#define UI_SERVERMOTD				248
#define UI_GLINFO					249
#define UI_KEYBINDSTATUS			250
#define UI_JOINGAMETYPE 			253
#define UI_MAPPREVIEW				254
#define UI_MENUMODEL				257
#define	UI_SAVEGAME_SHOT			258
#define UI_SAVEGAMENAME				262
#define UI_SAVEGAMEINFO				263
#define UI_LOADPROFILING			264
#define UI_RECORDLEVEL				265
#define UI_AMITALKING				266
#define UI_TALKER1					267
#define UI_TALKER2					268
#define UI_TALKER3					269
#define UI_TALKER4					270
#define UI_PARTYSTATUS				271
#define UI_LOGGEDINUSER				272
#define UI_RESERVEDSLOTS			273
#define UI_PLAYLISTNAME				274
#define UI_PLAYLISTDESCRIPTION			275
#define UI_USERNAME					276
#define UI_CINEMATIC				277

// Edge relative placement values for rect->h_align and rect->v_align
#define HORIZONTAL_ALIGN_SUBLEFT		0	// left edge of a 4:3 screen (safe area not included)
#define HORIZONTAL_ALIGN_LEFT			1	// left viewable (safe area) edge
#define HORIZONTAL_ALIGN_CENTER			2	// center of the screen (reticle)
#define HORIZONTAL_ALIGN_RIGHT			3	// right viewable (safe area) edge
#define HORIZONTAL_ALIGN_FULLSCREEN		4	// disregards safe area
#define HORIZONTAL_ALIGN_NOSCALE		5	// uses exact parameters - neither adjusts for safe area nor scales for screen size
#define HORIZONTAL_ALIGN_TO640			6	// scales a real-screen resolution x down into the 0 - 640 range
#define HORIZONTAL_ALIGN_CENTER_SAFEAREA 7	// center of the safearea
#define HORIZONTAL_ALIGN_MAX			HORIZONTAL_ALIGN_CENTER_SAFEAREA
#define HORIZONTAL_ALIGN_DEFAULT		HORIZONTAL_ALIGN_SUBLEFT

#define VERTICAL_ALIGN_SUBTOP			0	// top edge of the 4:3 screen (safe area not included)
#define VERTICAL_ALIGN_TOP				1	// top viewable (safe area) edge
#define VERTICAL_ALIGN_CENTER			2	// center of the screen (reticle)
#define VERTICAL_ALIGN_BOTTOM			3	// bottom viewable (safe area) edge
#define VERTICAL_ALIGN_FULLSCREEN		4	// disregards safe area
#define VERTICAL_ALIGN_NOSCALE			5	// uses exact parameters - neither adjusts for safe area nor scales for screen size
#define VERTICAL_ALIGN_TO480			6	// scales a real-screen resolution y down into the 0 - 480 range
#define VERTICAL_ALIGN_CENTER_SAFEAREA	7	// center of the save area
#define VERTICAL_ALIGN_MAX				VERTICAL_ALIGN_CENTER_SAFEAREA
#define VERTICAL_ALIGN_DEFAULT			VERTICAL_ALIGN_SUBTOP
