Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

ui_main.c (6967B)


      1 /*
      2 ===========================================================================
      3 Copyright (C) 1999-2005 Id Software, Inc.
      4 
      5 This file is part of Quake III Arena source code.
      6 
      7 Quake III Arena source code is free software; you can redistribute it
      8 and/or modify it under the terms of the GNU General Public License as
      9 published by the Free Software Foundation; either version 2 of the License,
     10 or (at your option) any later version.
     11 
     12 Quake III Arena source code is distributed in the hope that it will be
     13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 GNU General Public License for more details.
     16 
     17 You should have received a copy of the GNU General Public License
     18 along with Foobar; if not, write to the Free Software
     19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     20 ===========================================================================
     21 */
     22 //
     23 /*
     24 =======================================================================
     25 
     26 USER INTERFACE MAIN
     27 
     28 =======================================================================
     29 */
     30 
     31 
     32 #include "ui_local.h"
     33 
     34 
     35 /*
     36 ================
     37 vmMain
     38 
     39 This is the only way control passes into the module.
     40 This must be the very first function compiled into the .qvm file
     41 ================
     42 */
     43 int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11  ) {
     44 	switch ( command ) {
     45 	case UI_GETAPIVERSION:
     46 		return UI_API_VERSION;
     47 
     48 	case UI_INIT:
     49 		UI_Init();
     50 		return 0;
     51 
     52 	case UI_SHUTDOWN:
     53 		UI_Shutdown();
     54 		return 0;
     55 
     56 	case UI_KEY_EVENT:
     57 		UI_KeyEvent( arg0, arg1 );
     58 		return 0;
     59 
     60 	case UI_MOUSE_EVENT:
     61 		UI_MouseEvent( arg0, arg1 );
     62 		return 0;
     63 
     64 	case UI_REFRESH:
     65 		UI_Refresh( arg0 );
     66 		return 0;
     67 
     68 	case UI_IS_FULLSCREEN:
     69 		return UI_IsFullscreen();
     70 
     71 	case UI_SET_ACTIVE_MENU:
     72 		UI_SetActiveMenu( arg0 );
     73 		return 0;
     74 
     75 	case UI_CONSOLE_COMMAND:
     76 		return UI_ConsoleCommand(arg0);
     77 
     78 	case UI_DRAW_CONNECT_SCREEN:
     79 		UI_DrawConnectScreen( arg0 );
     80 		return 0;
     81 	case UI_HASUNIQUECDKEY:				// mod authors need to observe this
     82 		return qtrue;  // bk010117 - change this to qfalse for mods!
     83 	}
     84 
     85 	return -1;
     86 }
     87 
     88 
     89 /*
     90 ================
     91 cvars
     92 ================
     93 */
     94 
     95 typedef struct {
     96 	vmCvar_t	*vmCvar;
     97 	char		*cvarName;
     98 	char		*defaultString;
     99 	int			cvarFlags;
    100 } cvarTable_t;
    101 
    102 vmCvar_t	ui_ffa_fraglimit;
    103 vmCvar_t	ui_ffa_timelimit;
    104 
    105 vmCvar_t	ui_tourney_fraglimit;
    106 vmCvar_t	ui_tourney_timelimit;
    107 
    108 vmCvar_t	ui_team_fraglimit;
    109 vmCvar_t	ui_team_timelimit;
    110 vmCvar_t	ui_team_friendly;
    111 
    112 vmCvar_t	ui_ctf_capturelimit;
    113 vmCvar_t	ui_ctf_timelimit;
    114 vmCvar_t	ui_ctf_friendly;
    115 
    116 vmCvar_t	ui_arenasFile;
    117 vmCvar_t	ui_botsFile;
    118 vmCvar_t	ui_spScores1;
    119 vmCvar_t	ui_spScores2;
    120 vmCvar_t	ui_spScores3;
    121 vmCvar_t	ui_spScores4;
    122 vmCvar_t	ui_spScores5;
    123 vmCvar_t	ui_spAwards;
    124 vmCvar_t	ui_spVideos;
    125 vmCvar_t	ui_spSkill;
    126 
    127 vmCvar_t	ui_spSelection;
    128 
    129 vmCvar_t	ui_browserMaster;
    130 vmCvar_t	ui_browserGameType;
    131 vmCvar_t	ui_browserSortKey;
    132 vmCvar_t	ui_browserShowFull;
    133 vmCvar_t	ui_browserShowEmpty;
    134 
    135 vmCvar_t	ui_brassTime;
    136 vmCvar_t	ui_drawCrosshair;
    137 vmCvar_t	ui_drawCrosshairNames;
    138 vmCvar_t	ui_marks;
    139 
    140 vmCvar_t	ui_server1;
    141 vmCvar_t	ui_server2;
    142 vmCvar_t	ui_server3;
    143 vmCvar_t	ui_server4;
    144 vmCvar_t	ui_server5;
    145 vmCvar_t	ui_server6;
    146 vmCvar_t	ui_server7;
    147 vmCvar_t	ui_server8;
    148 vmCvar_t	ui_server9;
    149 vmCvar_t	ui_server10;
    150 vmCvar_t	ui_server11;
    151 vmCvar_t	ui_server12;
    152 vmCvar_t	ui_server13;
    153 vmCvar_t	ui_server14;
    154 vmCvar_t	ui_server15;
    155 vmCvar_t	ui_server16;
    156 
    157 vmCvar_t	ui_cdkeychecked;
    158 
    159 // bk001129 - made static to avoid aliasing.
    160 static cvarTable_t		cvarTable[] = {
    161 	{ &ui_ffa_fraglimit, "ui_ffa_fraglimit", "20", CVAR_ARCHIVE },
    162 	{ &ui_ffa_timelimit, "ui_ffa_timelimit", "0", CVAR_ARCHIVE },
    163 
    164 	{ &ui_tourney_fraglimit, "ui_tourney_fraglimit", "0", CVAR_ARCHIVE },
    165 	{ &ui_tourney_timelimit, "ui_tourney_timelimit", "15", CVAR_ARCHIVE },
    166 
    167 	{ &ui_team_fraglimit, "ui_team_fraglimit", "0", CVAR_ARCHIVE },
    168 	{ &ui_team_timelimit, "ui_team_timelimit", "20", CVAR_ARCHIVE },
    169 	{ &ui_team_friendly, "ui_team_friendly",  "1", CVAR_ARCHIVE },
    170 
    171 	{ &ui_ctf_capturelimit, "ui_ctf_capturelimit", "8", CVAR_ARCHIVE },
    172 	{ &ui_ctf_timelimit, "ui_ctf_timelimit", "30", CVAR_ARCHIVE },
    173 	{ &ui_ctf_friendly, "ui_ctf_friendly",  "0", CVAR_ARCHIVE },
    174 
    175 	{ &ui_arenasFile, "g_arenasFile", "", CVAR_INIT|CVAR_ROM },
    176 	{ &ui_botsFile, "g_botsFile", "", CVAR_INIT|CVAR_ROM },
    177 	{ &ui_spScores1, "g_spScores1", "", CVAR_ARCHIVE | CVAR_ROM },
    178 	{ &ui_spScores2, "g_spScores2", "", CVAR_ARCHIVE | CVAR_ROM },
    179 	{ &ui_spScores3, "g_spScores3", "", CVAR_ARCHIVE | CVAR_ROM },
    180 	{ &ui_spScores4, "g_spScores4", "", CVAR_ARCHIVE | CVAR_ROM },
    181 	{ &ui_spScores5, "g_spScores5", "", CVAR_ARCHIVE | CVAR_ROM },
    182 	{ &ui_spAwards, "g_spAwards", "", CVAR_ARCHIVE | CVAR_ROM },
    183 	{ &ui_spVideos, "g_spVideos", "", CVAR_ARCHIVE | CVAR_ROM },
    184 	{ &ui_spSkill, "g_spSkill", "2", CVAR_ARCHIVE | CVAR_LATCH },
    185 
    186 	{ &ui_spSelection, "ui_spSelection", "", CVAR_ROM },
    187 
    188 	{ &ui_browserMaster, "ui_browserMaster", "0", CVAR_ARCHIVE },
    189 	{ &ui_browserGameType, "ui_browserGameType", "0", CVAR_ARCHIVE },
    190 	{ &ui_browserSortKey, "ui_browserSortKey", "4", CVAR_ARCHIVE },
    191 	{ &ui_browserShowFull, "ui_browserShowFull", "1", CVAR_ARCHIVE },
    192 	{ &ui_browserShowEmpty, "ui_browserShowEmpty", "1", CVAR_ARCHIVE },
    193 
    194 	{ &ui_brassTime, "cg_brassTime", "2500", CVAR_ARCHIVE },
    195 	{ &ui_drawCrosshair, "cg_drawCrosshair", "4", CVAR_ARCHIVE },
    196 	{ &ui_drawCrosshairNames, "cg_drawCrosshairNames", "1", CVAR_ARCHIVE },
    197 	{ &ui_marks, "cg_marks", "1", CVAR_ARCHIVE },
    198 
    199 	{ &ui_server1, "server1", "", CVAR_ARCHIVE },
    200 	{ &ui_server2, "server2", "", CVAR_ARCHIVE },
    201 	{ &ui_server3, "server3", "", CVAR_ARCHIVE },
    202 	{ &ui_server4, "server4", "", CVAR_ARCHIVE },
    203 	{ &ui_server5, "server5", "", CVAR_ARCHIVE },
    204 	{ &ui_server6, "server6", "", CVAR_ARCHIVE },
    205 	{ &ui_server7, "server7", "", CVAR_ARCHIVE },
    206 	{ &ui_server8, "server8", "", CVAR_ARCHIVE },
    207 	{ &ui_server9, "server9", "", CVAR_ARCHIVE },
    208 	{ &ui_server10, "server10", "", CVAR_ARCHIVE },
    209 	{ &ui_server11, "server11", "", CVAR_ARCHIVE },
    210 	{ &ui_server12, "server12", "", CVAR_ARCHIVE },
    211 	{ &ui_server13, "server13", "", CVAR_ARCHIVE },
    212 	{ &ui_server14, "server14", "", CVAR_ARCHIVE },
    213 	{ &ui_server15, "server15", "", CVAR_ARCHIVE },
    214 	{ &ui_server16, "server16", "", CVAR_ARCHIVE },
    215 
    216 	{ &ui_cdkeychecked, "ui_cdkeychecked", "0", CVAR_ROM }
    217 };
    218 
    219 // bk001129 - made static to avoid aliasing
    220 static int cvarTableSize = sizeof(cvarTable) / sizeof(cvarTable[0]);
    221 
    222 
    223 /*
    224 =================
    225 UI_RegisterCvars
    226 =================
    227 */
    228 void UI_RegisterCvars( void ) {
    229 	int			i;
    230 	cvarTable_t	*cv;
    231 
    232 	for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) {
    233 		trap_Cvar_Register( cv->vmCvar, cv->cvarName, cv->defaultString, cv->cvarFlags );
    234 	}
    235 }
    236 
    237 /*
    238 =================
    239 UI_UpdateCvars
    240 =================
    241 */
    242 void UI_UpdateCvars( void ) {
    243 	int			i;
    244 	cvarTable_t	*cv;
    245 
    246 	for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) {
    247 		trap_Cvar_Update( cv->vmCvar );
    248 	}
    249 }