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 }