mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2024-11-29 23:22:55 +00:00
352 lines
9.9 KiB
C
352 lines
9.9 KiB
C
/*
|
|
===========================================================================
|
|
Copyright (C) 1999-2005 Id Software, Inc.
|
|
Copyright (C) 2002-2009 Q3Rally Team (Per Thormann - perle@q3rally.com)
|
|
|
|
This file is part of q3rally source code.
|
|
|
|
q3rally source code is free software; you can redistribute it
|
|
and/or modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the License,
|
|
or (at your option) any later version.
|
|
|
|
q3rally source code is distributed in the hope that it will be
|
|
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with q3rally; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
===========================================================================
|
|
*/
|
|
//
|
|
/*
|
|
=======================================================================
|
|
|
|
USER INTERFACE MAIN
|
|
|
|
=======================================================================
|
|
*/
|
|
|
|
|
|
#include "ui_local.h"
|
|
|
|
|
|
/*
|
|
================
|
|
vmMain
|
|
|
|
This is the only way control passes into the module.
|
|
This must be the very first function compiled into the .qvm file
|
|
================
|
|
*/
|
|
Q_EXPORT intptr_t 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 ) {
|
|
switch ( command ) {
|
|
case UI_GETAPIVERSION:
|
|
return UI_API_VERSION;
|
|
|
|
case UI_INIT:
|
|
UI_Init();
|
|
return 0;
|
|
|
|
case UI_SHUTDOWN:
|
|
UI_Shutdown();
|
|
return 0;
|
|
|
|
case UI_KEY_EVENT:
|
|
UI_KeyEvent( arg0, arg1 );
|
|
return 0;
|
|
|
|
case UI_MOUSE_EVENT:
|
|
UI_MouseEvent( arg0, arg1 );
|
|
return 0;
|
|
|
|
case UI_REFRESH:
|
|
UI_Refresh( arg0 );
|
|
return 0;
|
|
|
|
case UI_IS_FULLSCREEN:
|
|
return UI_IsFullscreen();
|
|
|
|
case UI_SET_ACTIVE_MENU:
|
|
UI_SetActiveMenu( arg0 );
|
|
return 0;
|
|
|
|
case UI_CONSOLE_COMMAND:
|
|
return UI_ConsoleCommand(arg0);
|
|
|
|
case UI_DRAW_CONNECT_SCREEN:
|
|
UI_DrawConnectScreen( arg0 );
|
|
return 0;
|
|
case UI_HASUNIQUECDKEY: // mod authors need to observe this
|
|
// STONELANCE
|
|
// return qtrue; // change this to qfalse for mods!
|
|
return qfalse;
|
|
// END
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
|
|
/*
|
|
================
|
|
cvars
|
|
================
|
|
*/
|
|
|
|
typedef struct {
|
|
vmCvar_t *vmCvar;
|
|
char *cvarName;
|
|
char *defaultString;
|
|
int cvarFlags;
|
|
} cvarTable_t;
|
|
|
|
// STONELANCE
|
|
/*
|
|
vmCvar_t ui_ffa_fraglimit;
|
|
vmCvar_t ui_ffa_timelimit;
|
|
|
|
vmCvar_t ui_tourney_fraglimit;
|
|
vmCvar_t ui_tourney_timelimit;
|
|
*/
|
|
|
|
vmCvar_t ui_racing_laplimit;
|
|
vmCvar_t ui_racing_timelimit;
|
|
|
|
vmCvar_t ui_team_racing_laplimit;
|
|
vmCvar_t ui_team_racing_timelimit;
|
|
vmCvar_t ui_team_racing_friendly;
|
|
|
|
vmCvar_t ui_derby_timelimit;
|
|
|
|
vmCvar_t ui_dm_fraglimit;
|
|
vmCvar_t ui_dm_timelimit;
|
|
|
|
vmCvar_t ui_racing_tracklength;
|
|
vmCvar_t ui_racing_trackreversed;
|
|
// END
|
|
|
|
vmCvar_t ui_team_fraglimit;
|
|
vmCvar_t ui_team_timelimit;
|
|
vmCvar_t ui_team_friendly;
|
|
|
|
vmCvar_t ui_ctf_capturelimit;
|
|
vmCvar_t ui_ctf_timelimit;
|
|
vmCvar_t ui_ctf_friendly;
|
|
|
|
vmCvar_t ui_arenasFile;
|
|
vmCvar_t ui_botsFile;
|
|
vmCvar_t ui_spScores1;
|
|
vmCvar_t ui_spScores2;
|
|
vmCvar_t ui_spScores3;
|
|
vmCvar_t ui_spScores4;
|
|
vmCvar_t ui_spScores5;
|
|
vmCvar_t ui_spAwards;
|
|
vmCvar_t ui_spVideos;
|
|
vmCvar_t ui_spSkill;
|
|
|
|
vmCvar_t ui_spSelection;
|
|
|
|
vmCvar_t ui_browserMaster;
|
|
vmCvar_t ui_browserGameType;
|
|
vmCvar_t ui_browserSortKey;
|
|
vmCvar_t ui_browserShowFull;
|
|
vmCvar_t ui_browserShowEmpty;
|
|
vmCvar_t ui_browserOnlyHumans;
|
|
// STONELANCE
|
|
vmCvar_t ui_browserShowRallyOnly;
|
|
// END
|
|
|
|
vmCvar_t ui_brassTime;
|
|
vmCvar_t ui_drawCrosshair;
|
|
vmCvar_t ui_drawCrosshairNames;
|
|
vmCvar_t ui_marks;
|
|
|
|
vmCvar_t ui_server1;
|
|
vmCvar_t ui_server2;
|
|
vmCvar_t ui_server3;
|
|
vmCvar_t ui_server4;
|
|
vmCvar_t ui_server5;
|
|
vmCvar_t ui_server6;
|
|
vmCvar_t ui_server7;
|
|
vmCvar_t ui_server8;
|
|
vmCvar_t ui_server9;
|
|
vmCvar_t ui_server10;
|
|
vmCvar_t ui_server11;
|
|
vmCvar_t ui_server12;
|
|
vmCvar_t ui_server13;
|
|
vmCvar_t ui_server14;
|
|
vmCvar_t ui_server15;
|
|
vmCvar_t ui_server16;
|
|
|
|
// STONELANCE
|
|
vmCvar_t ui_favoritecar1;
|
|
vmCvar_t ui_favoritecar2;
|
|
vmCvar_t ui_favoritecar3;
|
|
vmCvar_t ui_favoritecar4;
|
|
|
|
vmCvar_t ui_trackReversed;
|
|
|
|
|
|
vmCvar_t ui_metricUnits;
|
|
vmCvar_t ui_controlMode;
|
|
vmCvar_t ui_manualShift;
|
|
vmCvar_t ui_minSkidLength;
|
|
vmCvar_t ui_drawRearView;
|
|
vmCvar_t ui_checkpointArrowMode;
|
|
vmCvar_t ui_atmosphericLevel;
|
|
vmCvar_t ui_drawPositionSprites;
|
|
vmCvar_t ui_engineSounds;
|
|
vmCvar_t ui_tightCamTracking;
|
|
vmCvar_t ui_rearViewRenderLevel;
|
|
vmCvar_t ui_mainViewRenderLevel;
|
|
/*
|
|
vmCvar_t ui_model;
|
|
vmCvar_t ui_head;
|
|
vmCvar_t ui_rim;
|
|
*/
|
|
// END
|
|
|
|
vmCvar_t ui_cdkeychecked;
|
|
vmCvar_t ui_ioq3;
|
|
|
|
static cvarTable_t cvarTable[] = {
|
|
// STONELANCE
|
|
/*
|
|
{ &ui_ffa_fraglimit, "ui_ffa_fraglimit", "20", CVAR_ARCHIVE },
|
|
{ &ui_ffa_timelimit, "ui_ffa_timelimit", "0", CVAR_ARCHIVE },
|
|
|
|
{ &ui_tourney_fraglimit, "ui_tourney_fraglimit", "0", CVAR_ARCHIVE },
|
|
{ &ui_tourney_timelimit, "ui_tourney_timelimit", "15", CVAR_ARCHIVE },
|
|
*/
|
|
{ &ui_racing_laplimit, "ui_racing_laplimit", "6", CVAR_ARCHIVE },
|
|
{ &ui_racing_timelimit, "ui_racing_timelimit", "0", CVAR_ARCHIVE },
|
|
|
|
{ &ui_team_racing_laplimit, "ui_team_racing_laplimit", "6", CVAR_ARCHIVE },
|
|
{ &ui_team_racing_timelimit, "ui_team_racing_timelimit", "0", CVAR_ARCHIVE },
|
|
{ &ui_team_racing_friendly, "ui_team_racing_friendly", "1", CVAR_ARCHIVE },
|
|
|
|
{ &ui_derby_timelimit, "ui_derby_timelimit", "10", CVAR_ARCHIVE },
|
|
|
|
{ &ui_dm_fraglimit, "ui_dm_fraglimit", "0", CVAR_ARCHIVE },
|
|
{ &ui_dm_timelimit, "ui_dm_timelimit", "0", CVAR_ARCHIVE },
|
|
// END
|
|
|
|
{ &ui_team_fraglimit, "ui_team_fraglimit", "0", CVAR_ARCHIVE },
|
|
{ &ui_team_timelimit, "ui_team_timelimit", "20", CVAR_ARCHIVE },
|
|
{ &ui_team_friendly, "ui_team_friendly", "1", CVAR_ARCHIVE },
|
|
|
|
{ &ui_ctf_capturelimit, "ui_ctf_capturelimit", "8", CVAR_ARCHIVE },
|
|
{ &ui_ctf_timelimit, "ui_ctf_timelimit", "30", CVAR_ARCHIVE },
|
|
{ &ui_ctf_friendly, "ui_ctf_friendly", "0", CVAR_ARCHIVE },
|
|
|
|
{ &ui_racing_tracklength, "ui_racing_tracklength", "1", CVAR_ARCHIVE },
|
|
{ &ui_racing_trackreversed, "ui_racing_trackreversed", "0", CVAR_ARCHIVE },
|
|
|
|
{ &ui_arenasFile, "g_arenasFile", "", CVAR_INIT|CVAR_ROM },
|
|
{ &ui_botsFile, "g_botsFile", "", CVAR_INIT|CVAR_ROM },
|
|
{ &ui_spScores1, "g_spScores1", "", CVAR_ARCHIVE },
|
|
{ &ui_spScores2, "g_spScores2", "", CVAR_ARCHIVE },
|
|
{ &ui_spScores3, "g_spScores3", "", CVAR_ARCHIVE },
|
|
{ &ui_spScores4, "g_spScores4", "", CVAR_ARCHIVE },
|
|
{ &ui_spScores5, "g_spScores5", "", CVAR_ARCHIVE },
|
|
{ &ui_spAwards, "g_spAwards", "", CVAR_ARCHIVE },
|
|
{ &ui_spVideos, "g_spVideos", "", CVAR_ARCHIVE },
|
|
{ &ui_spSkill, "g_spSkill", "2", CVAR_ARCHIVE | CVAR_LATCH },
|
|
|
|
{ &ui_spSelection, "ui_spSelection", "", CVAR_ROM },
|
|
|
|
{ &ui_browserMaster, "ui_browserMaster", "0", CVAR_ARCHIVE },
|
|
{ &ui_browserGameType, "ui_browserGameType", "0", CVAR_ARCHIVE },
|
|
{ &ui_browserSortKey, "ui_browserSortKey", "4", CVAR_ARCHIVE },
|
|
{ &ui_browserShowFull, "ui_browserShowFull", "1", CVAR_ARCHIVE },
|
|
{ &ui_browserShowEmpty, "ui_browserShowEmpty", "1", CVAR_ARCHIVE },
|
|
{ &ui_browserOnlyHumans, "ui_browserOnlyHumans", "0", CVAR_ARCHIVE },
|
|
{ &ui_browserShowRallyOnly, "ui_browserShowRallyOnly", "1", CVAR_ARCHIVE },
|
|
|
|
{ &ui_brassTime, "cg_brassTime", "2500", CVAR_ARCHIVE },
|
|
{ &ui_drawCrosshair, "cg_drawCrosshair", "4", CVAR_ARCHIVE },
|
|
{ &ui_drawCrosshairNames, "cg_drawCrosshairNames", "1", CVAR_ARCHIVE },
|
|
{ &ui_marks, "cg_marks", "1", CVAR_ARCHIVE },
|
|
|
|
{ &ui_server1, "server1", "", CVAR_ARCHIVE },
|
|
{ &ui_server2, "server2", "", CVAR_ARCHIVE },
|
|
{ &ui_server3, "server3", "", CVAR_ARCHIVE },
|
|
{ &ui_server4, "server4", "", CVAR_ARCHIVE },
|
|
{ &ui_server5, "server5", "", CVAR_ARCHIVE },
|
|
{ &ui_server6, "server6", "", CVAR_ARCHIVE },
|
|
{ &ui_server7, "server7", "", CVAR_ARCHIVE },
|
|
{ &ui_server8, "server8", "", CVAR_ARCHIVE },
|
|
{ &ui_server9, "server9", "", CVAR_ARCHIVE },
|
|
{ &ui_server10, "server10", "", CVAR_ARCHIVE },
|
|
{ &ui_server11, "server11", "", CVAR_ARCHIVE },
|
|
{ &ui_server12, "server12", "", CVAR_ARCHIVE },
|
|
{ &ui_server13, "server13", "", CVAR_ARCHIVE },
|
|
{ &ui_server14, "server14", "", CVAR_ARCHIVE },
|
|
{ &ui_server15, "server15", "", CVAR_ARCHIVE },
|
|
{ &ui_server16, "server16", "", CVAR_ARCHIVE },
|
|
|
|
// STONELANCE
|
|
{ &ui_favoritecar1, "favoritecar1", "", CVAR_ARCHIVE },
|
|
{ &ui_favoritecar2, "favoritecar2", "", CVAR_ARCHIVE },
|
|
{ &ui_favoritecar3, "favoritecar3", "", CVAR_ARCHIVE },
|
|
{ &ui_favoritecar4, "favoritecar4", "", CVAR_ARCHIVE },
|
|
|
|
{ &ui_trackReversed, "g_trackReversed", "0", CVAR_LATCH },
|
|
|
|
{ &ui_metricUnits, "cg_metricUnits", "0", CVAR_ARCHIVE },
|
|
{ &ui_controlMode, "cg_controlMode", "0", CVAR_ARCHIVE },
|
|
{ &ui_manualShift, "cg_manualShift", "0", CVAR_ARCHIVE },
|
|
{ &ui_minSkidLength, "cg_minSkidLength", "12", CVAR_ARCHIVE },
|
|
{ &ui_drawRearView, "cg_drawRearView", "1", CVAR_ARCHIVE },
|
|
{ &ui_checkpointArrowMode, "cg_checkpointArrowMode", "1", CVAR_ARCHIVE },
|
|
{ &ui_atmosphericLevel, "cg_atmosphericLevel", "1", CVAR_ARCHIVE },
|
|
{ &ui_drawPositionSprites, "cg_drawPositionSprites", "1", CVAR_ARCHIVE },
|
|
{ &ui_engineSounds, "cg_engineSounds", "1", CVAR_ARCHIVE },
|
|
|
|
{ &ui_tightCamTracking, "cg_tightCamTracking", "1", CVAR_ARCHIVE },
|
|
{ &ui_rearViewRenderLevel, "cg_rearViewRenderLevel", "3", CVAR_ARCHIVE },
|
|
{ &ui_mainViewRenderLevel, "cg_mainViewRenderLevel", "31", CVAR_ARCHIVE },
|
|
/*
|
|
{ &ui_model, "model", "sidepipe/red", CVAR_ARCHIVE },
|
|
{ &ui_head, "head", "doom", CVAR_ARCHIVE },
|
|
{ &ui_rim, "rim", "svt_cobra", CVAR_ARCHIVE },
|
|
*/
|
|
// END
|
|
|
|
{ &ui_cdkeychecked, "ui_cdkeychecked", "0", CVAR_ROM },
|
|
{ &ui_ioq3, "ui_ioq3", "1", CVAR_ROM }
|
|
};
|
|
|
|
static int cvarTableSize = sizeof(cvarTable) / sizeof(cvarTable[0]);
|
|
|
|
|
|
/*
|
|
=================
|
|
UI_RegisterCvars
|
|
=================
|
|
*/
|
|
void UI_RegisterCvars( void ) {
|
|
int i;
|
|
cvarTable_t *cv;
|
|
|
|
for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) {
|
|
trap_Cvar_Register( cv->vmCvar, cv->cvarName, cv->defaultString, cv->cvarFlags );
|
|
}
|
|
}
|
|
|
|
/*
|
|
=================
|
|
UI_UpdateCvars
|
|
=================
|
|
*/
|
|
void UI_UpdateCvars( void ) {
|
|
int i;
|
|
cvarTable_t *cv;
|
|
|
|
for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) {
|
|
trap_Cvar_Update( cv->vmCvar );
|
|
}
|
|
}
|