mirror of
https://github.com/UberGames/rpgxEF.git
synced 2025-03-14 06:35:14 +00:00
Fixes and other
- removed all #ifdefs ELITEFORCE nad #ifdefs XTRA - changes to fix shader remapping
This commit is contained in:
parent
c44406e24f
commit
b90a89ea61
53 changed files with 312 additions and 2957 deletions
|
@ -51,7 +51,6 @@ enum {
|
|||
ET_PLAYER,
|
||||
ET_ITEM,
|
||||
ET_MISSILE,
|
||||
#ifdef ELITEFORCE
|
||||
ET_ALT_MISSILE,
|
||||
ET_MOVER,
|
||||
ET_BEAM,
|
||||
|
@ -62,9 +61,6 @@ enum {
|
|||
ET_INVISIBLE,
|
||||
ET_USEABLE,
|
||||
ET_EVENTS
|
||||
#else
|
||||
ET_MOVER
|
||||
#endif
|
||||
};
|
||||
|
||||
//===========================================================================
|
||||
|
|
|
@ -2814,11 +2814,7 @@ void BotEnterChat(int chatstate, int clientto, int sendto)
|
|||
cs = BotChatStateFromHandle(chatstate);
|
||||
if (!cs) return;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
clientnum = clientto;
|
||||
#else
|
||||
clientnum = cs->client;
|
||||
#endif
|
||||
|
||||
if (strlen(cs->chatmessage))
|
||||
{
|
||||
|
@ -2831,11 +2827,6 @@ void BotEnterChat(int chatstate, int clientto, int sendto)
|
|||
case CHAT_TEAM:
|
||||
EA_Command(clientnum, va("say_team %s", cs->chatmessage));
|
||||
break;
|
||||
#ifndef ELITEFORCE
|
||||
case CHAT_TELL:
|
||||
EA_Command(clientnum, va("tell %d %s", clientto, cs->chatmessage));
|
||||
break;
|
||||
#endif
|
||||
default: //CHAT_ALL
|
||||
EA_Command(clientnum, va("say %s", cs->chatmessage));
|
||||
break;
|
||||
|
@ -2889,19 +2880,12 @@ void BotSetChatGender(int chatstate, int gender)
|
|||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
#ifdef ELITEFORCE
|
||||
void BotSetChatName(int chatstate, char *name)
|
||||
#else
|
||||
void BotSetChatName(int chatstate, char *name, int client)
|
||||
#endif
|
||||
{
|
||||
bot_chatstate_t *cs;
|
||||
|
||||
cs = BotChatStateFromHandle(chatstate);
|
||||
if (!cs) return;
|
||||
#ifndef ELITEFORCE
|
||||
cs->client = client;
|
||||
#endif
|
||||
Com_Memset(cs->name, 0, sizeof(cs->name));
|
||||
strncpy(cs->name, name, sizeof(cs->name));
|
||||
cs->name[sizeof(cs->name)-1] = '\0';
|
||||
|
@ -3000,13 +2984,6 @@ int BotSetupChatAI(void)
|
|||
file = LibVarString("matchfile", "match.c");
|
||||
matchtemplates = BotLoadMatchTemplates(file);
|
||||
//
|
||||
#ifndef ELITEFORCE
|
||||
if (!LibVarValue("nochat", "0"))
|
||||
{
|
||||
file = LibVarString("rchatfile", "rchat.c");
|
||||
replychats = BotLoadReplyChat(file);
|
||||
} //end if
|
||||
#endif
|
||||
|
||||
InitConsoleMessageHeap();
|
||||
|
||||
|
|
|
@ -374,11 +374,7 @@ void InitLevelItemHeap(void)
|
|||
|
||||
if (levelitemheap) FreeMemory(levelitemheap);
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
max_levelitems = (int) LibVarValue("max_levelitems", "1024");
|
||||
#else
|
||||
max_levelitems = (int) LibVarValue("max_levelitems", "256");
|
||||
#endif
|
||||
levelitemheap = (levelitem_t *) GetClearedMemory(max_levelitems * sizeof(levelitem_t));
|
||||
|
||||
for (i = 0; i < max_levelitems-1; i++)
|
||||
|
|
|
@ -417,11 +417,7 @@ int BotChooseBestFightWeapon(int weaponstate, int *inventory)
|
|||
if (!ws->weaponweightconfig) return 0;
|
||||
|
||||
bestweight = 0;
|
||||
#ifdef ELITEFORCE
|
||||
bestweapon = 1;
|
||||
#else
|
||||
bestweapon = 0;
|
||||
#endif
|
||||
for (i = 0; i < wc->numweapons; i++)
|
||||
{
|
||||
if (!wc->weaponinfo[i].valid) continue;
|
||||
|
|
|
@ -171,7 +171,6 @@ void EA_Attack(int client)
|
|||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
#ifdef ELITEFORCE
|
||||
void EA_AltAttack(int client)
|
||||
{
|
||||
bot_input_t *bi;
|
||||
|
@ -186,7 +185,6 @@ void EA_AltAttack(int client)
|
|||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
#endif
|
||||
void EA_Talk(int client)
|
||||
{
|
||||
bot_input_t *bi;
|
||||
|
@ -220,12 +218,7 @@ void EA_Respawn(int client)
|
|||
bot_input_t *bi;
|
||||
|
||||
bi = &botinputs[client];
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
bi->actionflags |= ACTION_ATTACK;
|
||||
#else
|
||||
bi->actionflags |= ACTION_RESPAWN;
|
||||
#endif
|
||||
} //end of the function EA_Respawn
|
||||
//===========================================================================
|
||||
//
|
||||
|
|
|
@ -740,13 +740,11 @@ static void Init_EA_Export( ea_export_t *ea ) {
|
|||
ea->EA_Gesture = EA_Gesture;
|
||||
ea->EA_Talk = EA_Talk;
|
||||
ea->EA_Attack = EA_Attack;
|
||||
#ifdef ELITEFORCE
|
||||
ea->EA_AltAttack = EA_AltAttack;
|
||||
ea->EA_UseItem = EA_UseItem;
|
||||
ea->EA_DropItem = EA_DropItem;
|
||||
ea->EA_UseInv = EA_UseInv;
|
||||
ea->EA_DropInv = EA_DropInv;
|
||||
#endif
|
||||
ea->EA_Use = EA_Use;
|
||||
ea->EA_Respawn = EA_Respawn;
|
||||
ea->EA_Crouch = EA_Crouch;
|
||||
|
|
|
@ -131,50 +131,10 @@ typedef enum {
|
|||
CG_SETUSERCMDVALUE,
|
||||
CG_R_REGISTERSHADERNOMIP,
|
||||
CG_MEMORY_REMAINING,
|
||||
#ifndef ELITEFORCE
|
||||
CG_R_REGISTERFONT,
|
||||
CG_KEY_ISDOWN,
|
||||
CG_KEY_GETCATCHER,
|
||||
CG_KEY_SETCATCHER,
|
||||
CG_KEY_GETKEY,
|
||||
CG_PC_ADD_GLOBAL_DEFINE,
|
||||
CG_PC_LOAD_SOURCE,
|
||||
CG_PC_FREE_SOURCE,
|
||||
CG_PC_READ_TOKEN,
|
||||
CG_PC_SOURCE_FILE_AND_LINE,
|
||||
CG_S_STOPBACKGROUNDTRACK,
|
||||
CG_REAL_TIME,
|
||||
CG_SNAPVECTOR,
|
||||
CG_REMOVECOMMAND,
|
||||
CG_R_LIGHTFORPOINT,
|
||||
CG_CIN_PLAYCINEMATIC,
|
||||
CG_CIN_STOPCINEMATIC,
|
||||
CG_CIN_RUNCINEMATIC,
|
||||
CG_CIN_DRAWCINEMATIC,
|
||||
CG_CIN_SETEXTENTS,
|
||||
CG_R_REMAP_SHADER,
|
||||
CG_S_ADDREALLOOPINGSOUND,
|
||||
CG_S_STOPLOOPINGSOUND,
|
||||
CG_R_REGISTERSHADER3D, //59
|
||||
CG_CVAR_SET_NO_MODIFY, // 60
|
||||
CG_R_REMAP_SHADER,
|
||||
|
||||
CG_CM_TEMPCAPSULEMODEL,
|
||||
CG_CM_CAPSULETRACE,
|
||||
CG_CM_TRANSFORMEDCAPSULETRACE,
|
||||
CG_R_ADDADDITIVELIGHTTOSCENE,
|
||||
CG_GET_ENTITY_TOKEN,
|
||||
CG_R_ADDPOLYSTOSCENE,
|
||||
CG_R_INPVS,
|
||||
// 1.32
|
||||
CG_FS_SEEK,
|
||||
|
||||
/*
|
||||
CG_LOADCAMERA,
|
||||
CG_STARTCAMERA,
|
||||
CG_GETCAMERAINFO,
|
||||
*/
|
||||
#else
|
||||
CG_R_REGISTERSHADER3D, //59
|
||||
CG_CVAR_SET_NO_MODIFY, // 60
|
||||
#endif
|
||||
CG_MEMSET = 100,
|
||||
CG_MEMCPY,
|
||||
CG_STRNCPY,
|
||||
|
@ -186,12 +146,6 @@ typedef enum {
|
|||
CG_CEIL,
|
||||
CG_TESTPRINTINT,
|
||||
CG_TESTPRINTFLOAT,
|
||||
#ifndef ELITEFORCE
|
||||
CG_ACOS
|
||||
#endif
|
||||
#ifdef XTRA
|
||||
CG_R_REMAP_SHADER = 200,
|
||||
#endif
|
||||
} cgameImport_t;
|
||||
|
||||
|
||||
|
@ -234,15 +188,6 @@ typedef enum {
|
|||
|
||||
CG_LAST_ATTACKER,
|
||||
// int (*CG_LastAttacker)( void );
|
||||
#ifndef ELITEFORCE
|
||||
CG_KEY_EVENT,
|
||||
// void (*CG_KeyEvent)( int key, qboolean down );
|
||||
|
||||
CG_MOUSE_EVENT,
|
||||
// void (*CG_MouseEvent)( int dx, int dy );
|
||||
CG_EVENT_HANDLING
|
||||
// void (*CG_EventHandling)(int type);
|
||||
#endif
|
||||
} cgameExport_t;
|
||||
|
||||
//----------------------------------------------
|
||||
|
|
|
@ -301,16 +301,12 @@ rescan:
|
|||
// allow server to indicate why they were disconnected
|
||||
if ( argc >= 2 )
|
||||
{
|
||||
#ifdef ELITEFORCE
|
||||
Cbuf_AddText(va("err_dialog \"%s\"", Cmd_Argv(1)));
|
||||
#endif
|
||||
Com_Error( ERR_SERVERDISCONNECT, "Server disconnected - %s", Cmd_Argv( 1 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef ELITEFORCE
|
||||
Cbuf_AddText(va("err_dialog \"%s\"", Cmd_Argv(1)));
|
||||
#endif
|
||||
Com_Error( ERR_SERVERDISCONNECT, "Server disconnected" );
|
||||
}
|
||||
}
|
||||
|
@ -428,6 +424,9 @@ The cgame module is making a system call
|
|||
*/
|
||||
intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
||||
switch( args[0] ) {
|
||||
case CG_R_REMAP_SHADER:
|
||||
re.RemapShader( (const char*)VMA(1), (const char*)VMA(2), (const char*)VMA(3) );
|
||||
return 0;
|
||||
case CG_PRINT:
|
||||
Com_Printf( "%s", (const char*)VMA(1) );
|
||||
return 0;
|
||||
|
@ -467,21 +466,12 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
case CG_FS_FCLOSEFILE:
|
||||
FS_FCloseFile( args[1] );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case CG_FS_SEEK:
|
||||
return FS_Seek( args[1], args[2], args[3] );
|
||||
#endif
|
||||
case CG_SENDCONSOLECOMMAND:
|
||||
Cbuf_AddText( VMA(1) );
|
||||
return 0;
|
||||
case CG_ADDCOMMAND:
|
||||
CL_AddCgameCommand( VMA(1) );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case CG_REMOVECOMMAND:
|
||||
Cmd_RemoveCommandSafe( VMA(1) );
|
||||
return 0;
|
||||
#endif
|
||||
case CG_SENDCLIENTCOMMAND:
|
||||
CL_AddReliableCommand(VMA(1), qfalse);
|
||||
return 0;
|
||||
|
@ -502,10 +492,6 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
return CM_InlineModel( args[1] );
|
||||
case CG_CM_TEMPBOXMODEL:
|
||||
return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qfalse );
|
||||
#ifndef ELITEFORCE
|
||||
case CG_CM_TEMPCAPSULEMODEL:
|
||||
return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qtrue );
|
||||
#endif
|
||||
case CG_CM_POINTCONTENTS:
|
||||
return CM_PointContents( VMA(1), args[2] );
|
||||
case CG_CM_TRANSFORMEDPOINTCONTENTS:
|
||||
|
@ -513,19 +499,9 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
case CG_CM_BOXTRACE:
|
||||
CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qfalse );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case CG_CM_CAPSULETRACE:
|
||||
CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qtrue );
|
||||
return 0;
|
||||
#endif
|
||||
case CG_CM_TRANSFORMEDBOXTRACE:
|
||||
CM_TransformedBoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qfalse );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case CG_CM_TRANSFORMEDCAPSULETRACE:
|
||||
CM_TransformedBoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), /*int capsule*/ qtrue );
|
||||
return 0;
|
||||
#endif
|
||||
case CG_CM_MARKFRAGMENTS:
|
||||
return re.MarkFragments( args[1], VMA(2), VMA(3), args[4], VMA(5), args[6], VMA(7) );
|
||||
case CG_S_STARTSOUND:
|
||||
|
@ -540,14 +516,6 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
case CG_S_ADDLOOPINGSOUND:
|
||||
S_AddLoopingSound( args[1], VMA(2), VMA(3), args[4] );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case CG_S_ADDREALLOOPINGSOUND:
|
||||
S_AddRealLoopingSound( args[1], VMA(2), VMA(3), args[4] );
|
||||
return 0;
|
||||
case CG_S_STOPLOOPINGSOUND:
|
||||
S_StopLoopingSound( args[1] );
|
||||
return 0;
|
||||
#endif
|
||||
case CG_S_UPDATEENTITYPOSITION:
|
||||
S_UpdateEntityPosition( args[1], VMA(2) );
|
||||
return 0;
|
||||
|
@ -557,11 +525,9 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
case CG_S_REGISTERSOUND:
|
||||
return S_RegisterSound( VMA(1), args[2] );
|
||||
case CG_S_STARTBACKGROUNDTRACK:
|
||||
#ifdef ELITEFORCE
|
||||
if(!VMA(1) || !*((char *) VMA(1)))
|
||||
S_StopBackgroundTrack();
|
||||
else
|
||||
#endif
|
||||
S_StartBackgroundTrack(VMA(1), VMA(2));
|
||||
return 0;
|
||||
case CG_R_LOADWORLDMAP:
|
||||
|
@ -575,11 +541,6 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
return re.RegisterShader( VMA(1) );
|
||||
case CG_R_REGISTERSHADERNOMIP:
|
||||
return re.RegisterShaderNoMip( VMA(1) );
|
||||
#ifndef ELITEFORCE
|
||||
case CG_R_REGISTERFONT:
|
||||
re.RegisterFont( VMA(1), args[2], VMA(3));
|
||||
return 0;
|
||||
#endif
|
||||
case CG_R_CLEARSCENE:
|
||||
re.ClearScene();
|
||||
return 0;
|
||||
|
@ -589,21 +550,9 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
case CG_R_ADDPOLYTOSCENE:
|
||||
re.AddPolyToScene( args[1], args[2], VMA(3), 1 );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case CG_R_ADDPOLYSTOSCENE:
|
||||
re.AddPolyToScene( args[1], args[2], VMA(3), args[4] );
|
||||
return 0;
|
||||
case CG_R_LIGHTFORPOINT:
|
||||
return re.LightForPoint( VMA(1), VMA(2), VMA(3), VMA(4) );
|
||||
#endif
|
||||
case CG_R_ADDLIGHTTOSCENE:
|
||||
re.AddLightToScene( VMA(1), VMF(2), VMF(3), VMF(4), VMF(5) );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case CG_R_ADDADDITIVELIGHTTOSCENE:
|
||||
re.AddAdditiveLightToScene( VMA(1), VMF(2), VMF(3), VMF(4), VMF(5) );
|
||||
return 0;
|
||||
#endif
|
||||
case CG_R_RENDERSCENE:
|
||||
re.RenderScene( VMA(1) );
|
||||
return 0;
|
||||
|
@ -640,19 +589,6 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
return 0;
|
||||
case CG_MEMORY_REMAINING:
|
||||
return Hunk_MemoryRemaining();
|
||||
#ifndef ELITEFORCE
|
||||
case CG_KEY_ISDOWN:
|
||||
return Key_IsDown( args[1] );
|
||||
case CG_KEY_GETCATCHER:
|
||||
return Key_GetCatcher();
|
||||
case CG_KEY_SETCATCHER:
|
||||
// Don't allow the cgame module to close the console
|
||||
Key_SetCatcher( args[1] | ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) );
|
||||
return 0;
|
||||
case CG_KEY_GETKEY:
|
||||
return Key_GetKey( VMA(1) );
|
||||
#endif
|
||||
|
||||
|
||||
case CG_MEMSET:
|
||||
Com_Memset( VMA(1), args[2], args[3] );
|
||||
|
@ -675,77 +611,10 @@ intptr_t CL_CgameSystemCalls( intptr_t *args ) {
|
|||
return FloatAsInt( floor( VMF(1) ) );
|
||||
case CG_CEIL:
|
||||
return FloatAsInt( ceil( VMF(1) ) );
|
||||
#ifndef ELITEFORCE
|
||||
case CG_ACOS:
|
||||
return FloatAsInt( Q_acos( VMF(1) ) );
|
||||
case CG_PC_ADD_GLOBAL_DEFINE:
|
||||
return botlib_export->PC_AddGlobalDefine( VMA(1) );
|
||||
case CG_PC_LOAD_SOURCE:
|
||||
return botlib_export->PC_LoadSourceHandle( VMA(1) );
|
||||
case CG_PC_FREE_SOURCE:
|
||||
return botlib_export->PC_FreeSourceHandle( args[1] );
|
||||
case CG_PC_READ_TOKEN:
|
||||
return botlib_export->PC_ReadTokenHandle( args[1], VMA(2) );
|
||||
case CG_PC_SOURCE_FILE_AND_LINE:
|
||||
return botlib_export->PC_SourceFileAndLine( args[1], VMA(2), VMA(3) );
|
||||
|
||||
case CG_S_STOPBACKGROUNDTRACK:
|
||||
S_StopBackgroundTrack();
|
||||
return 0;
|
||||
|
||||
case CG_REAL_TIME:
|
||||
return Com_RealTime( VMA(1) );
|
||||
case CG_SNAPVECTOR:
|
||||
Q_SnapVector(VMA(1));
|
||||
return 0;
|
||||
|
||||
case CG_CIN_PLAYCINEMATIC:
|
||||
return CIN_PlayCinematic(VMA(1), args[2], args[3], args[4], args[5], args[6]);
|
||||
|
||||
case CG_CIN_STOPCINEMATIC:
|
||||
return CIN_StopCinematic(args[1]);
|
||||
|
||||
case CG_CIN_RUNCINEMATIC:
|
||||
return CIN_RunCinematic(args[1]);
|
||||
|
||||
case CG_CIN_DRAWCINEMATIC:
|
||||
CIN_DrawCinematic(args[1]);
|
||||
return 0;
|
||||
|
||||
case CG_CIN_SETEXTENTS:
|
||||
CIN_SetExtents(args[1], args[2], args[3], args[4], args[5]);
|
||||
return 0;
|
||||
|
||||
case CG_R_REMAP_SHADER:
|
||||
re.RemapShader( VMA(1), VMA(2), VMA(3) );
|
||||
return 0;
|
||||
|
||||
/*
|
||||
case CG_LOADCAMERA:
|
||||
return loadCamera(VMA(1));
|
||||
|
||||
case CG_STARTCAMERA:
|
||||
startCamera(args[1]);
|
||||
return 0;
|
||||
|
||||
case CG_GETCAMERAINFO:
|
||||
return getCameraInfo(args[1], VMA(2), VMA(3));
|
||||
*/
|
||||
case CG_GET_ENTITY_TOKEN:
|
||||
return re.GetEntityToken( VMA(1), args[2] );
|
||||
case CG_R_INPVS:
|
||||
return re.inPVS( VMA(1), VMA(2) );
|
||||
#else
|
||||
case CG_R_REGISTERSHADER3D:
|
||||
return re.RegisterShader3D( VMA(1) );
|
||||
case CG_CVAR_SET_NO_MODIFY:
|
||||
return qfalse;
|
||||
#endif
|
||||
#ifdef XTRA
|
||||
case CG_R_REMAP_SHADER:
|
||||
re.RemapShader( VMA(1), VMA(2), VMA(3) );
|
||||
return 0;
|
||||
#endif
|
||||
default:
|
||||
assert(0);
|
||||
Com_Error( ERR_DROP, "Bad cgame system trap: %ld", (long int) args[0] );
|
||||
|
|
|
@ -89,10 +89,8 @@ Con_MessageMode_f
|
|||
void Con_MessageMode_f (void) {
|
||||
chat_playerNum = -1;
|
||||
chat_team = qfalse;
|
||||
#ifdef XTRA
|
||||
chat_class = qfalse;
|
||||
chat_tell = qfalse;
|
||||
#endif
|
||||
Field_Clear( &chatField );
|
||||
chatField.widthInChars = 30;
|
||||
|
||||
|
@ -107,10 +105,8 @@ Con_MessageMode2_f
|
|||
void Con_MessageMode2_f (void) {
|
||||
chat_playerNum = -1;
|
||||
chat_team = qtrue;
|
||||
#ifdef XTRA
|
||||
chat_class = qfalse;
|
||||
chat_tell = qfalse;
|
||||
#endif
|
||||
Field_Clear( &chatField );
|
||||
chatField.widthInChars = 25;
|
||||
Key_SetCatcher( Key_GetCatcher( ) ^ KEYCATCH_MESSAGE );
|
||||
|
@ -128,10 +124,8 @@ void Con_MessageMode3_f (void) {
|
|||
return;
|
||||
}
|
||||
chat_team = qfalse;
|
||||
#ifdef XTRA
|
||||
chat_class = qfalse;
|
||||
chat_tell = qtrue;
|
||||
#endif
|
||||
Field_Clear( &chatField );
|
||||
chatField.widthInChars = 30;
|
||||
Key_SetCatcher( Key_GetCatcher( ) ^ KEYCATCH_MESSAGE );
|
||||
|
@ -149,16 +143,13 @@ void Con_MessageMode4_f (void) {
|
|||
return;
|
||||
}
|
||||
chat_team = qfalse;
|
||||
#ifdef XTRA
|
||||
chat_class = qfalse;
|
||||
chat_tell = qfalse;
|
||||
#endif
|
||||
Field_Clear( &chatField );
|
||||
chatField.widthInChars = 30;
|
||||
Key_SetCatcher( Key_GetCatcher( ) ^ KEYCATCH_MESSAGE );
|
||||
}
|
||||
|
||||
#ifdef XTRA
|
||||
/*
|
||||
================
|
||||
Con_MessageMode5_f
|
||||
|
@ -173,7 +164,6 @@ void Con_MessageMode5_f (void) {
|
|||
chatField.widthInChars = 25;
|
||||
Key_SetCatcher( Key_GetCatcher( ) ^ KEYCATCH_MESSAGE );
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
================
|
||||
|
@ -369,9 +359,7 @@ void Con_Init (void) {
|
|||
Cmd_AddCommand ("messagemode2", Con_MessageMode2_f);
|
||||
Cmd_AddCommand ("messagemode3", Con_MessageMode3_f);
|
||||
Cmd_AddCommand ("messagemode4", Con_MessageMode4_f);
|
||||
#ifdef XTRA
|
||||
Cmd_AddCommand ("messagemode5", Con_MessageMode5_f);
|
||||
#endif
|
||||
Cmd_AddCommand ("clear", Con_Clear_f);
|
||||
Cmd_AddCommand ("condump", Con_Dump_f);
|
||||
Cmd_SetCommandCompletionFunc( "condump", Cmd_CompleteTxtName );
|
||||
|
@ -610,7 +598,6 @@ void Con_DrawNotify (void)
|
|||
// draw the chat line
|
||||
if ( Key_GetCatcher( ) & KEYCATCH_MESSAGE )
|
||||
{
|
||||
#ifdef XTRA
|
||||
if (chat_team)
|
||||
{
|
||||
SCR_DrawSmallString (8, v, "global:", 1.0f );
|
||||
|
@ -634,35 +621,6 @@ void Con_DrawNotify (void)
|
|||
|
||||
Field_Draw(&chatField, skip * SMALLCHAR_WIDTH, v,
|
||||
SCREEN_WIDTH - ( skip + 1 ) * SMALLCHAR_WIDTH, qtrue, qtrue);
|
||||
#elif defined(ELITEFORCE)
|
||||
if (chat_team)
|
||||
{
|
||||
SCR_DrawSmallString (8, v, "say_team:", 1.0f );
|
||||
skip = 11;
|
||||
}
|
||||
else
|
||||
{
|
||||
SCR_DrawSmallString (8, v, "say:", 1.0f );
|
||||
skip = 6;
|
||||
}
|
||||
|
||||
Field_Draw(&chatField, skip * SMALLCHAR_WIDTH, v,
|
||||
SCREEN_WIDTH - ( skip + 1 ) * SMALLCHAR_WIDTH, qtrue, qtrue);
|
||||
#else
|
||||
if (chat_team)
|
||||
{
|
||||
SCR_DrawBigString (8, v, "say_team:", 1.0f, qfalse );
|
||||
skip = 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
SCR_DrawBigString (8, v, "say:", 1.0f, qfalse );
|
||||
skip = 5;
|
||||
}
|
||||
|
||||
Field_BigDraw( &chatField, skip * BIGCHAR_WIDTH, v,
|
||||
SCREEN_WIDTH - ( skip + 1 ) * BIGCHAR_WIDTH, qtrue, qtrue );
|
||||
#endif
|
||||
|
||||
v += BIGCHAR_HEIGHT;
|
||||
}
|
||||
|
@ -704,13 +662,11 @@ void Con_DrawSolidConsole( float frac ) {
|
|||
y = 0;
|
||||
}
|
||||
else {
|
||||
#ifdef ELITEFORCE
|
||||
color[0] = 0;
|
||||
color[1] = 0;
|
||||
color[2] = 0;
|
||||
color[3] = 0.85;
|
||||
re.SetColor(color);
|
||||
#endif
|
||||
SCR_DrawPic( 0, 0, SCREEN_WIDTH, y, cls.consoleShader );
|
||||
}
|
||||
|
||||
|
|
|
@ -362,10 +362,6 @@ CL_MouseEvent
|
|||
void CL_MouseEvent( int dx, int dy, int time ) {
|
||||
if ( Key_GetCatcher( ) & KEYCATCH_UI ) {
|
||||
VM_Call( uivm, UI_MOUSE_EVENT, dx, dy );
|
||||
#ifndef ELITEFORCE
|
||||
} else if (Key_GetCatcher( ) & KEYCATCH_CGAME) {
|
||||
VM_Call (cgvm, CG_MOUSE_EVENT, dx, dy);
|
||||
#endif
|
||||
} else {
|
||||
cl.mouseDx[cl.mouseIndex] += dx;
|
||||
cl.mouseDy[cl.mouseIndex] += dy;
|
||||
|
@ -739,9 +735,6 @@ void CL_WritePacket( void ) {
|
|||
int packetNum;
|
||||
int oldPacketNum;
|
||||
int count;
|
||||
#ifndef ELITEFORCE
|
||||
int key;
|
||||
#endif
|
||||
|
||||
// don't send anything if playing back a demo
|
||||
if ( clc.demoplaying || clc.state == CA_CINEMATIC ) {
|
||||
|
@ -751,7 +744,6 @@ void CL_WritePacket( void ) {
|
|||
Com_Memset( &nullcmd, 0, sizeof(nullcmd) );
|
||||
oldcmd = &nullcmd;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(clc.compat)
|
||||
{
|
||||
MSG_InitOOB( &buf, data, sizeof(data) );
|
||||
|
@ -759,12 +751,9 @@ void CL_WritePacket( void ) {
|
|||
}
|
||||
else
|
||||
{
|
||||
#endif
|
||||
MSG_Init( &buf, data, sizeof(data) );
|
||||
MSG_Bitstream( &buf );
|
||||
#ifdef ELITEFORCE
|
||||
}
|
||||
#endif
|
||||
|
||||
// write the current serverId so the server
|
||||
// can tell if this is from the current gameState
|
||||
|
@ -866,24 +855,11 @@ void CL_WritePacket( void ) {
|
|||
// write the command count
|
||||
MSG_WriteByte( &buf, count );
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
// use the checksum feed in the key
|
||||
key = clc.checksumFeed;
|
||||
// also use the message acknowledge
|
||||
key ^= clc.serverMessageSequence;
|
||||
// also use the last acknowledged server command in the key
|
||||
key ^= MSG_HashKey(clc.serverCommands[ clc.serverCommandSequence & (MAX_RELIABLE_COMMANDS-1) ], 32);
|
||||
#endif
|
||||
|
||||
// write all the commands, including the predicted command
|
||||
for ( i = 0 ; i < count ; i++ ) {
|
||||
j = (cl.cmdNumber - count + i + 1) & CMD_MASK;
|
||||
cmd = &cl.cmds[j];
|
||||
#ifdef ELITEFORCE
|
||||
MSG_WriteDeltaUsercmd (&buf, oldcmd, cmd);
|
||||
#else
|
||||
MSG_WriteDeltaUsercmdKey (&buf, key, oldcmd, cmd);
|
||||
#endif
|
||||
oldcmd = cmd;
|
||||
}
|
||||
}
|
||||
|
@ -980,12 +956,10 @@ void CL_InitInput( void ) {
|
|||
Cmd_AddCommand ("-button3", IN_Button3Up);
|
||||
Cmd_AddCommand ("+button4", IN_Button4Down);
|
||||
Cmd_AddCommand ("-button4", IN_Button4Up);
|
||||
#ifdef ELITEFORCE
|
||||
Cmd_AddCommand ("+altattack", IN_Button5Down);
|
||||
Cmd_AddCommand ("-altattack", IN_Button5Up);
|
||||
Cmd_AddCommand ("+use", IN_Button6Down);
|
||||
Cmd_AddCommand ("-use", IN_Button6Up);
|
||||
#endif
|
||||
Cmd_AddCommand ("+button5", IN_Button5Down);
|
||||
Cmd_AddCommand ("-button5", IN_Button5Up);
|
||||
Cmd_AddCommand ("+button6", IN_Button6Down);
|
||||
|
@ -1063,12 +1037,10 @@ void CL_ShutdownInput(void)
|
|||
Cmd_RemoveCommand("-button3");
|
||||
Cmd_RemoveCommand("+button4");
|
||||
Cmd_RemoveCommand("-button4");
|
||||
#ifdef ELITEFORCE
|
||||
Cmd_RemoveCommand ("+altattack");
|
||||
Cmd_RemoveCommand ("-altattack");
|
||||
Cmd_RemoveCommand ("+use");
|
||||
Cmd_RemoveCommand ("-use");
|
||||
#endif
|
||||
Cmd_RemoveCommand("+button5");
|
||||
Cmd_RemoveCommand("-button5");
|
||||
Cmd_RemoveCommand("+button6");
|
||||
|
|
|
@ -36,10 +36,8 @@ int historyLine; // the line being displayed from history buffer
|
|||
field_t g_consoleField;
|
||||
field_t chatField;
|
||||
qboolean chat_team;
|
||||
#ifdef XTRA
|
||||
qboolean chat_class;
|
||||
qboolean chat_tell;
|
||||
#endif
|
||||
|
||||
|
||||
int chat_playerNum;
|
||||
|
@ -741,10 +739,8 @@ void Message_Key( int key ) {
|
|||
Com_sprintf( buffer, sizeof( buffer ), "tell %i \"%s\"\n", chat_playerNum, chatField.buffer );
|
||||
else if (chat_team)
|
||||
Com_sprintf( buffer, sizeof( buffer ), "say_team \"%s\"\n", chatField.buffer );
|
||||
#ifdef XTRA
|
||||
else if (chat_class)
|
||||
Com_sprintf( buffer, sizeof( buffer ), "say_class \"%s\"\n", chatField.buffer );
|
||||
#endif
|
||||
else
|
||||
Com_sprintf( buffer, sizeof( buffer ), "say \"%s\"\n", chatField.buffer );
|
||||
|
||||
|
@ -1218,14 +1214,6 @@ void CL_KeyDownEvent( int key, unsigned time )
|
|||
return;
|
||||
}
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
// escape always gets out of CGAME stuff
|
||||
if (Key_GetCatcher( ) & KEYCATCH_CGAME) {
|
||||
Key_SetCatcher( Key_GetCatcher( ) & ~KEYCATCH_CGAME );
|
||||
VM_Call (cgvm, CG_EVENT_HANDLING, CGAME_EVENT_NONE);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if ( !( Key_GetCatcher( ) & KEYCATCH_UI ) ) {
|
||||
if ( clc.state == CA_ACTIVE && !clc.demoplaying ) {
|
||||
VM_Call( uivm, UI_SET_ACTIVE_MENU, UIMENU_INGAME );
|
||||
|
@ -1237,11 +1225,8 @@ void CL_KeyDownEvent( int key, unsigned time )
|
|||
}
|
||||
return;
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
|
||||
VM_Call( uivm, UI_KEY_EVENT, key );
|
||||
#else
|
||||
VM_Call( uivm, UI_KEY_EVENT, key, qtrue );
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1252,12 +1237,6 @@ void CL_KeyDownEvent( int key, unsigned time )
|
|||
if ( uivm ) {
|
||||
VM_Call( uivm, UI_KEY_EVENT, key, qtrue );
|
||||
}
|
||||
#ifndef ELITEFORCE
|
||||
} else if ( Key_GetCatcher( ) & KEYCATCH_CGAME ) {
|
||||
if ( cgvm ) {
|
||||
VM_Call( cgvm, CG_KEY_EVENT, key, qtrue );
|
||||
}
|
||||
#endif
|
||||
} else if ( Key_GetCatcher( ) & KEYCATCH_MESSAGE ) {
|
||||
Message_Key( key );
|
||||
} else if ( clc.state == CA_DISCONNECTED ) {
|
||||
|
@ -1299,14 +1278,6 @@ void CL_KeyUpEvent( int key, unsigned time )
|
|||
//
|
||||
if( clc.state != CA_DISCONNECTED )
|
||||
CL_ParseBinding( key, qfalse, time );
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
if ( Key_GetCatcher( ) & KEYCATCH_UI && uivm ) {
|
||||
VM_Call( uivm, UI_KEY_EVENT, key, qfalse );
|
||||
} else if ( Key_GetCatcher( ) & KEYCATCH_CGAME && cgvm ) {
|
||||
VM_Call( cgvm, CG_KEY_EVENT, key, qfalse );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -24,114 +24,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "../qcommon/qcommon.h"
|
||||
#include "client.h"
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
#ifdef LEGACY_PROTOCOL
|
||||
/*
|
||||
==============
|
||||
CL_Netchan_Encode
|
||||
|
||||
// first 12 bytes of the data are always:
|
||||
long serverId;
|
||||
long messageAcknowledge;
|
||||
long reliableAcknowledge;
|
||||
|
||||
==============
|
||||
*/
|
||||
|
||||
static void CL_Netchan_Encode( msg_t *msg ) {
|
||||
int serverId, messageAcknowledge, reliableAcknowledge;
|
||||
int i, index, srdc, sbit, soob;
|
||||
byte key, *string;
|
||||
|
||||
if ( msg->cursize <= CL_ENCODE_START ) {
|
||||
return;
|
||||
}
|
||||
|
||||
srdc = msg->readcount;
|
||||
sbit = msg->bit;
|
||||
soob = msg->oob;
|
||||
|
||||
msg->bit = 0;
|
||||
msg->readcount = 0;
|
||||
msg->oob = 0;
|
||||
|
||||
serverId = MSG_ReadLong(msg);
|
||||
messageAcknowledge = MSG_ReadLong(msg);
|
||||
reliableAcknowledge = MSG_ReadLong(msg);
|
||||
|
||||
msg->oob = soob;
|
||||
msg->bit = sbit;
|
||||
msg->readcount = srdc;
|
||||
|
||||
string = (byte *)clc.serverCommands[ reliableAcknowledge & (MAX_RELIABLE_COMMANDS-1) ];
|
||||
index = 0;
|
||||
//
|
||||
key = clc.challenge ^ serverId ^ messageAcknowledge;
|
||||
for (i = CL_ENCODE_START; i < msg->cursize; i++) {
|
||||
// modify the key with the last received now acknowledged server command
|
||||
if (!string[index])
|
||||
index = 0;
|
||||
if (string[index] > 127 || string[index] == '%') {
|
||||
key ^= '.' << (i & 1);
|
||||
}
|
||||
else {
|
||||
key ^= string[index] << (i & 1);
|
||||
}
|
||||
index++;
|
||||
// encode the data with this key
|
||||
*(msg->data + i) = (*(msg->data + i)) ^ key;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
CL_Netchan_Decode
|
||||
|
||||
// first four bytes of the data are always:
|
||||
long reliableAcknowledge;
|
||||
|
||||
==============
|
||||
*/
|
||||
|
||||
static void CL_Netchan_Decode( msg_t *msg ) {
|
||||
long reliableAcknowledge, i, index;
|
||||
byte key, *string;
|
||||
int srdc, sbit, soob;
|
||||
|
||||
srdc = msg->readcount;
|
||||
sbit = msg->bit;
|
||||
soob = msg->oob;
|
||||
|
||||
msg->oob = 0;
|
||||
|
||||
reliableAcknowledge = MSG_ReadLong(msg);
|
||||
|
||||
msg->oob = soob;
|
||||
msg->bit = sbit;
|
||||
msg->readcount = srdc;
|
||||
|
||||
string = (byte *) clc.reliableCommands[ reliableAcknowledge & (MAX_RELIABLE_COMMANDS-1) ];
|
||||
index = 0;
|
||||
// xor the client challenge with the netchan sequence number (need something that changes every message)
|
||||
key = clc.challenge ^ LittleLong( *(unsigned *)msg->data );
|
||||
for (i = msg->readcount + CL_DECODE_START; i < msg->cursize; i++) {
|
||||
// modify the key with the last sent and with this message acknowledged client command
|
||||
if (!string[index])
|
||||
index = 0;
|
||||
if (string[index] > 127 || string[index] == '%') {
|
||||
key ^= '.' << (i & 1);
|
||||
}
|
||||
else {
|
||||
key ^= string[index] << (i & 1);
|
||||
}
|
||||
index++;
|
||||
// decode the data with this key
|
||||
*(msg->data + i) = *(msg->data + i) ^ key;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
=================
|
||||
CL_Netchan_TransmitNextFragment
|
||||
|
@ -154,18 +46,9 @@ CL_Netchan_Transmit
|
|||
================
|
||||
*/
|
||||
void CL_Netchan_Transmit( netchan_t *chan, msg_t* msg ) {
|
||||
#ifdef ELITEFORCE
|
||||
if(!chan->compat)
|
||||
#endif
|
||||
MSG_WriteByte( msg, clc_EOF );
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
#ifdef LEGACY_PROTOCOL
|
||||
if(chan->compat)
|
||||
CL_Netchan_Encode(msg);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Netchan_Transmit(chan, msg->cursize, msg->data);
|
||||
|
||||
// Transmit all fragments without delay
|
||||
|
@ -186,12 +69,6 @@ qboolean CL_Netchan_Process( netchan_t *chan, msg_t *msg ) {
|
|||
ret = Netchan_Process( chan, msg );
|
||||
if (!ret)
|
||||
return qfalse;
|
||||
#ifndef ELITEFORCE
|
||||
#ifdef LEGACY_PROTOCOL
|
||||
if(chan->compat)
|
||||
CL_Netchan_Decode(msg);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return qtrue;
|
||||
}
|
||||
|
|
|
@ -209,10 +209,8 @@ void CL_ParseSnapshot( msg_t *msg ) {
|
|||
|
||||
// get the reliable sequence acknowledge number
|
||||
// NOTE: now sent with all server to client messages
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
clc.reliableAcknowledge = MSG_ReadLong( msg );
|
||||
#endif
|
||||
|
||||
// read in the new snapshot to a temporary buffer
|
||||
// we will only copy to cl.snap if it is valid
|
||||
|
@ -488,11 +486,7 @@ void CL_ParseGamestate( msg_t *msg ) {
|
|||
while ( 1 ) {
|
||||
cmd = MSG_ReadByte( msg );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if((msg->compat && cmd <= 0) || cmd == svc_EOF)
|
||||
#else
|
||||
if ( cmd == svc_EOF )
|
||||
#endif
|
||||
break;
|
||||
|
||||
if ( cmd == svc_configstring ) {
|
||||
|
@ -526,15 +520,11 @@ void CL_ParseGamestate( msg_t *msg ) {
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
#endif
|
||||
clc.clientNum = MSG_ReadLong(msg);
|
||||
|
||||
// read the checksum feed
|
||||
#ifdef ELITEFORCE
|
||||
if(!clc.demoplaying || !msg->compat)
|
||||
#endif
|
||||
clc.checksumFeed = MSG_ReadLong( msg );
|
||||
|
||||
// save old gamedir
|
||||
|
@ -887,10 +877,8 @@ void CL_ParseServerMessage( msg_t *msg ) {
|
|||
Com_Printf ("------------------\n");
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
{
|
||||
#endif
|
||||
MSG_Bitstream(msg);
|
||||
|
||||
// get the reliable sequence acknowledge number
|
||||
|
@ -899,9 +887,7 @@ void CL_ParseServerMessage( msg_t *msg ) {
|
|||
if ( clc.reliableAcknowledge < clc.reliableSequence - MAX_RELIABLE_COMMANDS ) {
|
||||
clc.reliableAcknowledge = clc.reliableSequence;
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
}
|
||||
#endif
|
||||
|
||||
//
|
||||
// parse the message
|
||||
|
@ -914,11 +900,7 @@ void CL_ParseServerMessage( msg_t *msg ) {
|
|||
|
||||
cmd = MSG_ReadByte( msg );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(cmd == svc_EOF || (msg->compat && cmd == -1))
|
||||
#else
|
||||
if ( cmd == svc_EOF)
|
||||
#endif
|
||||
{
|
||||
SHOWNET( msg, "END OF MESSAGE" );
|
||||
break;
|
||||
|
|
|
@ -30,13 +30,11 @@ cvar_t *cl_debuggraph;
|
|||
cvar_t *cl_graphheight;
|
||||
cvar_t *cl_graphscale;
|
||||
cvar_t *cl_graphshift;
|
||||
#ifdef XTRA
|
||||
cvar_t *cl_drawtime;
|
||||
cvar_t *cl_drawtimeMode;
|
||||
cvar_t *cl_drawtimeX;
|
||||
cvar_t *cl_drawtimeY;
|
||||
cvar_t *cl_drawtimeSize;
|
||||
#endif
|
||||
|
||||
/*
|
||||
================
|
||||
|
@ -185,11 +183,7 @@ void SCR_DrawSmallChar( int x, int y, int ch ) {
|
|||
frow = row*0.0625;
|
||||
fcol = col*0.0625;
|
||||
vsize = 0.0625;
|
||||
#ifdef ELITEFORCE
|
||||
hsize = 0.03125;
|
||||
#else
|
||||
hsize = 0.0625;
|
||||
#endif
|
||||
|
||||
re.DrawStretchPic( x, y, SMALLCHAR_WIDTH, SMALLCHAR_HEIGHT,
|
||||
fcol, frow,
|
||||
|
@ -265,7 +259,6 @@ void SCR_DrawBigStringColor( int x, int y, const char *s, vec4_t color, qboolean
|
|||
SCR_DrawStringExt( x, y, BIGCHAR_WIDTH, s, color, qtrue, noColorEscape );
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
void SCR_DrawSmallString(int x, int y, const char *s, float alpha)
|
||||
{
|
||||
float color[4];
|
||||
|
@ -274,7 +267,6 @@ void SCR_DrawSmallString(int x, int y, const char *s, float alpha)
|
|||
color[3] = alpha;
|
||||
SCR_DrawSmallStringExt(x, y, s, color, qfalse, qfalse);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
==================
|
||||
|
@ -366,7 +358,6 @@ void SCR_DrawDemoRecording( void ) {
|
|||
SCR_DrawStringExt( 320 - strlen( string ) * 4, 20, 8, string, g_color_table[7], qtrue, qfalse );
|
||||
}
|
||||
|
||||
#ifdef XTRA
|
||||
/*
|
||||
=================
|
||||
SCR_DrawClock
|
||||
|
@ -385,7 +376,6 @@ void SCR_DrawClock( void ) {
|
|||
SCR_DrawStringExt( cl_drawtimeX->integer - strlen( string ) * 4, cl_drawtimeY->integer, cl_drawtimeSize->value, string, g_color_table[7], qtrue,qtrue);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef USE_VOIP
|
||||
/*
|
||||
|
@ -498,13 +488,11 @@ void SCR_Init( void ) {
|
|||
cl_graphheight = Cvar_Get ("graphheight", "32", CVAR_CHEAT);
|
||||
cl_graphscale = Cvar_Get ("graphscale", "1", CVAR_CHEAT);
|
||||
cl_graphshift = Cvar_Get ("graphshift", "0", CVAR_CHEAT);
|
||||
#ifdef XTRA
|
||||
cl_drawtime = Cvar_Get ("cl_drawtime", "0", CVAR_ARCHIVE);
|
||||
cl_drawtimeMode = Cvar_Get("cl_drawtimeMode", "0", CVAR_ARCHIVE);
|
||||
cl_drawtimeX = Cvar_Get("cl_drawtimeX", "320", CVAR_ARCHIVE);
|
||||
cl_drawtimeY = Cvar_Get("cl_drawtimeY", "11", CVAR_ARCHIVE);
|
||||
cl_drawtimeSize = Cvar_Get("cl_drawtimeSize", "12", CVAR_ARCHIVE);
|
||||
#endif
|
||||
|
||||
scr_initialized = qtrue;
|
||||
}
|
||||
|
@ -574,9 +562,7 @@ void SCR_DrawScreenField( stereoFrame_t stereoFrame ) {
|
|||
// always supply STEREO_CENTER as vieworg offset is now done by the engine.
|
||||
CL_CGameRendering(stereoFrame);
|
||||
SCR_DrawDemoRecording();
|
||||
#ifdef XTRA
|
||||
SCR_DrawClock();
|
||||
#endif
|
||||
#ifdef USE_VOIP
|
||||
SCR_DrawVoipMeter();
|
||||
#endif
|
||||
|
|
|
@ -84,128 +84,6 @@ void LAN_SaveServersToCache( void ) {
|
|||
FS_FCloseFile(fileOut);
|
||||
}
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
/*
|
||||
====================
|
||||
LAN_ResetPings
|
||||
====================
|
||||
*/
|
||||
static void LAN_ResetPings(int source) {
|
||||
int count,i;
|
||||
serverInfo_t *servers = NULL;
|
||||
count = 0;
|
||||
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
servers = &cls.localServers[0];
|
||||
count = MAX_OTHER_SERVERS;
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
servers = &cls.globalServers[0];
|
||||
count = MAX_GLOBAL_SERVERS;
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
servers = &cls.favoriteServers[0];
|
||||
count = MAX_OTHER_SERVERS;
|
||||
break;
|
||||
}
|
||||
if (servers) {
|
||||
for (i = 0; i < count; i++) {
|
||||
servers[i].ping = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
LAN_AddServer
|
||||
====================
|
||||
*/
|
||||
static int LAN_AddServer(int source, const char *name, const char *address) {
|
||||
int max, *count, i;
|
||||
netadr_t adr;
|
||||
serverInfo_t *servers = NULL;
|
||||
max = MAX_OTHER_SERVERS;
|
||||
count = NULL;
|
||||
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
count = &cls.numlocalservers;
|
||||
servers = &cls.localServers[0];
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
max = MAX_GLOBAL_SERVERS;
|
||||
count = &cls.numglobalservers;
|
||||
servers = &cls.globalServers[0];
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
count = &cls.numfavoriteservers;
|
||||
servers = &cls.favoriteServers[0];
|
||||
break;
|
||||
}
|
||||
if (servers && *count < max) {
|
||||
NET_StringToAdr( address, &adr, NA_IP );
|
||||
for ( i = 0; i < *count; i++ ) {
|
||||
if (NET_CompareAdr(servers[i].adr, adr)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= *count) {
|
||||
servers[*count].adr = adr;
|
||||
Q_strncpyz(servers[*count].hostName, name, sizeof(servers[*count].hostName));
|
||||
servers[*count].visible = qtrue;
|
||||
(*count)++;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
LAN_RemoveServer
|
||||
====================
|
||||
*/
|
||||
static void LAN_RemoveServer(int source, const char *addr) {
|
||||
int *count, i;
|
||||
serverInfo_t *servers = NULL;
|
||||
count = NULL;
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
count = &cls.numlocalservers;
|
||||
servers = &cls.localServers[0];
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
count = &cls.numglobalservers;
|
||||
servers = &cls.globalServers[0];
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
count = &cls.numfavoriteservers;
|
||||
servers = &cls.favoriteServers[0];
|
||||
break;
|
||||
}
|
||||
if (servers) {
|
||||
netadr_t comp;
|
||||
NET_StringToAdr( addr, &comp, NA_IP );
|
||||
for (i = 0; i < *count; i++) {
|
||||
if (NET_CompareAdr( comp, servers[i].adr)) {
|
||||
int j = i;
|
||||
while (j < *count - 1) {
|
||||
Com_Memcpy(&servers[j], &servers[j+1], sizeof(servers[j]));
|
||||
j++;
|
||||
}
|
||||
(*count)--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
====================
|
||||
LAN_GetServerCount
|
||||
|
@ -256,186 +134,6 @@ static void LAN_GetServerAddressString( int source, int n, char *buf, int buflen
|
|||
buf[0] = '\0';
|
||||
}
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
/*
|
||||
====================
|
||||
LAN_GetServerInfo
|
||||
====================
|
||||
*/
|
||||
static void LAN_GetServerInfo( int source, int n, char *buf, int buflen ) {
|
||||
char info[MAX_STRING_CHARS];
|
||||
serverInfo_t *server = NULL;
|
||||
info[0] = '\0';
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
server = &cls.localServers[n];
|
||||
}
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
if (n >= 0 && n < MAX_GLOBAL_SERVERS) {
|
||||
server = &cls.globalServers[n];
|
||||
}
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
server = &cls.favoriteServers[n];
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (server && buf) {
|
||||
buf[0] = '\0';
|
||||
Info_SetValueForKey( info, "hostname", server->hostName);
|
||||
Info_SetValueForKey( info, "mapname", server->mapName);
|
||||
Info_SetValueForKey( info, "clients", va("%i",server->clients));
|
||||
Info_SetValueForKey( info, "sv_maxclients", va("%i",server->maxClients));
|
||||
Info_SetValueForKey( info, "ping", va("%i",server->ping));
|
||||
Info_SetValueForKey( info, "minping", va("%i",server->minPing));
|
||||
Info_SetValueForKey( info, "maxping", va("%i",server->maxPing));
|
||||
Info_SetValueForKey( info, "game", server->game);
|
||||
Info_SetValueForKey( info, "gametype", va("%i",server->gameType));
|
||||
Info_SetValueForKey( info, "nettype", va("%i",server->netType));
|
||||
Info_SetValueForKey( info, "addr", NET_AdrToStringwPort(server->adr));
|
||||
Info_SetValueForKey( info, "punkbuster", va("%i", server->punkbuster));
|
||||
Info_SetValueForKey( info, "g_needpass", va("%i", server->g_needpass));
|
||||
Info_SetValueForKey( info, "g_humanplayers", va("%i", server->g_humanplayers));
|
||||
Q_strncpyz(buf, info, buflen);
|
||||
} else {
|
||||
if (buf) {
|
||||
buf[0] = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
LAN_GetServerPing
|
||||
====================
|
||||
*/
|
||||
static int LAN_GetServerPing( int source, int n ) {
|
||||
serverInfo_t *server = NULL;
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
server = &cls.localServers[n];
|
||||
}
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
if (n >= 0 && n < MAX_GLOBAL_SERVERS) {
|
||||
server = &cls.globalServers[n];
|
||||
}
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
server = &cls.favoriteServers[n];
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (server) {
|
||||
return server->ping;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
LAN_GetServerPtr
|
||||
====================
|
||||
*/
|
||||
static serverInfo_t *LAN_GetServerPtr( int source, int n ) {
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
return &cls.localServers[n];
|
||||
}
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
if (n >= 0 && n < MAX_GLOBAL_SERVERS) {
|
||||
return &cls.globalServers[n];
|
||||
}
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
return &cls.favoriteServers[n];
|
||||
}
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
/*
|
||||
====================
|
||||
LAN_CompareServers
|
||||
====================
|
||||
*/
|
||||
static int LAN_CompareServers( int source, int sortKey, int sortDir, int s1, int s2 ) {
|
||||
int res;
|
||||
serverInfo_t *server1, *server2;
|
||||
|
||||
server1 = LAN_GetServerPtr(source, s1);
|
||||
server2 = LAN_GetServerPtr(source, s2);
|
||||
if (!server1 || !server2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = 0;
|
||||
switch( sortKey ) {
|
||||
case SORT_HOST:
|
||||
res = Q_stricmp( server1->hostName, server2->hostName );
|
||||
break;
|
||||
|
||||
case SORT_MAP:
|
||||
res = Q_stricmp( server1->mapName, server2->mapName );
|
||||
break;
|
||||
case SORT_CLIENTS:
|
||||
if (server1->clients < server2->clients) {
|
||||
res = -1;
|
||||
}
|
||||
else if (server1->clients > server2->clients) {
|
||||
res = 1;
|
||||
}
|
||||
else {
|
||||
res = 0;
|
||||
}
|
||||
break;
|
||||
case SORT_GAME:
|
||||
if (server1->gameType < server2->gameType) {
|
||||
res = -1;
|
||||
}
|
||||
else if (server1->gameType > server2->gameType) {
|
||||
res = 1;
|
||||
}
|
||||
else {
|
||||
res = 0;
|
||||
}
|
||||
break;
|
||||
case SORT_PING:
|
||||
if (server1->ping < server2->ping) {
|
||||
res = -1;
|
||||
}
|
||||
else if (server1->ping > server2->ping) {
|
||||
res = 1;
|
||||
}
|
||||
else {
|
||||
res = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (sortDir) {
|
||||
if (res < 0)
|
||||
return 1;
|
||||
if (res > 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
====================
|
||||
LAN_GetPingQueueCount
|
||||
|
@ -472,87 +170,6 @@ static void LAN_GetPingInfo( int n, char *buf, int buflen ) {
|
|||
CL_GetPingInfo( n, buf, buflen );
|
||||
}
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
/*
|
||||
====================
|
||||
LAN_MarkServerVisible
|
||||
====================
|
||||
*/
|
||||
static void LAN_MarkServerVisible(int source, int n, qboolean visible ) {
|
||||
if (n == -1) {
|
||||
int count = MAX_OTHER_SERVERS;
|
||||
serverInfo_t *server = NULL;
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
server = &cls.localServers[0];
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
server = &cls.globalServers[0];
|
||||
count = MAX_GLOBAL_SERVERS;
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
server = &cls.favoriteServers[0];
|
||||
break;
|
||||
}
|
||||
if (server) {
|
||||
for (n = 0; n < count; n++) {
|
||||
server[n].visible = visible;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
cls.localServers[n].visible = visible;
|
||||
}
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
if (n >= 0 && n < MAX_GLOBAL_SERVERS) {
|
||||
cls.globalServers[n].visible = visible;
|
||||
}
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
cls.favoriteServers[n].visible = visible;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
=======================
|
||||
LAN_ServerIsVisible
|
||||
=======================
|
||||
*/
|
||||
static int LAN_ServerIsVisible(int source, int n ) {
|
||||
switch (source) {
|
||||
case AS_LOCAL :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
return cls.localServers[n].visible;
|
||||
}
|
||||
break;
|
||||
case AS_MPLAYER:
|
||||
case AS_GLOBAL :
|
||||
if (n >= 0 && n < MAX_GLOBAL_SERVERS) {
|
||||
return cls.globalServers[n].visible;
|
||||
}
|
||||
break;
|
||||
case AS_FAVORITES :
|
||||
if (n >= 0 && n < MAX_OTHER_SERVERS) {
|
||||
return cls.favoriteServers[n].visible;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return qfalse;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
=======================
|
||||
LAN_UpdateVisiblePings
|
||||
|
@ -626,29 +243,6 @@ static void Key_GetBindingBuf( int keynum, char *buf, int buflen ) {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
CLUI_GetCDKey
|
||||
====================
|
||||
*/
|
||||
#ifndef ELITEFORCE
|
||||
static void CLUI_GetCDKey( char *buf, int buflen ) {
|
||||
#ifndef STANDALONE
|
||||
cvar_t *fs;
|
||||
fs = Cvar_Get ("fs_game", "", CVAR_INIT|CVAR_SYSTEMINFO );
|
||||
if (UI_usesUniqueCDKey() && fs && fs->string[0] != 0) {
|
||||
Com_Memcpy( buf, &cl_cdkey[16], 16);
|
||||
buf[16] = 0;
|
||||
} else {
|
||||
Com_Memcpy( buf, cl_cdkey, 16);
|
||||
buf[16] = 0;
|
||||
}
|
||||
#else
|
||||
*buf = 0;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
====================
|
||||
CLUI_SetCDKey
|
||||
|
@ -664,12 +258,8 @@ static void CLUI_SetCDKey( char *buf ) {
|
|||
// set the flag so the fle will be written at the next opportunity
|
||||
cvar_modifiedFlags |= CVAR_ARCHIVE;
|
||||
} else {
|
||||
#ifdef ELITEFORCE
|
||||
Com_Memcpy(cl_cdkey, buf, 22);
|
||||
cl_cdkey[22] = '\0';
|
||||
#else
|
||||
Com_Memcpy( cl_cdkey, buf, 16 );
|
||||
#endif
|
||||
// set the flag so the fle will be written at the next opportunity
|
||||
cvar_modifiedFlags |= CVAR_ARCHIVE;
|
||||
}
|
||||
|
@ -803,11 +393,6 @@ intptr_t CL_UISystemCalls( intptr_t *args ) {
|
|||
|
||||
case UI_FS_GETFILELIST:
|
||||
return FS_GetFileList( VMA(1), VMA(2), VMA(3), args[4] );
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
case UI_FS_SEEK:
|
||||
return FS_Seek( args[1], args[2], args[3] );
|
||||
#endif
|
||||
|
||||
case UI_R_REGISTERMODEL:
|
||||
return re.RegisterModel( VMA(1) );
|
||||
|
@ -914,23 +499,6 @@ intptr_t CL_UISystemCalls( intptr_t *args ) {
|
|||
case UI_GETCONFIGSTRING:
|
||||
return GetConfigString( args[1], VMA(2), args[3] );
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
case UI_LAN_LOADCACHEDSERVERS:
|
||||
LAN_LoadCachedServers();
|
||||
return 0;
|
||||
|
||||
case UI_LAN_SAVECACHEDSERVERS:
|
||||
LAN_SaveServersToCache();
|
||||
return 0;
|
||||
|
||||
case UI_LAN_ADDSERVER:
|
||||
return LAN_AddServer(args[1], VMA(2), VMA(3));
|
||||
|
||||
case UI_LAN_REMOVESERVER:
|
||||
LAN_RemoveServer(args[1], VMA(2));
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
case UI_LAN_GETPINGQUEUECOUNT:
|
||||
return LAN_GetPingQueueCount();
|
||||
|
||||
|
@ -946,7 +514,6 @@ intptr_t CL_UISystemCalls( intptr_t *args ) {
|
|||
LAN_GetPingInfo( args[1], VMA(2), args[3] );
|
||||
return 0;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
case UI_LAN_GETLOCALSERVERCOUNT:
|
||||
return LAN_GetServerCount(AS_LOCAL);
|
||||
|
||||
|
@ -959,64 +526,14 @@ intptr_t CL_UISystemCalls( intptr_t *args ) {
|
|||
case UI_LAN_GETGLOBALSERVERADDRESSSTRING:
|
||||
LAN_GetServerAddressString( AS_GLOBAL, args[1], VMA(2), args[3] );
|
||||
return 0;
|
||||
#else
|
||||
case UI_LAN_GETSERVERCOUNT:
|
||||
return LAN_GetServerCount(args[1]);
|
||||
|
||||
case UI_LAN_GETSERVERADDRESSSTRING:
|
||||
LAN_GetServerAddressString( args[1], args[2], VMA(3), args[4] );
|
||||
return 0;
|
||||
case UI_LAN_GETSERVERINFO:
|
||||
LAN_GetServerInfo( args[1], args[2], VMA(3), args[4] );
|
||||
return 0;
|
||||
|
||||
case UI_LAN_GETSERVERPING:
|
||||
return LAN_GetServerPing( args[1], args[2] );
|
||||
|
||||
case UI_LAN_MARKSERVERVISIBLE:
|
||||
LAN_MarkServerVisible( args[1], args[2], args[3] );
|
||||
return 0;
|
||||
|
||||
case UI_LAN_SERVERISVISIBLE:
|
||||
return LAN_ServerIsVisible( args[1], args[2] );
|
||||
|
||||
case UI_LAN_UPDATEVISIBLEPINGS:
|
||||
return LAN_UpdateVisiblePings( args[1] );
|
||||
|
||||
case UI_LAN_RESETPINGS:
|
||||
LAN_ResetPings( args[1] );
|
||||
return 0;
|
||||
|
||||
case UI_LAN_SERVERSTATUS:
|
||||
return LAN_GetServerStatus( VMA(1), VMA(2), args[3] );
|
||||
|
||||
case UI_LAN_COMPARESERVERS:
|
||||
return LAN_CompareServers( args[1], args[2], args[3], args[4], args[5] );
|
||||
#endif
|
||||
|
||||
case UI_MEMORY_REMAINING:
|
||||
return Hunk_MemoryRemaining();
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
case UI_GET_CDKEY:
|
||||
CLUI_GetCDKey( VMA(1), args[2] );
|
||||
return 0;
|
||||
#endif
|
||||
case UI_SET_CDKEY:
|
||||
#ifndef STANDALONE
|
||||
CLUI_SetCDKey( VMA(1) );
|
||||
#ifdef ELITEFORCE
|
||||
return qtrue;
|
||||
#endif
|
||||
#endif
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case UI_SET_PBCLSTATUS:
|
||||
return 0;
|
||||
|
||||
case UI_R_REGISTERFONT:
|
||||
re.RegisterFont( VMA(1), args[2], VMA(3));
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
case UI_MEMSET:
|
||||
|
@ -1048,54 +565,6 @@ intptr_t CL_UISystemCalls( intptr_t *args ) {
|
|||
|
||||
case UI_CEIL:
|
||||
return FloatAsInt( ceil( VMF(1) ) );
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
case UI_PC_ADD_GLOBAL_DEFINE:
|
||||
return botlib_export->PC_AddGlobalDefine( VMA(1) );
|
||||
case UI_PC_LOAD_SOURCE:
|
||||
return botlib_export->PC_LoadSourceHandle( VMA(1) );
|
||||
case UI_PC_FREE_SOURCE:
|
||||
return botlib_export->PC_FreeSourceHandle( args[1] );
|
||||
case UI_PC_READ_TOKEN:
|
||||
return botlib_export->PC_ReadTokenHandle( args[1], VMA(2) );
|
||||
case UI_PC_SOURCE_FILE_AND_LINE:
|
||||
return botlib_export->PC_SourceFileAndLine( args[1], VMA(2), VMA(3) );
|
||||
|
||||
case UI_S_STOPBACKGROUNDTRACK:
|
||||
S_StopBackgroundTrack();
|
||||
return 0;
|
||||
case UI_S_STARTBACKGROUNDTRACK:
|
||||
S_StartBackgroundTrack( VMA(1), VMA(2));
|
||||
return 0;
|
||||
|
||||
case UI_REAL_TIME:
|
||||
return Com_RealTime( VMA(1) );
|
||||
|
||||
case UI_CIN_PLAYCINEMATIC:
|
||||
Com_DPrintf("UI_CIN_PlayCinematic\n");
|
||||
return CIN_PlayCinematic(VMA(1), args[2], args[3], args[4], args[5], args[6]);
|
||||
|
||||
case UI_CIN_STOPCINEMATIC:
|
||||
return CIN_StopCinematic(args[1]);
|
||||
|
||||
case UI_CIN_RUNCINEMATIC:
|
||||
return CIN_RunCinematic(args[1]);
|
||||
|
||||
case UI_CIN_DRAWCINEMATIC:
|
||||
CIN_DrawCinematic(args[1]);
|
||||
return 0;
|
||||
|
||||
case UI_CIN_SETEXTENTS:
|
||||
CIN_SetExtents(args[1], args[2], args[3], args[4], args[5]);
|
||||
return 0;
|
||||
|
||||
case UI_R_REMAP_SHADER:
|
||||
re.RemapShader( VMA(1), VMA(2), VMA(3) );
|
||||
return 0;
|
||||
|
||||
case UI_VERIFY_CDKEY:
|
||||
return CL_CDKeyValidate(VMA(1), VMA(2));
|
||||
#endif
|
||||
|
||||
default:
|
||||
Com_Error( ERR_DROP, "Bad UI system trap: %ld", (long int) args[0] );
|
||||
|
@ -1153,9 +622,7 @@ void CL_InitUI( void ) {
|
|||
// init for this gamestate
|
||||
VM_Call( uivm, UI_INIT, (clc.state >= CA_AUTHORIZING && clc.state < CA_ACTIVE));
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
Cvar_SetValue("ui_cdkeychecked2", 1);
|
||||
#endif
|
||||
}
|
||||
else if (v != UI_API_VERSION) {
|
||||
// Free uivm now, so UI_SHUTDOWN doesn't get called later.
|
||||
|
@ -1169,23 +636,13 @@ void CL_InitUI( void ) {
|
|||
// init for this gamestate
|
||||
VM_Call( uivm, UI_INIT, (clc.state >= CA_AUTHORIZING && clc.state < CA_ACTIVE) );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
Cvar_SetValue("ui_cdkeychecked2", 1);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef STANDALONE
|
||||
qboolean UI_usesUniqueCDKey( void ) {
|
||||
#ifdef ELITEFORCE
|
||||
return qfalse;
|
||||
#else
|
||||
if (uivm) {
|
||||
return (VM_Call( uivm, UI_HASUNIQUECDKEY) == qtrue);
|
||||
} else {
|
||||
return qfalse;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -568,9 +568,7 @@ void SCR_DrawNamedPic( float x, float y, float width, float height, const char *
|
|||
|
||||
void SCR_DrawBigString( int x, int y, const char *s, float alpha, qboolean noColorEscape ); // draws a string with embedded color control characters with fade
|
||||
void SCR_DrawBigStringColor( int x, int y, const char *s, vec4_t color, qboolean noColorEscape ); // ignores embedded color control characters
|
||||
#ifdef ELITEFORCE
|
||||
void SCR_DrawSmallString( int x, int y, const char *s, float alpha ); // draws a string with embedded color control characters with fade
|
||||
#endif
|
||||
void SCR_DrawSmallStringExt( int x, int y, const char *string, float *setColor, qboolean forceColor, qboolean noColorEscape );
|
||||
void SCR_DrawSmallChar( int x, int y, int ch );
|
||||
|
||||
|
|
|
@ -43,10 +43,8 @@ extern field_t g_consoleField;
|
|||
extern field_t chatField;
|
||||
extern int anykeydown;
|
||||
extern qboolean chat_team;
|
||||
#ifdef XTRA
|
||||
extern qboolean chat_class;
|
||||
extern qboolean chat_tell;
|
||||
#endif
|
||||
extern int chat_playerNum;
|
||||
|
||||
void Key_WriteBindings( fileHandle_t f );
|
||||
|
|
|
@ -28,7 +28,6 @@ static snd_codec_t *codecs;
|
|||
|
||||
static void *S_CodecGetSound(const char *filename, snd_info_t *info);
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
int sem = qtrue;
|
||||
#define VOXDIR "sound/voice"
|
||||
|
||||
|
@ -52,7 +51,6 @@ void *S_MangleNameEF(char *filename, snd_info_t *info)
|
|||
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
=================
|
||||
|
@ -74,11 +72,9 @@ static void *S_CodecGetSound(const char *filename, snd_info_t *info)
|
|||
|
||||
Q_strncpyz(localName, filename, MAX_QPATH);
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
rtn = S_MangleNameEF(localName, info);
|
||||
if(rtn)
|
||||
return rtn;
|
||||
#endif
|
||||
|
||||
ext = COM_GetExtension(localName);
|
||||
|
||||
|
|
|
@ -371,7 +371,6 @@ sfxHandle_t S_Base_RegisterSound( const char *name, qboolean compressed ) {
|
|||
S_memoryLoad(sfx);
|
||||
|
||||
if ( sfx->defaultSound ) {
|
||||
#ifdef ELITEFORCE
|
||||
int hash = S_HashSFXName(name);
|
||||
// free the slot up.
|
||||
sfx->soundName[0] = '\0';
|
||||
|
@ -379,9 +378,6 @@ sfxHandle_t S_Base_RegisterSound( const char *name, qboolean compressed ) {
|
|||
sfx->defaultSound = qfalse;
|
||||
// the new entry is head anyways.
|
||||
sfxHash[hash] = sfx->next;
|
||||
#else
|
||||
Com_Printf( S_COLOR_YELLOW "WARNING: could not find %s - using default\n", sfx->soundName );
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -403,11 +399,7 @@ void S_Base_BeginRegistration( void ) {
|
|||
Com_Memset(s_knownSfx, '\0', sizeof(s_knownSfx));
|
||||
Com_Memset(sfxHash, '\0', sizeof(sfx_t *) * LOOP_HASH);
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
S_Base_RegisterSound("sound/null.wav", qfalse); // Eliteforce specific sound.
|
||||
#else
|
||||
S_Base_RegisterSound("sound/feedback/hit.wav", qfalse); // changed to a sound in baseq3
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1357,12 +1349,6 @@ void S_Base_StartBackgroundTrack( const char *intro, const char *loop ){
|
|||
Com_Printf( S_COLOR_YELLOW "WARNING: couldn't open music file %s\n", intro );
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
if(s_backgroundStream->info.channels != 2 || s_backgroundStream->info.rate != 22050) {
|
||||
Com_Printf(S_COLOR_YELLOW "WARNING: music file %s is not 22k stereo\n", intro );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -323,12 +323,8 @@ static void S_AL_BufferLoad(sfxHandle_t sfx, qboolean cache)
|
|||
data = S_CodecLoad(curSfx->filename, &info);
|
||||
if(!data)
|
||||
{
|
||||
#ifdef ELITEFORCE
|
||||
S_AL_BufferUnload(sfx);
|
||||
*knownSfx[sfx].filename = '\0';
|
||||
#else
|
||||
S_AL_BufferUseDefault(sfx);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -435,11 +431,7 @@ qboolean S_AL_BufferInit( void )
|
|||
numSfx = 0;
|
||||
|
||||
// Load the default sound, and lock it
|
||||
#ifdef ELITEFORCE
|
||||
default_sfx = S_AL_BufferFind("sound/null.wav");
|
||||
#else
|
||||
default_sfx = S_AL_BufferFind("sound/feedback/hit.wav");
|
||||
#endif
|
||||
S_AL_BufferUse(default_sfx);
|
||||
knownSfx[default_sfx].isLocked = qtrue;
|
||||
|
||||
|
@ -488,10 +480,8 @@ sfxHandle_t S_AL_RegisterSound( const char *sample, qboolean compressed )
|
|||
if((!knownSfx[sfx].inMemory) && (!knownSfx[sfx].isDefault))
|
||||
S_AL_BufferLoad(sfx, s_alPrecache->integer);
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(! *knownSfx[sfx].filename)
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
knownSfx[sfx].lastUsedTime = Com_Milliseconds();
|
||||
|
||||
|
|
|
@ -262,11 +262,8 @@ typedef enum {
|
|||
#define EF_AWARD_ASSIST 0x00020000 // draw a assist sprite
|
||||
#define EF_AWARD_DENIED 0x00040000 // denied
|
||||
#define EF_TEAMVOTED 0x00080000 // already cast a team vote
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
#define EF_SHIELD_BOX_X 0x00000800
|
||||
#define EF_SHIELD_BOX_Y 0x00400000
|
||||
#endif
|
||||
|
||||
// NOTE: may not have more than 16
|
||||
typedef enum {
|
||||
|
|
|
@ -33,18 +33,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
// TTimo
|
||||
// https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=551
|
||||
#ifdef ELITEFORCE
|
||||
#define SVF_SHIELD_BBOX 0x00000002
|
||||
#define SVF_CLIENTMASK 0x00000004
|
||||
#else
|
||||
#define SVF_CLIENTMASK 0x00000002
|
||||
#endif
|
||||
|
||||
#define SVF_BOT 0x00000008 // set if the entity is a bot
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
#define SVF_ELIMINATED 0x00000010
|
||||
#endif
|
||||
|
||||
#define SVF_BROADCAST 0x00000020 // send to all connected clients
|
||||
#define SVF_PORTAL 0x00000040 // merge a second pvs at origin2 into snapshots
|
||||
|
@ -64,10 +56,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
|
||||
typedef struct {
|
||||
#ifndef ELITEFORCE
|
||||
entityState_t unused; // apparently this field was put here accidentally
|
||||
#endif
|
||||
|
||||
qboolean linked; // qfalse if not in any good cluster
|
||||
int linkcount;
|
||||
|
||||
|
@ -115,7 +103,6 @@ typedef struct {
|
|||
//
|
||||
// system traps provided by the main engine
|
||||
//
|
||||
#ifdef ELITEFORCE
|
||||
typedef enum {
|
||||
//============== general Quake services ==================
|
||||
|
||||
|
@ -388,294 +375,6 @@ typedef enum {
|
|||
BOTLIB_AI_REMOVE_FROM_AVOID_GOALS,
|
||||
BOTLIB_AI_PREDICT_VISIBLE_POSITION
|
||||
} gameImport_t;
|
||||
#else
|
||||
typedef enum {
|
||||
//============== general Quake services ==================
|
||||
|
||||
G_PRINT, // ( const char *string );
|
||||
// print message on the local console
|
||||
|
||||
G_ERROR, // ( const char *string );
|
||||
// abort the game
|
||||
|
||||
G_MILLISECONDS, // ( void );
|
||||
// get current time for profiling reasons
|
||||
// this should NOT be used for any game related tasks,
|
||||
// because it is not journaled
|
||||
|
||||
// console variable interaction
|
||||
G_CVAR_REGISTER, // ( vmCvar_t *vmCvar, const char *varName, const char *defaultValue, int flags );
|
||||
G_CVAR_UPDATE, // ( vmCvar_t *vmCvar );
|
||||
G_CVAR_SET, // ( const char *var_name, const char *value );
|
||||
G_CVAR_VARIABLE_INTEGER_VALUE, // ( const char *var_name );
|
||||
|
||||
G_CVAR_VARIABLE_STRING_BUFFER, // ( const char *var_name, char *buffer, int bufsize );
|
||||
|
||||
G_ARGC, // ( void );
|
||||
// ClientCommand and ServerCommand parameter access
|
||||
|
||||
G_ARGV, // ( int n, char *buffer, int bufferLength );
|
||||
|
||||
G_FS_FOPEN_FILE, // ( const char *qpath, fileHandle_t *file, fsMode_t mode );
|
||||
G_FS_READ, // ( void *buffer, int len, fileHandle_t f );
|
||||
G_FS_WRITE, // ( const void *buffer, int len, fileHandle_t f );
|
||||
G_FS_FCLOSE_FILE, // ( fileHandle_t f );
|
||||
|
||||
G_SEND_CONSOLE_COMMAND, // ( const char *text );
|
||||
// add commands to the console as if they were typed in
|
||||
// for map changing, etc
|
||||
|
||||
|
||||
//=========== server specific functionality =============
|
||||
|
||||
G_LOCATE_GAME_DATA, // ( gentity_t *gEnts, int numGEntities, int sizeofGEntity_t,
|
||||
// playerState_t *clients, int sizeofGameClient );
|
||||
// the game needs to let the server system know where and how big the gentities
|
||||
// are, so it can look at them directly without going through an interface
|
||||
|
||||
G_DROP_CLIENT, // ( int clientNum, const char *reason );
|
||||
// kick a client off the server with a message
|
||||
|
||||
G_SEND_SERVER_COMMAND, // ( int clientNum, const char *fmt, ... );
|
||||
// reliably sends a command string to be interpreted by the given
|
||||
// client. If clientNum is -1, it will be sent to all clients
|
||||
|
||||
G_SET_CONFIGSTRING, // ( int num, const char *string );
|
||||
// config strings hold all the index strings, and various other information
|
||||
// that is reliably communicated to all clients
|
||||
// All of the current configstrings are sent to clients when
|
||||
// they connect, and changes are sent to all connected clients.
|
||||
// All confgstrings are cleared at each level start.
|
||||
|
||||
G_GET_CONFIGSTRING, // ( int num, char *buffer, int bufferSize );
|
||||
|
||||
G_GET_USERINFO, // ( int num, char *buffer, int bufferSize );
|
||||
// userinfo strings are maintained by the server system, so they
|
||||
// are persistant across level loads, while all other game visible
|
||||
// data is completely reset
|
||||
|
||||
G_SET_USERINFO, // ( int num, const char *buffer );
|
||||
|
||||
G_GET_SERVERINFO, // ( char *buffer, int bufferSize );
|
||||
// the serverinfo info string has all the cvars visible to server browsers
|
||||
|
||||
G_SET_BRUSH_MODEL, // ( gentity_t *ent, const char *name );
|
||||
// sets mins and maxs based on the brushmodel name
|
||||
|
||||
G_TRACE, // ( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int passEntityNum, int contentmask );
|
||||
// collision detection against all linked entities
|
||||
|
||||
G_POINT_CONTENTS, // ( const vec3_t point, int passEntityNum );
|
||||
// point contents against all linked entities
|
||||
|
||||
G_IN_PVS, // ( const vec3_t p1, const vec3_t p2 );
|
||||
|
||||
G_IN_PVS_IGNORE_PORTALS, // ( const vec3_t p1, const vec3_t p2 );
|
||||
|
||||
G_ADJUST_AREA_PORTAL_STATE, // ( gentity_t *ent, qboolean open );
|
||||
|
||||
G_AREAS_CONNECTED, // ( int area1, int area2 );
|
||||
|
||||
G_LINKENTITY, // ( gentity_t *ent );
|
||||
// an entity will never be sent to a client or used for collision
|
||||
// if it is not passed to linkentity. If the size, position, or
|
||||
// solidity changes, it must be relinked.
|
||||
|
||||
G_UNLINKENTITY, // ( gentity_t *ent );
|
||||
// call before removing an interactive entity
|
||||
|
||||
G_ENTITIES_IN_BOX, // ( const vec3_t mins, const vec3_t maxs, gentity_t **list, int maxcount );
|
||||
// EntitiesInBox will return brush models based on their bounding box,
|
||||
// so exact determination must still be done with EntityContact
|
||||
|
||||
G_ENTITY_CONTACT, // ( const vec3_t mins, const vec3_t maxs, const gentity_t *ent );
|
||||
// perform an exact check against inline brush models of non-square shape
|
||||
|
||||
// access for bots to get and free a server client (FIXME?)
|
||||
G_BOT_ALLOCATE_CLIENT, // ( void );
|
||||
|
||||
G_BOT_FREE_CLIENT, // ( int clientNum );
|
||||
|
||||
G_GET_USERCMD, // ( int clientNum, usercmd_t *cmd )
|
||||
|
||||
G_GET_ENTITY_TOKEN, // qboolean ( char *buffer, int bufferSize )
|
||||
// Retrieves the next string token from the entity spawn text, returning
|
||||
// false when all tokens have been parsed.
|
||||
// This should only be done at GAME_INIT time.
|
||||
|
||||
G_FS_GETFILELIST,
|
||||
G_DEBUG_POLYGON_CREATE,
|
||||
G_DEBUG_POLYGON_DELETE,
|
||||
G_REAL_TIME,
|
||||
G_SNAPVECTOR,
|
||||
|
||||
G_TRACECAPSULE, // ( trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int passEntityNum, int contentmask );
|
||||
G_ENTITY_CONTACTCAPSULE, // ( const vec3_t mins, const vec3_t maxs, const gentity_t *ent );
|
||||
|
||||
// 1.32
|
||||
G_FS_SEEK,
|
||||
|
||||
BOTLIB_SETUP = 200, // ( void );
|
||||
BOTLIB_SHUTDOWN, // ( void );
|
||||
BOTLIB_LIBVAR_SET,
|
||||
BOTLIB_LIBVAR_GET,
|
||||
BOTLIB_PC_ADD_GLOBAL_DEFINE,
|
||||
BOTLIB_START_FRAME,
|
||||
BOTLIB_LOAD_MAP,
|
||||
BOTLIB_UPDATENTITY,
|
||||
BOTLIB_TEST,
|
||||
|
||||
BOTLIB_GET_SNAPSHOT_ENTITY, // ( int client, int ent );
|
||||
BOTLIB_GET_CONSOLE_MESSAGE, // ( int client, char *message, int size );
|
||||
BOTLIB_USER_COMMAND, // ( int client, usercmd_t *ucmd );
|
||||
|
||||
BOTLIB_AAS_ENABLE_ROUTING_AREA = 300,
|
||||
BOTLIB_AAS_BBOX_AREAS,
|
||||
BOTLIB_AAS_AREA_INFO,
|
||||
BOTLIB_AAS_ENTITY_INFO,
|
||||
|
||||
BOTLIB_AAS_INITIALIZED,
|
||||
BOTLIB_AAS_PRESENCE_TYPE_BOUNDING_BOX,
|
||||
BOTLIB_AAS_TIME,
|
||||
|
||||
BOTLIB_AAS_POINT_AREA_NUM,
|
||||
BOTLIB_AAS_TRACE_AREAS,
|
||||
|
||||
BOTLIB_AAS_POINT_CONTENTS,
|
||||
BOTLIB_AAS_NEXT_BSP_ENTITY,
|
||||
BOTLIB_AAS_VALUE_FOR_BSP_EPAIR_KEY,
|
||||
BOTLIB_AAS_VECTOR_FOR_BSP_EPAIR_KEY,
|
||||
BOTLIB_AAS_FLOAT_FOR_BSP_EPAIR_KEY,
|
||||
BOTLIB_AAS_INT_FOR_BSP_EPAIR_KEY,
|
||||
|
||||
BOTLIB_AAS_AREA_REACHABILITY,
|
||||
|
||||
BOTLIB_AAS_AREA_TRAVEL_TIME_TO_GOAL_AREA,
|
||||
|
||||
BOTLIB_AAS_SWIMMING,
|
||||
BOTLIB_AAS_PREDICT_CLIENT_MOVEMENT,
|
||||
|
||||
BOTLIB_EA_SAY = 400,
|
||||
BOTLIB_EA_SAY_TEAM,
|
||||
BOTLIB_EA_COMMAND,
|
||||
|
||||
BOTLIB_EA_ACTION,
|
||||
BOTLIB_EA_GESTURE,
|
||||
BOTLIB_EA_TALK,
|
||||
BOTLIB_EA_ATTACK,
|
||||
BOTLIB_EA_USE,
|
||||
BOTLIB_EA_RESPAWN,
|
||||
BOTLIB_EA_CROUCH,
|
||||
BOTLIB_EA_MOVE_UP,
|
||||
BOTLIB_EA_MOVE_DOWN,
|
||||
BOTLIB_EA_MOVE_FORWARD,
|
||||
BOTLIB_EA_MOVE_BACK,
|
||||
BOTLIB_EA_MOVE_LEFT,
|
||||
BOTLIB_EA_MOVE_RIGHT,
|
||||
|
||||
BOTLIB_EA_SELECT_WEAPON,
|
||||
BOTLIB_EA_JUMP,
|
||||
BOTLIB_EA_DELAYED_JUMP,
|
||||
BOTLIB_EA_MOVE,
|
||||
BOTLIB_EA_VIEW,
|
||||
|
||||
BOTLIB_EA_END_REGULAR,
|
||||
BOTLIB_EA_GET_INPUT,
|
||||
BOTLIB_EA_RESET_INPUT,
|
||||
|
||||
|
||||
BOTLIB_AI_LOAD_CHARACTER = 500,
|
||||
BOTLIB_AI_FREE_CHARACTER,
|
||||
BOTLIB_AI_CHARACTERISTIC_FLOAT,
|
||||
BOTLIB_AI_CHARACTERISTIC_BFLOAT,
|
||||
BOTLIB_AI_CHARACTERISTIC_INTEGER,
|
||||
BOTLIB_AI_CHARACTERISTIC_BINTEGER,
|
||||
BOTLIB_AI_CHARACTERISTIC_STRING,
|
||||
|
||||
BOTLIB_AI_ALLOC_CHAT_STATE,
|
||||
BOTLIB_AI_FREE_CHAT_STATE,
|
||||
BOTLIB_AI_QUEUE_CONSOLE_MESSAGE,
|
||||
BOTLIB_AI_REMOVE_CONSOLE_MESSAGE,
|
||||
BOTLIB_AI_NEXT_CONSOLE_MESSAGE,
|
||||
BOTLIB_AI_NUM_CONSOLE_MESSAGE,
|
||||
BOTLIB_AI_INITIAL_CHAT,
|
||||
BOTLIB_AI_REPLY_CHAT,
|
||||
BOTLIB_AI_CHAT_LENGTH,
|
||||
BOTLIB_AI_ENTER_CHAT,
|
||||
BOTLIB_AI_STRING_CONTAINS,
|
||||
BOTLIB_AI_FIND_MATCH,
|
||||
BOTLIB_AI_MATCH_VARIABLE,
|
||||
BOTLIB_AI_UNIFY_WHITE_SPACES,
|
||||
BOTLIB_AI_REPLACE_SYNONYMS,
|
||||
BOTLIB_AI_LOAD_CHAT_FILE,
|
||||
BOTLIB_AI_SET_CHAT_GENDER,
|
||||
BOTLIB_AI_SET_CHAT_NAME,
|
||||
|
||||
BOTLIB_AI_RESET_GOAL_STATE,
|
||||
BOTLIB_AI_RESET_AVOID_GOALS,
|
||||
BOTLIB_AI_PUSH_GOAL,
|
||||
BOTLIB_AI_POP_GOAL,
|
||||
BOTLIB_AI_EMPTY_GOAL_STACK,
|
||||
BOTLIB_AI_DUMP_AVOID_GOALS,
|
||||
BOTLIB_AI_DUMP_GOAL_STACK,
|
||||
BOTLIB_AI_GOAL_NAME,
|
||||
BOTLIB_AI_GET_TOP_GOAL,
|
||||
BOTLIB_AI_GET_SECOND_GOAL,
|
||||
BOTLIB_AI_CHOOSE_LTG_ITEM,
|
||||
BOTLIB_AI_CHOOSE_NBG_ITEM,
|
||||
BOTLIB_AI_TOUCHING_GOAL,
|
||||
BOTLIB_AI_ITEM_GOAL_IN_VIS_BUT_NOT_VISIBLE,
|
||||
BOTLIB_AI_GET_LEVEL_ITEM_GOAL,
|
||||
BOTLIB_AI_AVOID_GOAL_TIME,
|
||||
BOTLIB_AI_INIT_LEVEL_ITEMS,
|
||||
BOTLIB_AI_UPDATE_ENTITY_ITEMS,
|
||||
BOTLIB_AI_LOAD_ITEM_WEIGHTS,
|
||||
BOTLIB_AI_FREE_ITEM_WEIGHTS,
|
||||
BOTLIB_AI_SAVE_GOAL_FUZZY_LOGIC,
|
||||
BOTLIB_AI_ALLOC_GOAL_STATE,
|
||||
BOTLIB_AI_FREE_GOAL_STATE,
|
||||
|
||||
BOTLIB_AI_RESET_MOVE_STATE,
|
||||
BOTLIB_AI_MOVE_TO_GOAL,
|
||||
BOTLIB_AI_MOVE_IN_DIRECTION,
|
||||
BOTLIB_AI_RESET_AVOID_REACH,
|
||||
BOTLIB_AI_RESET_LAST_AVOID_REACH,
|
||||
BOTLIB_AI_REACHABILITY_AREA,
|
||||
BOTLIB_AI_MOVEMENT_VIEW_TARGET,
|
||||
BOTLIB_AI_ALLOC_MOVE_STATE,
|
||||
BOTLIB_AI_FREE_MOVE_STATE,
|
||||
BOTLIB_AI_INIT_MOVE_STATE,
|
||||
|
||||
BOTLIB_AI_CHOOSE_BEST_FIGHT_WEAPON,
|
||||
BOTLIB_AI_GET_WEAPON_INFO,
|
||||
BOTLIB_AI_LOAD_WEAPON_WEIGHTS,
|
||||
BOTLIB_AI_ALLOC_WEAPON_STATE,
|
||||
BOTLIB_AI_FREE_WEAPON_STATE,
|
||||
BOTLIB_AI_RESET_WEAPON_STATE,
|
||||
|
||||
BOTLIB_AI_GENETIC_PARENTS_AND_CHILD_SELECTION,
|
||||
BOTLIB_AI_INTERBREED_GOAL_FUZZY_LOGIC,
|
||||
BOTLIB_AI_MUTATE_GOAL_FUZZY_LOGIC,
|
||||
BOTLIB_AI_GET_NEXT_CAMP_SPOT_GOAL,
|
||||
BOTLIB_AI_GET_MAP_LOCATION_GOAL,
|
||||
BOTLIB_AI_NUM_INITIAL_CHATS,
|
||||
BOTLIB_AI_GET_CHAT_MESSAGE,
|
||||
BOTLIB_AI_REMOVE_FROM_AVOID_GOALS,
|
||||
BOTLIB_AI_PREDICT_VISIBLE_POSITION,
|
||||
|
||||
BOTLIB_AI_SET_AVOID_GOAL_TIME,
|
||||
BOTLIB_AI_ADD_AVOID_SPOT,
|
||||
BOTLIB_AAS_ALTERNATIVE_ROUTE_GOAL,
|
||||
BOTLIB_AAS_PREDICT_ROUTE,
|
||||
BOTLIB_AAS_POINT_REACHABILITY_AREA_INDEX,
|
||||
|
||||
BOTLIB_PC_LOAD_SOURCE,
|
||||
BOTLIB_PC_FREE_SOURCE,
|
||||
BOTLIB_PC_READ_TOKEN,
|
||||
BOTLIB_PC_SOURCE_FILE_AND_LINE
|
||||
|
||||
} gameImport_t;
|
||||
#endif
|
||||
|
||||
//
|
||||
// functions exported by the game subsystem
|
||||
|
|
|
@ -24,15 +24,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "qcommon.h"
|
||||
#include "cm_polylib.h"
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
#define MAX_SUBMODELS 8192
|
||||
#define BOX_MODEL_HANDLE MAX_SUBMODELS-1
|
||||
#define CAPSULE_MODEL_HANDLE BOX_MODEL_HANDLE-2
|
||||
#else
|
||||
#define MAX_SUBMODELS 256
|
||||
#define BOX_MODEL_HANDLE 255
|
||||
#define CAPSULE_MODEL_HANDLE 254
|
||||
#endif
|
||||
#define MAX_SUBMODELS 8192
|
||||
#define BOX_MODEL_HANDLE MAX_SUBMODELS-1
|
||||
#define CAPSULE_MODEL_HANDLE BOX_MODEL_HANDLE-2
|
||||
|
||||
typedef struct {
|
||||
cplane_t *plane;
|
||||
|
|
|
@ -1157,12 +1157,12 @@ void CM_Trace( trace_t *results, const vec3_t start, const vec3_t end, vec3_t mi
|
|||
// fill in a default trace
|
||||
Com_Memset( &tw, 0, sizeof(tw) );
|
||||
tw.trace.fraction = 1; // assume it goes the entire distance until shown otherwise
|
||||
#ifdef ELITEFORCE
|
||||
|
||||
// obviously Raven fucked this up. They seem to expect a SURF_NOIMPACT flag if the trace
|
||||
// went through to the end, or the game will crash when firing the dreadnought weapon and
|
||||
// it doesn't hit anything.
|
||||
tw.trace.surfaceFlags = SURF_NOIMPACT;
|
||||
#endif
|
||||
|
||||
VectorCopy(origin, tw.modelOrigin);
|
||||
|
||||
if (!cm.numNodes) {
|
||||
|
|
|
@ -31,25 +31,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include <winsock.h>
|
||||
#endif
|
||||
|
||||
int demo_protocols[] =
|
||||
#ifdef XTRA
|
||||
{ 25, 59, 0 };
|
||||
#elif defined(ELITEFORCE)
|
||||
{ 0 };
|
||||
#else
|
||||
{ 67, 66, 0 };
|
||||
#endif
|
||||
int demo_protocols[] = { 25, 59, 0 };
|
||||
|
||||
#define MAX_NUM_ARGVS 50
|
||||
|
||||
#define MIN_DEDICATED_COMHUNKMEGS 1
|
||||
#define MIN_COMHUNKMEGS 56
|
||||
#define DEF_COMHUNKMEGS 64
|
||||
#ifdef ELITEFORCE
|
||||
#define DEF_COMZONEMEGS 32
|
||||
#else
|
||||
#define DEF_COMZONEMEGS 24
|
||||
#endif
|
||||
|
||||
#define DEF_COMHUNKMEGS_S XSTRING(DEF_COMHUNKMEGS)
|
||||
#define DEF_COMZONEMEGS_S XSTRING(DEF_COMZONEMEGS)
|
||||
|
@ -2462,14 +2451,10 @@ void Com_ReadCDKey( const char *filename ) {
|
|||
fileHandle_t f;
|
||||
char buffer[33];
|
||||
char fbuffer[MAX_OSPATH];
|
||||
#ifdef ELITEFORCE
|
||||
int index = 0;
|
||||
char curchar;
|
||||
|
||||
sprintf(fbuffer, "%s/efq3.key", filename);
|
||||
#else
|
||||
Com_sprintf(fbuffer, sizeof(fbuffer), "%s/q3key", filename);
|
||||
#endif
|
||||
|
||||
FS_SV_FOpenFileRead( fbuffer, &f );
|
||||
if ( !f ) {
|
||||
|
@ -2479,7 +2464,6 @@ void Com_ReadCDKey( const char *filename ) {
|
|||
|
||||
Com_Memset( buffer, 0, sizeof(buffer) );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
// check for the normal CD key
|
||||
while(index < 16)
|
||||
{
|
||||
|
@ -2531,15 +2515,6 @@ void Com_ReadCDKey( const char *filename ) {
|
|||
}
|
||||
|
||||
Q_strncpyz(cl_cdkey, buffer, index+1);
|
||||
#else
|
||||
FS_Read( buffer, 16, f );
|
||||
FS_FCloseFile( f );
|
||||
|
||||
if (CL_CDKeyValidate(buffer, NULL)) {
|
||||
Q_strncpyz( cl_cdkey, buffer, 17 );
|
||||
} else {
|
||||
Q_strncpyz( cl_cdkey, " ", 17 );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -2582,30 +2557,15 @@ Com_WriteCDKey
|
|||
static void Com_WriteCDKey( const char *filename, const char *ikey ) {
|
||||
fileHandle_t f;
|
||||
char fbuffer[MAX_OSPATH];
|
||||
#ifdef ELITEFORCE
|
||||
char key[23];
|
||||
#else
|
||||
char key[17];
|
||||
#endif
|
||||
#ifndef _WIN32
|
||||
mode_t savedumask;
|
||||
#endif
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
sprintf(fbuffer, "%s/efq3.key", filename);
|
||||
#else
|
||||
Com_sprintf(fbuffer, sizeof(fbuffer), "%s/q3key", filename);
|
||||
#endif
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
Q_strncpyz( key, ikey, 23 );
|
||||
key[22] = '\0';
|
||||
#else
|
||||
Q_strncpyz( key, ikey, 17 );
|
||||
if(!CL_CDKeyValidate(key, NULL) ) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
savedumask = umask(0077);
|
||||
|
@ -2616,11 +2576,7 @@ static void Com_WriteCDKey( const char *filename, const char *ikey ) {
|
|||
goto out;
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
FS_Write( key, strlen(key), f );
|
||||
#else
|
||||
FS_Write( key, 16, f );
|
||||
#endif
|
||||
|
||||
FS_Printf( f, "\n// generated by quake, do not modify\r\n" );
|
||||
FS_Printf( f, "// Do not give this file to ANYONE.\r\n" );
|
||||
|
@ -2633,7 +2589,6 @@ out:
|
|||
#endif
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // STANDALONE
|
||||
|
||||
|
@ -2893,18 +2848,7 @@ void Com_Init( char *commandLine ) {
|
|||
|
||||
// add + commands from command line
|
||||
if ( !Com_AddStartupCommands() ) {
|
||||
#ifdef ELITEFORCE
|
||||
Cvar_Set( com_introPlayed->name, "1" );
|
||||
#else
|
||||
// if the user didn't give any commands, run default action
|
||||
if ( !com_dedicated->integer ) {
|
||||
Cbuf_AddText ("cinematic idlogo.RoQ\n");
|
||||
if( !com_introPlayed->integer ) {
|
||||
Cvar_Set( com_introPlayed->name, "1" );
|
||||
Cvar_Set( "nextmap", "cinematic intro.RoQ" );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// start in full screen ui mode
|
||||
|
|
|
@ -174,7 +174,6 @@ or configs will never get loaded from disk!
|
|||
|
||||
// every time a new demo pk3 file is built, this checksum must be updated.
|
||||
// the easiest way to get it is to just run the game and see what it spits out
|
||||
#ifdef ELITEFORCE
|
||||
static const unsigned pak_checksums[] =
|
||||
{
|
||||
3376297517u,
|
||||
|
@ -182,20 +181,6 @@ static const unsigned pak_checksums[] =
|
|||
3960871590u,
|
||||
1592359207u,
|
||||
};
|
||||
#else
|
||||
#define DEMO_PAK0_CHECKSUM 2985612116u
|
||||
static const unsigned int pak_checksums[] = {
|
||||
1566731103u,
|
||||
298122907u,
|
||||
412165236u,
|
||||
2991495316u,
|
||||
1197932710u,
|
||||
4087071573u,
|
||||
3709064859u,
|
||||
908855077u,
|
||||
977125798u
|
||||
};
|
||||
#endif
|
||||
|
||||
static const unsigned int missionpak_checksums[] =
|
||||
{
|
||||
|
@ -2971,21 +2956,10 @@ qboolean FS_ComparePaks( char *neededpaks, int len, qboolean dlstring ) {
|
|||
havepak = qfalse;
|
||||
|
||||
// never autodownload any of the id paks
|
||||
#ifdef ELITEFORCE
|
||||
#ifndef STANDALONE
|
||||
if(FS_idPak(fs_serverReferencedPakNames[i], BASEGAME, NUM_ID_PAKS))
|
||||
continue;
|
||||
#endif
|
||||
#else
|
||||
if(FS_idPak(fs_serverReferencedPakNames[i], BASEGAME, NUM_ID_PAKS)
|
||||
#ifndef STANDALONE
|
||||
|| FS_idPak(fs_serverReferencedPakNames[i], BASETA, NUM_TA_PAKS)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Make sure the server cannot make us write to non-quake3 directories.
|
||||
if(FS_CheckDirTraversal(fs_serverReferencedPakNames[i]))
|
||||
|
@ -3256,7 +3230,6 @@ static void FS_Startup( const char *gameName )
|
|||
}
|
||||
|
||||
#ifndef STANDALONE
|
||||
#ifdef ELITEFORCE
|
||||
/*
|
||||
===================
|
||||
FS_CheckPak0
|
||||
|
@ -3373,204 +3346,6 @@ static void FS_CheckPak0( void )
|
|||
Com_Error(ERR_FATAL, "%s", errorText);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
===================
|
||||
FS_CheckPak0
|
||||
|
||||
Checks that pak0.pk3 is present and its checksum is correct
|
||||
Note: If you're building a game that doesn't depend on the
|
||||
Q3 media pak0.pk3, you'll want to remove this function
|
||||
===================
|
||||
*/
|
||||
|
||||
static void FS_CheckPak0( void )
|
||||
{
|
||||
searchpath_t *path;
|
||||
pack_t *curpack;
|
||||
qboolean founddemo = qfalse;
|
||||
unsigned int foundPak = 0, foundTA = 0;
|
||||
|
||||
for( path = fs_searchpaths; path; path = path->next )
|
||||
{
|
||||
const char* pakBasename = path->pack->pakBasename;
|
||||
|
||||
if(!path->pack)
|
||||
continue;
|
||||
|
||||
curpack = path->pack;
|
||||
|
||||
if(!Q_stricmpn( curpack->pakGamename, "demoq3", MAX_OSPATH )
|
||||
&& !Q_stricmpn( pakBasename, "pak0", MAX_OSPATH ))
|
||||
{
|
||||
if(curpack->checksum == DEMO_PAK0_CHECKSUM)
|
||||
founddemo = qtrue;
|
||||
}
|
||||
|
||||
else if(!Q_stricmpn( curpack->pakGamename, BASEGAME, MAX_OSPATH )
|
||||
&& strlen(pakBasename) == 4 && !Q_stricmpn( pakBasename, "pak", 3 )
|
||||
&& pakBasename[3] >= '0' && pakBasename[3] <= '0' + NUM_ID_PAKS - 1)
|
||||
{
|
||||
if( curpack->checksum != pak_checksums[pakBasename[3]-'0'] )
|
||||
{
|
||||
if(pakBasename[3] == '0')
|
||||
{
|
||||
|
||||
Com_Printf("\n\n"
|
||||
"**************************************************\n"
|
||||
"WARNING: " BASEGAME "/pak0.pk3 is present but its checksum (%u)\n"
|
||||
"is not correct. Please re-copy pak0.pk3 from your\n"
|
||||
"legitimate Q3 CDROM.\n"
|
||||
"**************************************************\n\n\n",
|
||||
curpack->checksum );
|
||||
}
|
||||
else
|
||||
{
|
||||
Com_Printf("\n\n"
|
||||
"**************************************************\n"
|
||||
"WARNING: " BASEGAME "/pak%d.pk3 is present but its checksum (%u)\n"
|
||||
"is not correct. Please re-install the point release\n"
|
||||
"**************************************************\n\n\n",
|
||||
pakBasename[3]-'0', curpack->checksum );
|
||||
}
|
||||
}
|
||||
|
||||
foundPak |= 1<<(pakBasename[3]-'0');
|
||||
}
|
||||
else if(!Q_stricmpn(curpack->pakGamename, BASETA, MAX_OSPATH)
|
||||
&& strlen(pakBasename) == 4 && !Q_stricmpn(pakBasename, "pak", 3)
|
||||
&& pakBasename[3] >= '0' && pakBasename[3] <= '0' + NUM_TA_PAKS - 1)
|
||||
|
||||
{
|
||||
if(curpack->checksum != missionpak_checksums[pakBasename[3]-'0'])
|
||||
{
|
||||
Com_Printf("\n\n"
|
||||
"**************************************************\n"
|
||||
"WARNING: " BASETA "/pak%d.pk3 is present but its checksum (%u)\n"
|
||||
"is not correct. Please re-install Team Arena\n"
|
||||
"**************************************************\n\n\n",
|
||||
pakBasename[3]-'0', curpack->checksum );
|
||||
}
|
||||
|
||||
foundTA |= 1 << (pakBasename[3]-'0');
|
||||
}
|
||||
else
|
||||
{
|
||||
int index;
|
||||
|
||||
// Finally check whether this pak's checksum is listed because the user tried
|
||||
// to trick us by renaming the file, and set foundPak's highest bit to indicate this case.
|
||||
|
||||
for(index = 0; index < ARRAY_LEN(pak_checksums); index++)
|
||||
{
|
||||
if(curpack->checksum == pak_checksums[index])
|
||||
{
|
||||
Com_Printf("\n\n"
|
||||
"**************************************************\n"
|
||||
"WARNING: %s is renamed pak file %s%cpak%d.pk3\n"
|
||||
"Running in standalone mode won't work\n"
|
||||
"Please rename, or remove this file\n"
|
||||
"**************************************************\n\n\n",
|
||||
curpack->pakFilename, BASEGAME, PATH_SEP, index);
|
||||
|
||||
|
||||
foundPak |= 0x80000000;
|
||||
}
|
||||
}
|
||||
|
||||
for(index = 0; index < ARRAY_LEN(missionpak_checksums); index++)
|
||||
{
|
||||
if(curpack->checksum == missionpak_checksums[index])
|
||||
{
|
||||
Com_Printf("\n\n"
|
||||
"**************************************************\n"
|
||||
"WARNING: %s is renamed pak file %s%cpak%d.pk3\n"
|
||||
"Running in standalone mode won't work\n"
|
||||
"Please rename, or remove this file\n"
|
||||
"**************************************************\n\n\n",
|
||||
curpack->pakFilename, BASETA, PATH_SEP, index);
|
||||
|
||||
foundTA |= 0x80000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!foundPak && !foundTA && Q_stricmp(com_basegame->string, BASEGAME))
|
||||
{
|
||||
Cvar_Set("com_standalone", "1");
|
||||
}
|
||||
else
|
||||
Cvar_Set("com_standalone", "0");
|
||||
|
||||
if(!com_standalone->integer)
|
||||
{
|
||||
if(!(foundPak & 0x01))
|
||||
{
|
||||
if(founddemo)
|
||||
{
|
||||
Com_Printf( "\n\n"
|
||||
"**************************************************\n"
|
||||
"WARNING: It looks like you're using pak0.pk3\n"
|
||||
"from the demo. This may work fine, but it is not\n"
|
||||
"guaranteed or supported.\n"
|
||||
"**************************************************\n\n\n" );
|
||||
|
||||
foundPak |= 0x01;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!com_standalone->integer && (foundPak & 0x1ff) != 0x1ff)
|
||||
{
|
||||
char errorText[MAX_STRING_CHARS] = "";
|
||||
|
||||
if((foundPak & 0x01) != 0x01)
|
||||
{
|
||||
Q_strcat(errorText, sizeof(errorText),
|
||||
"\"pak0.pk3\" is missing. Please copy it "
|
||||
"from your legitimate Q3 CDROM. ");
|
||||
}
|
||||
if((foundPak & 0x1fe) != 0x1fe)
|
||||
{
|
||||
Q_strcat(errorText, sizeof(errorText),
|
||||
"Point Release files are missing. Please "
|
||||
"re-install the 1.32 point release. ");
|
||||
}
|
||||
|
||||
Q_strcat(errorText, sizeof(errorText),
|
||||
va("Also check that your ioq3 executable is in "
|
||||
"the correct place and that every file "
|
||||
"in the \"%s\" directory is present and readable", BASEGAME));
|
||||
|
||||
Com_Error(ERR_FATAL, "%s", errorText);
|
||||
}
|
||||
|
||||
if(!com_standalone->integer && foundTA && (foundTA & 0x0f) != 0x0f)
|
||||
{
|
||||
char errorText[MAX_STRING_CHARS] = "";
|
||||
|
||||
if((foundTA & 0x01) != 0x01)
|
||||
{
|
||||
Com_sprintf(errorText, sizeof(errorText),
|
||||
"\"" BASETA "%cpak0.pk3\" is missing. Please copy it "
|
||||
"from your legitimate Quake 3 Team Arena CDROM. ", PATH_SEP);
|
||||
}
|
||||
|
||||
if((foundTA & 0x0e) != 0x0e)
|
||||
{
|
||||
Q_strcat(errorText, sizeof(errorText),
|
||||
"Team Arena Point Release files are missing. Please "
|
||||
"re-install the latest Team Arena point release.");
|
||||
}
|
||||
|
||||
Com_Error(ERR_FATAL, "%s", errorText);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
@ -103,14 +103,12 @@ bit functions
|
|||
|
||||
int overflows;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
// Apparently, eliteforce only sends stuff like strings on 1 byte boundaries.
|
||||
void MSG_RoundBits(msg_t *msg)
|
||||
{
|
||||
if(msg->bit & 0x07)
|
||||
msg->bit = ++msg->readcount << 3;
|
||||
}
|
||||
#endif
|
||||
|
||||
// negative bit values include signs
|
||||
void MSG_WriteBits( msg_t *msg, int value, int bits ) {
|
||||
|
@ -149,7 +147,6 @@ void MSG_WriteBits( msg_t *msg, int value, int bits ) {
|
|||
bits = -bits;
|
||||
}
|
||||
if (msg->oob) {
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
{
|
||||
int write, leftover, nbits = bits, location;
|
||||
|
@ -177,7 +174,6 @@ void MSG_WriteBits( msg_t *msg, int value, int bits ) {
|
|||
msg->cursize = (msg->bit >> 3) + ((msg->bit & 0x07) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if(bits==8)
|
||||
{
|
||||
|
@ -243,7 +239,6 @@ int MSG_ReadBits( msg_t *msg, int bits ) {
|
|||
}
|
||||
|
||||
if (msg->oob) {
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
{
|
||||
nbits = 0;
|
||||
|
@ -264,7 +259,6 @@ int MSG_ReadBits( msg_t *msg, int bits ) {
|
|||
msg->readcount = (msg->bit >> 3) + ((msg->bit & 0x07) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if(bits==8)
|
||||
{
|
||||
|
@ -347,14 +341,12 @@ void MSG_WriteByte( msg_t *sb, int c ) {
|
|||
void MSG_WriteData( msg_t *buf, const void *data, int length ) {
|
||||
int i;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(buf->compat)
|
||||
{
|
||||
// Start writing on a whole-byte boundary
|
||||
if(buf->bit & 0x07)
|
||||
buf->bit = ++buf->cursize << 3;
|
||||
}
|
||||
#endif
|
||||
|
||||
for(i=0;i<length;i++) {
|
||||
MSG_WriteByte(buf, ((byte *)data)[i]);
|
||||
|
@ -384,11 +376,7 @@ void MSG_WriteString( msg_t *sb, const char *s ) {
|
|||
if ( !s ) {
|
||||
MSG_WriteData (sb, "", 1);
|
||||
} else {
|
||||
#ifdef ELITEFORCE
|
||||
int l;
|
||||
#else
|
||||
int l,i;
|
||||
#endif
|
||||
char string[MAX_STRING_CHARS];
|
||||
|
||||
l = strlen( s );
|
||||
|
@ -399,15 +387,6 @@ void MSG_WriteString( msg_t *sb, const char *s ) {
|
|||
}
|
||||
Q_strncpyz( string, s, sizeof( string ) );
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
// get rid of 0x80+ and '%' chars, because old clients don't like them
|
||||
for ( i = 0 ; i < l ; i++ ) {
|
||||
if ( ((byte *)string)[i] > 127 || string[i] == '%' ) {
|
||||
string[i] = '.';
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
MSG_WriteData (sb, string, l+1);
|
||||
}
|
||||
}
|
||||
|
@ -416,11 +395,7 @@ void MSG_WriteBigString( msg_t *sb, const char *s ) {
|
|||
if ( !s ) {
|
||||
MSG_WriteData (sb, "", 1);
|
||||
} else {
|
||||
#ifdef ELITEFORCE
|
||||
int l;
|
||||
#else
|
||||
int l,i;
|
||||
#endif
|
||||
char string[BIG_INFO_STRING];
|
||||
|
||||
l = strlen( s );
|
||||
|
@ -431,15 +406,6 @@ void MSG_WriteBigString( msg_t *sb, const char *s ) {
|
|||
}
|
||||
Q_strncpyz( string, s, sizeof( string ) );
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
// get rid of 0x80+ and '%' chars, because old clients don't like them
|
||||
for ( i = 0 ; i < l ; i++ ) {
|
||||
if ( ((byte *)string)[i] > 127 || string[i] == '%' ) {
|
||||
string[i] = '.';
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
MSG_WriteData (sb, string, l+1);
|
||||
}
|
||||
}
|
||||
|
@ -529,10 +495,8 @@ char *MSG_ReadString( msg_t *msg ) {
|
|||
static char string[MAX_STRING_CHARS];
|
||||
int l,c;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
MSG_RoundBits(msg);
|
||||
#endif
|
||||
|
||||
l = 0;
|
||||
do {
|
||||
|
@ -544,12 +508,6 @@ char *MSG_ReadString( msg_t *msg ) {
|
|||
if ( c == '%' ) {
|
||||
c = '.';
|
||||
}
|
||||
#ifndef ELITEFORCE
|
||||
// don't allow higher ascii values
|
||||
if ( c > 127 ) {
|
||||
c = '.';
|
||||
}
|
||||
#endif
|
||||
string[l] = c;
|
||||
l++;
|
||||
} while (l < sizeof(string)-1);
|
||||
|
@ -562,11 +520,9 @@ char *MSG_ReadString( msg_t *msg ) {
|
|||
char *MSG_ReadBigString( msg_t *msg ) {
|
||||
static char string[BIG_INFO_STRING];
|
||||
int l,c;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
|
||||
if(msg->compat)
|
||||
MSG_RoundBits(msg);
|
||||
#endif
|
||||
|
||||
|
||||
l = 0;
|
||||
|
@ -579,12 +535,6 @@ char *MSG_ReadBigString( msg_t *msg ) {
|
|||
if ( c == '%' ) {
|
||||
c = '.';
|
||||
}
|
||||
#ifndef ELITEFORCE
|
||||
// don't allow higher ascii values
|
||||
if ( c > 127 ) {
|
||||
c = '.';
|
||||
}
|
||||
#endif
|
||||
|
||||
string[l] = c;
|
||||
l++;
|
||||
|
@ -599,10 +549,8 @@ char *MSG_ReadStringLine( msg_t *msg ) {
|
|||
static char string[MAX_STRING_CHARS];
|
||||
int l,c;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
MSG_RoundBits(msg);
|
||||
#endif
|
||||
|
||||
l = 0;
|
||||
do {
|
||||
|
@ -614,12 +562,7 @@ char *MSG_ReadStringLine( msg_t *msg ) {
|
|||
if ( c == '%' ) {
|
||||
c = '.';
|
||||
}
|
||||
#ifndef ELITEFORCE
|
||||
// don't allow higher ascii values
|
||||
if ( c > 127 ) {
|
||||
c = '.';
|
||||
}
|
||||
#endif
|
||||
|
||||
string[l] = c;
|
||||
l++;
|
||||
} while (l < sizeof(string)-1);
|
||||
|
@ -636,10 +579,8 @@ float MSG_ReadAngle16( msg_t *msg ) {
|
|||
void MSG_ReadData( msg_t *msg, void *data, int len ) {
|
||||
int i;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
MSG_RoundBits(msg);
|
||||
#endif
|
||||
|
||||
for (i=0 ; i<len ; i++) {
|
||||
((byte *)data)[i] = MSG_ReadByte (msg);
|
||||
|
@ -805,11 +746,7 @@ void MSG_WriteDeltaUsercmd( msg_t *msg, usercmd_t *from, usercmd_t *to ) {
|
|||
MSG_WriteDelta( msg, from->forwardmove, to->forwardmove, 8 );
|
||||
MSG_WriteDelta( msg, from->rightmove, to->rightmove, 8 );
|
||||
MSG_WriteDelta( msg, from->upmove, to->upmove, 8 );
|
||||
#ifdef ELITEFORCE
|
||||
MSG_WriteDelta( msg, from->buttons, to->buttons, 8 );
|
||||
#else
|
||||
MSG_WriteDelta( msg, from->buttons, to->buttons, 16 );
|
||||
#endif
|
||||
MSG_WriteDelta( msg, from->weapon, to->weapon, 8 );
|
||||
}
|
||||
|
||||
|
@ -837,11 +774,7 @@ void MSG_ReadDeltaUsercmd( msg_t *msg, usercmd_t *from, usercmd_t *to ) {
|
|||
to->upmove = MSG_ReadDelta( msg, from->upmove, 8);
|
||||
if( to->upmove == -128)
|
||||
to->upmove = -127;
|
||||
#ifdef ELITEFORCE
|
||||
to->buttons = MSG_ReadDelta( msg, from->buttons, 8);
|
||||
#else
|
||||
to->buttons = MSG_ReadDelta( msg, from->buttons, 16);
|
||||
#endif
|
||||
to->weapon = MSG_ReadDelta( msg, from->weapon, 8);
|
||||
}
|
||||
|
||||
|
@ -878,11 +811,7 @@ void MSG_WriteDeltaUsercmdKey( msg_t *msg, int key, usercmd_t *from, usercmd_t *
|
|||
MSG_WriteDeltaKey( msg, key, from->forwardmove, to->forwardmove, 8 );
|
||||
MSG_WriteDeltaKey( msg, key, from->rightmove, to->rightmove, 8 );
|
||||
MSG_WriteDeltaKey( msg, key, from->upmove, to->upmove, 8 );
|
||||
#ifdef ELITEFORCE
|
||||
MSG_WriteDeltaKey( msg, key, from->buttons, to->buttons, 8 );
|
||||
#else
|
||||
MSG_WriteDeltaKey( msg, key, from->buttons, to->buttons, 16 );
|
||||
#endif
|
||||
MSG_WriteDeltaKey( msg, key, from->weapon, to->weapon, 8 );
|
||||
}
|
||||
|
||||
|
@ -912,11 +841,7 @@ void MSG_ReadDeltaUsercmdKey( msg_t *msg, int key, usercmd_t *from, usercmd_t *t
|
|||
to->upmove = MSG_ReadDeltaKey( msg, key, from->upmove, 8);
|
||||
if(to->upmove == -128)
|
||||
to->upmove = -127;
|
||||
#ifdef ELITEFORCE
|
||||
to->buttons = MSG_ReadDeltaKey( msg, key, from->buttons, 8);
|
||||
#else
|
||||
to->buttons = MSG_ReadDeltaKey( msg, key, from->buttons, 16);
|
||||
#endif
|
||||
to->weapon = MSG_ReadDeltaKey( msg, key, from->weapon, 8);
|
||||
} else {
|
||||
to->angles[0] = from->angles[0];
|
||||
|
@ -938,7 +863,6 @@ entityState_t communication
|
|||
=============================================================================
|
||||
*/
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
#define PVECTOR_BITS 5 // amount of bits we need to reference all predefined vectors.
|
||||
#define PVECTOR_BYTES 8 // length of predefined vector.
|
||||
#define PVECTOR_NUM (1 << PVECTOR_BITS) - 1 // number of existing predefined vectors.
|
||||
|
@ -978,7 +902,6 @@ byte pVectors[PVECTOR_NUM][PVECTOR_BYTES] =
|
|||
{0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00},
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
=================
|
||||
|
@ -1005,7 +928,6 @@ typedef struct {
|
|||
// using the stringizing operator to save typing...
|
||||
#define NETF(x) #x,(size_t)&((entityState_t*)0)->x
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
netField_t entityStateFields[] =
|
||||
{
|
||||
{ NETF(eType), 8 },
|
||||
|
@ -1059,62 +981,6 @@ netField_t entityStateFields[] =
|
|||
{ NETF(legsAnim), 8 },
|
||||
{ NETF(torsoAnim), 8 },
|
||||
};
|
||||
#else
|
||||
netField_t entityStateFields[] =
|
||||
{
|
||||
{ NETF(pos.trTime), 32 },
|
||||
{ NETF(pos.trBase[0]), 0 },
|
||||
{ NETF(pos.trBase[1]), 0 },
|
||||
{ NETF(pos.trDelta[0]), 0 },
|
||||
{ NETF(pos.trDelta[1]), 0 },
|
||||
{ NETF(pos.trBase[2]), 0 },
|
||||
{ NETF(apos.trBase[1]), 0 },
|
||||
{ NETF(pos.trDelta[2]), 0 },
|
||||
{ NETF(apos.trBase[0]), 0 },
|
||||
{ NETF(event), 10 },
|
||||
{ NETF(angles2[1]), 0 },
|
||||
{ NETF(eType), 8 },
|
||||
{ NETF(torsoAnim), 8 },
|
||||
{ NETF(eventParm), 8 },
|
||||
{ NETF(legsAnim), 8 },
|
||||
{ NETF(groundEntityNum), GENTITYNUM_BITS },
|
||||
{ NETF(pos.trType), 8 },
|
||||
{ NETF(eFlags), 27 },
|
||||
{ NETF(otherEntityNum), GENTITYNUM_BITS },
|
||||
{ NETF(weapon), 8 },
|
||||
{ NETF(clientNum), 8 },
|
||||
{ NETF(angles[1]), 0 },
|
||||
{ NETF(pos.trDuration), 32 },
|
||||
{ NETF(apos.trType), 8 },
|
||||
{ NETF(origin[0]), 0 },
|
||||
{ NETF(origin[1]), 0 },
|
||||
{ NETF(origin[2]), 0 },
|
||||
{ NETF(solid), 24 },
|
||||
{ NETF(powerups), MAX_POWERUPS },
|
||||
{ NETF(modelindex), MODELNUM_BITS },
|
||||
{ NETF(otherEntityNum2), GENTITYNUM_BITS },
|
||||
{ NETF(loopSound), 8 },
|
||||
{ NETF(generic1), 8 },
|
||||
{ NETF(origin2[2]), 0 },
|
||||
{ NETF(origin2[0]), 0 },
|
||||
{ NETF(origin2[1]), 0 },
|
||||
{ NETF(modelindex2), MODELNUM_BITS },
|
||||
{ NETF(angles[0]), 0 },
|
||||
{ NETF(time), 32 },
|
||||
{ NETF(apos.trTime), 32 },
|
||||
{ NETF(apos.trDuration), 32 },
|
||||
{ NETF(apos.trBase[2]), 0 },
|
||||
{ NETF(apos.trDelta[0]), 0 },
|
||||
{ NETF(apos.trDelta[1]), 0 },
|
||||
{ NETF(apos.trDelta[2]), 0 },
|
||||
{ NETF(time2), 32 },
|
||||
{ NETF(angles[2]), 0 },
|
||||
{ NETF(angles2[0]), 0 },
|
||||
{ NETF(angles2[2]), 0 },
|
||||
{ NETF(constantLight), 32 },
|
||||
{ NETF(frame), 16 }
|
||||
};
|
||||
#endif
|
||||
|
||||
// if (int)f == f and (int)f + ( 1<<(FLOAT_INT_BITS-1) ) < ( 1 << FLOAT_INT_BITS )
|
||||
// the float will be sent with FLOAT_INT_BITS, otherwise all 32 bits will be sent
|
||||
|
@ -1140,10 +1006,8 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
int trunc;
|
||||
float fullFloat;
|
||||
int *fromF, *toF;
|
||||
#ifdef ELITEFORCE
|
||||
byte vector[PVECTOR_BYTES];
|
||||
int vectorIndex = -1;
|
||||
#endif
|
||||
byte vector[PVECTOR_BYTES];
|
||||
int vectorIndex = -1;
|
||||
|
||||
numFields = ARRAY_LEN( entityStateFields );
|
||||
|
||||
|
@ -1167,10 +1031,8 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
Com_Error (ERR_FATAL, "MSG_WriteDeltaEntity: Bad entity number: %i", to->number );
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
Com_Memset(vector, 0, sizeof(vector));
|
||||
#endif
|
||||
|
||||
lc = 0;
|
||||
// build the change vector as bytes so it is endien independent
|
||||
|
@ -1178,22 +1040,15 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
fromF = (int *)( (byte *)from + field->offset );
|
||||
toF = (int *)( (byte *)to + field->offset );
|
||||
if ( *fromF != *toF ) {
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
vector[i >> 3] |= 1 << (i & 0x07);
|
||||
else
|
||||
#endif
|
||||
lc = i+1;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if((msg->compat && !((int *) vector)[0] && !((int *) vector)[1]) || (!msg->compat && !lc))
|
||||
{
|
||||
#else
|
||||
if ( lc == 0 )
|
||||
{
|
||||
#endif
|
||||
// nothing at all changed
|
||||
if ( !force ) {
|
||||
return; // nothing at all
|
||||
|
@ -1205,7 +1060,6 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
{
|
||||
for (i = 0; i < PVECTOR_NUM; i++)
|
||||
|
@ -1219,13 +1073,11 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
MSG_WriteBits( msg, to->number, GENTITYNUM_BITS );
|
||||
MSG_WriteBits( msg, 0, 1 ); // not removed
|
||||
MSG_WriteBits( msg, 1, 1 ); // we have a delta
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
{
|
||||
MSG_WriteBits(msg, vectorIndex, PVECTOR_BITS);
|
||||
|
@ -1240,31 +1092,22 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
|
||||
}
|
||||
else
|
||||
#endif
|
||||
MSG_WriteByte( msg, lc ); // # of changes
|
||||
|
||||
oldsize += numFields;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
for ( i = 0, field = entityStateFields ; msg->compat ? (i < numFields) : (i < lc) ; i++, field++ ) {
|
||||
#else
|
||||
for ( i = 0, field = entityStateFields ; i < lc ; i++, field++ ) {
|
||||
#endif
|
||||
fromF = (int *)( (byte *)from + field->offset );
|
||||
toF = (int *)( (byte *)to + field->offset );
|
||||
|
||||
if ( *fromF == *toF ) {
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
#endif
|
||||
MSG_WriteBits( msg, 0, 1 ); // no change
|
||||
continue;
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
#endif
|
||||
MSG_WriteBits( msg, 1, 1 ); // changed
|
||||
|
||||
if ( field->bits == 0 ) {
|
||||
|
@ -1272,18 +1115,12 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
fullFloat = *(float *)toF;
|
||||
trunc = (int)fullFloat;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat && fullFloat == 0.0f)
|
||||
#else
|
||||
if (fullFloat == 0.0f)
|
||||
#endif
|
||||
{
|
||||
MSG_WriteBits( msg, 0, 1 );
|
||||
oldsize += FLOAT_INT_BITS;
|
||||
} else {
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
#endif
|
||||
MSG_WriteBits( msg, 1, 1 );
|
||||
|
||||
if ( trunc == fullFloat && trunc + FLOAT_INT_BIAS >= 0 &&
|
||||
|
@ -1298,12 +1135,10 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
}
|
||||
}
|
||||
} else {
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
MSG_WriteBits(msg, *toF, field->bits);
|
||||
else
|
||||
{
|
||||
#endif
|
||||
if (*toF == 0)
|
||||
MSG_WriteBits( msg, 0, 1 );
|
||||
else
|
||||
|
@ -1312,9 +1147,7 @@ void MSG_WriteDeltaEntity( msg_t *msg, struct entityState_s *from, struct entity
|
|||
// integer
|
||||
MSG_WriteBits( msg, *toF, field->bits );
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1340,11 +1173,9 @@ void MSG_ReadDeltaEntity( msg_t *msg, entityState_t *from, entityState_t *to,
|
|||
int print;
|
||||
int trunc;
|
||||
int startBit, endBit;
|
||||
#ifdef ELITEFORCE
|
||||
int vectorIndex;
|
||||
byte vector_space[PVECTOR_BYTES];
|
||||
byte *vector = vector_space;
|
||||
#endif
|
||||
int vectorIndex;
|
||||
byte vector_space[PVECTOR_BYTES];
|
||||
byte *vector = vector_space;
|
||||
|
||||
if ( number < 0 || number >= MAX_GENTITIES) {
|
||||
Com_Error( ERR_DROP, "Bad delta entity number: %i", number );
|
||||
|
@ -1374,9 +1205,7 @@ void MSG_ReadDeltaEntity( msg_t *msg, entityState_t *from, entityState_t *to,
|
|||
}
|
||||
|
||||
numFields = ARRAY_LEN( entityStateFields );
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
#endif
|
||||
lc = MSG_ReadByte(msg);
|
||||
|
||||
if ( lc > numFields || lc < 0 ) {
|
||||
|
@ -1394,7 +1223,6 @@ void MSG_ReadDeltaEntity( msg_t *msg, entityState_t *from, entityState_t *to,
|
|||
|
||||
to->number = number;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
{
|
||||
// Read in the vector index and check whether there is a predefined one or not.
|
||||
|
@ -1412,28 +1240,17 @@ void MSG_ReadDeltaEntity( msg_t *msg, entityState_t *from, entityState_t *to,
|
|||
}
|
||||
|
||||
for ( i = 0, field = entityStateFields ; msg->compat ? (i < numFields) : (i < lc) ; i++, field++ ) {
|
||||
#else
|
||||
for ( i = 0, field = entityStateFields ; i < lc ; i++, field++ ) {
|
||||
#endif
|
||||
fromF = (int *)( (byte *)from + field->offset );
|
||||
toF = (int *)( (byte *)to + field->offset );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if((msg->compat && ! (vector[i >> 3] & (1 << (i & 7)) )) || (!msg->compat && !MSG_ReadBits(msg, 1)))
|
||||
#else
|
||||
if ( ! MSG_ReadBits( msg, 1 ) )
|
||||
#endif
|
||||
{
|
||||
// no change
|
||||
*toF = *fromF;
|
||||
} else {
|
||||
if ( field->bits == 0 ) {
|
||||
// float
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat && !MSG_ReadBits( msg, 1 ))
|
||||
#else
|
||||
if ( MSG_ReadBits( msg, 1 ) == 0 )
|
||||
#endif
|
||||
*(float *)toF = 0.0f;
|
||||
else {
|
||||
if ( MSG_ReadBits( msg, 1 ) == 0 ) {
|
||||
|
@ -1454,11 +1271,7 @@ void MSG_ReadDeltaEntity( msg_t *msg, entityState_t *from, entityState_t *to,
|
|||
}
|
||||
}
|
||||
} else {
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat && !MSG_ReadBits(msg, 1))
|
||||
#else
|
||||
if ( MSG_ReadBits( msg, 1 ) == 0 )
|
||||
#endif
|
||||
*toF = 0;
|
||||
else {
|
||||
// integer
|
||||
|
@ -1471,19 +1284,15 @@ void MSG_ReadDeltaEntity( msg_t *msg, entityState_t *from, entityState_t *to,
|
|||
// pcount[i]++;
|
||||
}
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
{
|
||||
#endif
|
||||
for ( i = lc, field = &entityStateFields[lc] ; i < numFields ; i++, field++ ) {
|
||||
fromF = (int *)( (byte *)from + field->offset );
|
||||
toF = (int *)( (byte *)to + field->offset );
|
||||
// no change
|
||||
*toF = *fromF;
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( print ) {
|
||||
if ( msg->bit == 0 ) {
|
||||
|
@ -1507,7 +1316,6 @@ plyer_state_t communication
|
|||
// using the stringizing operator to save typing...
|
||||
#define PSF(x) #x,(size_t)&((playerState_t*)0)->x
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
netField_t playerStateFields[] =
|
||||
{
|
||||
{ PSF(commandTime), 32 },
|
||||
|
@ -1559,59 +1367,6 @@ netField_t playerStateFields[] =
|
|||
{ PSF(damageShieldCount), 8 },
|
||||
{ PSF(introTime), 32},
|
||||
};
|
||||
#else
|
||||
netField_t playerStateFields[] =
|
||||
{
|
||||
{ PSF(commandTime), 32 },
|
||||
{ PSF(origin[0]), 0 },
|
||||
{ PSF(origin[1]), 0 },
|
||||
{ PSF(bobCycle), 8 },
|
||||
{ PSF(velocity[0]), 0 },
|
||||
{ PSF(velocity[1]), 0 },
|
||||
{ PSF(viewangles[1]), 0 },
|
||||
{ PSF(viewangles[0]), 0 },
|
||||
{ PSF(weaponTime), -16 },
|
||||
{ PSF(origin[2]), 0 },
|
||||
{ PSF(velocity[2]), 0 },
|
||||
{ PSF(legsTimer), 8 },
|
||||
{ PSF(pm_time), -16 },
|
||||
{ PSF(eventSequence), 16 },
|
||||
{ PSF(torsoAnim), 8 },
|
||||
{ PSF(movementDir), 4 },
|
||||
{ PSF(events[0]), 8 },
|
||||
{ PSF(legsAnim), 8 },
|
||||
{ PSF(events[1]), 8 },
|
||||
{ PSF(pm_flags), 16 },
|
||||
{ PSF(groundEntityNum), GENTITYNUM_BITS },
|
||||
{ PSF(weaponstate), 4 },
|
||||
{ PSF(eFlags), 16 },
|
||||
{ PSF(externalEvent), 10 },
|
||||
{ PSF(gravity), 16 },
|
||||
{ PSF(speed), 16 },
|
||||
{ PSF(delta_angles[1]), 16 },
|
||||
{ PSF(externalEventParm), 8 },
|
||||
{ PSF(viewheight), -8 },
|
||||
{ PSF(damageEvent), 8 },
|
||||
{ PSF(damageYaw), 8 },
|
||||
{ PSF(damagePitch), 8 },
|
||||
{ PSF(damageCount), 8 },
|
||||
{ PSF(generic1), 8 },
|
||||
{ PSF(pm_type), 8 },
|
||||
{ PSF(delta_angles[0]), 16 },
|
||||
{ PSF(delta_angles[2]), 16 },
|
||||
{ PSF(torsoTimer), 12 },
|
||||
{ PSF(eventParms[0]), 8 },
|
||||
{ PSF(eventParms[1]), 8 },
|
||||
{ PSF(clientNum), 8 },
|
||||
{ PSF(weapon), 5 },
|
||||
{ PSF(viewangles[2]), 0 },
|
||||
{ PSF(grapplePoint[0]), 0 },
|
||||
{ PSF(grapplePoint[1]), 0 },
|
||||
{ PSF(grapplePoint[2]), 0 },
|
||||
{ PSF(jumppad_ent), GENTITYNUM_BITS },
|
||||
{ PSF(loopSound), 16 }
|
||||
};
|
||||
#endif
|
||||
/*
|
||||
=============
|
||||
MSG_WriteDeltaPlayerstate
|
||||
|
@ -1638,10 +1393,8 @@ void MSG_WriteDeltaPlayerstate( msg_t *msg, struct playerState_s *from, struct p
|
|||
|
||||
numFields = ARRAY_LEN( playerStateFields );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
{
|
||||
#endif
|
||||
lc = 0;
|
||||
for ( i = 0, field = playerStateFields ; i < numFields ; i++, field++ ) {
|
||||
fromF = (int *)( (byte *)from + field->offset );
|
||||
|
@ -1653,17 +1406,11 @@ void MSG_WriteDeltaPlayerstate( msg_t *msg, struct playerState_s *from, struct p
|
|||
|
||||
MSG_WriteByte( msg, lc ); // # of changes
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
}
|
||||
#endif
|
||||
|
||||
oldsize += numFields - lc;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
for ( i = 0, field = playerStateFields ; msg->compat ? (i < numFields) : (i < lc) ; i++, field++ )
|
||||
#else
|
||||
for ( i = 0, field = playerStateFields ; i < lc ; i++, field++ )
|
||||
#endif
|
||||
{
|
||||
fromF = (int *)( (byte *)from + field->offset );
|
||||
toF = (int *)( (byte *)to + field->offset );
|
||||
|
@ -1726,20 +1473,14 @@ void MSG_WriteDeltaPlayerstate( msg_t *msg, struct playerState_s *from, struct p
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if (!msg->compat && !statsbits && !persistantbits && !ammobits && !powerupbits)
|
||||
#else
|
||||
if (!statsbits && !persistantbits && !ammobits && !powerupbits)
|
||||
#endif
|
||||
{
|
||||
MSG_WriteBits( msg, 0, 1 ); // no change
|
||||
oldsize += 4;
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
#endif
|
||||
MSG_WriteBits( msg, 1, 1 ); // changed
|
||||
|
||||
if ( statsbits ) {
|
||||
|
@ -1826,11 +1567,9 @@ void MSG_ReadDeltaPlayerstate (msg_t *msg, playerState_t *from, playerState_t *t
|
|||
|
||||
numFields = ARRAY_LEN( playerStateFields );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
lc = numFields;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
lc = MSG_ReadByte(msg);
|
||||
|
||||
|
@ -1873,26 +1612,18 @@ void MSG_ReadDeltaPlayerstate (msg_t *msg, playerState_t *from, playerState_t *t
|
|||
}
|
||||
}
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
{
|
||||
#endif
|
||||
for ( i=lc,field = &playerStateFields[lc];i<numFields; i++, field++) {
|
||||
fromF = (int *)( (byte *)from + field->offset );
|
||||
toF = (int *)( (byte *)to + field->offset );
|
||||
// no change
|
||||
*toF = *fromF;
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
}
|
||||
#endif
|
||||
|
||||
// read the arrays
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat || MSG_ReadBits( msg, 1 ))
|
||||
#else
|
||||
if (MSG_ReadBits( msg, 1 ) )
|
||||
#endif
|
||||
{
|
||||
// parse stats
|
||||
if ( MSG_ReadBits( msg, 1 ) ) {
|
||||
|
|
|
@ -99,7 +99,6 @@ void Netchan_Setup(netsrc_t sock, netchan_t *chan, netadr_t adr, int qport, int
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
/*
|
||||
==============
|
||||
Netchan_ScramblePacket
|
||||
|
@ -193,7 +192,6 @@ static void Netchan_UnScramblePacket( msg_t *buf ) {
|
|||
buf->data[i] ^= seq[i];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
=================
|
||||
|
@ -234,13 +232,11 @@ void Netchan_TransmitNextFragment( netchan_t *chan ) {
|
|||
MSG_WriteShort( &send, fragmentLength );
|
||||
MSG_WriteData( &send, chan->unsentBuffer + chan->unsentFragmentStart, fragmentLength );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(chan->compat)
|
||||
{
|
||||
// the original eliteforce uses the old scrambling routines only slightly modified.
|
||||
Netchan_ScramblePacket( &send );
|
||||
}
|
||||
#endif
|
||||
|
||||
// send the datagram
|
||||
NET_SendPacket(chan->sock, send.cursize, send.data, chan->remoteAddress);
|
||||
|
@ -317,13 +313,11 @@ void Netchan_Transmit( netchan_t *chan, int length, const byte *data ) {
|
|||
|
||||
MSG_WriteData( &send, data, length );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(chan->compat)
|
||||
{
|
||||
// the original eliteforce uses the old scrambling routines only slightly modified.
|
||||
Netchan_ScramblePacket( &send );
|
||||
}
|
||||
#endif
|
||||
|
||||
// send the datagram
|
||||
NET_SendPacket( chan->sock, send.cursize, send.data, chan->remoteAddress );
|
||||
|
@ -359,10 +353,8 @@ qboolean Netchan_Process( netchan_t *chan, msg_t *msg ) {
|
|||
qboolean fragmented;
|
||||
|
||||
// XOR unscramble all data in the packet after the header
|
||||
#ifdef ELITEFORCE
|
||||
if(chan->compat)
|
||||
Netchan_UnScramblePacket( msg );
|
||||
#endif
|
||||
|
||||
// get sequence numbers
|
||||
MSG_BeginReadingOOB( msg );
|
||||
|
@ -509,9 +501,7 @@ qboolean Netchan_Process( netchan_t *chan, msg_t *msg ) {
|
|||
|
||||
// TTimo
|
||||
// clients were not acking fragmented messages
|
||||
#ifdef ELITEFORCE
|
||||
if(!chan->compat)
|
||||
#endif
|
||||
chan->incomingSequence = sequence;
|
||||
|
||||
return qtrue;
|
||||
|
@ -539,11 +529,7 @@ LOOPBACK BUFFERS FOR LOCAL PLAYER
|
|||
|
||||
// there needs to be enough loopback messages to hold a complete
|
||||
// gamestate of maximum size
|
||||
#ifndef XTRA
|
||||
#define MAX_LOOPBACK 16
|
||||
#else
|
||||
#define MAX_LOOPBACK 46
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
byte data[MAX_PACKETLEN];
|
||||
|
|
|
@ -128,11 +128,7 @@ static struct sockaddr_in6 boundto;
|
|||
#endif
|
||||
|
||||
// use an admin local address per default so that network admins can decide on how to handle quake3 traffic.
|
||||
#ifdef ELITEFORCE
|
||||
#define NET_MULTICAST_IP6 "ff04::696f:6566"
|
||||
#else
|
||||
#define NET_MULTICAST_IP6 "ff04::696f:7175:616b:6533"
|
||||
#endif
|
||||
|
||||
#define MAX_IPS 32
|
||||
|
||||
|
|
|
@ -972,11 +972,7 @@ void PerpendicularVector( vec3_t dst, const vec3_t src )
|
|||
/*
|
||||
** find the smallest magnitude axially aligned vector
|
||||
*/
|
||||
#ifdef ELITEFORCE
|
||||
for ( pos = 0, i = 2; i >= 0; i-- )
|
||||
#else
|
||||
for ( pos = 0, i = 0; i < 3; i++ )
|
||||
#endif
|
||||
{
|
||||
if ( fabs( src[i] ) < minelem )
|
||||
{
|
||||
|
|
|
@ -37,54 +37,24 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#define GAMENAME_FOR_MASTER "foobar" // must NOT contain whitespace
|
||||
// #define LEGACY_PROTOCOL // You probably don't need this for your standalone game
|
||||
#else
|
||||
#ifdef XTRA
|
||||
#define PRODUCT_NAME "rpgxEF"
|
||||
#define BASEGAME "baseEF"
|
||||
#define CLIENT_WINDOW_TITLE "rpgxEF"
|
||||
#define CLIENT_WINDOW_MIN_TITLE "rpgxEF"
|
||||
#define HOMEPATH_NAME_UNIX ".rpgxef"
|
||||
#define HOMEPATH_NAME_WIN "RPGXEF"
|
||||
#define HOMEPATH_NAME_MACOSX HOMEPATH_NAME_WIN
|
||||
#define GAMENAME_FOR_MASTER "EliteForce"
|
||||
#define LEGACY_PROTOCOL
|
||||
#elif defined(ELITEFORCE)
|
||||
#define PRODUCT_NAME "ioST:V HM"
|
||||
#define BASEGAME "baseEF"
|
||||
#define CLIENT_WINDOW_TITLE "iostvoyHM"
|
||||
#define CLIENT_WINDOW_MIN_TITLE "iostvoyHM"
|
||||
#define HOMEPATH_NAME_UNIX ".stvef"
|
||||
#define HOMEPATH_NAME_WIN "STVEF"
|
||||
#define HOMEPATH_NAME_MACOSX HOMEPATH_NAME_WIN
|
||||
#define GAMENAME_FOR_MASTER "EliteForce"
|
||||
#define LEGACY_PROTOCOL
|
||||
#else
|
||||
#define PRODUCT_NAME "ioq3"
|
||||
#define BASEGAME "baseq3"
|
||||
#define CLIENT_WINDOW_TITLE "ioquake3"
|
||||
#define CLIENT_WINDOW_MIN_TITLE "ioq3"
|
||||
#define HOMEPATH_NAME_UNIX ".q3a"
|
||||
#define HOMEPATH_NAME_WIN "Quake3"
|
||||
#define HOMEPATH_NAME_MACOSX HOMEPATH_NAME_WIN
|
||||
#define GAMENAME_FOR_MASTER "Quake3Arena"
|
||||
#define LEGACY_PROTOCOL
|
||||
#endif
|
||||
#define PRODUCT_NAME "rpgxEF"
|
||||
#define BASEGAME "baseEF"
|
||||
#define CLIENT_WINDOW_TITLE "rpgxEF"
|
||||
#define CLIENT_WINDOW_MIN_TITLE "rpgxEF"
|
||||
#define HOMEPATH_NAME_UNIX ".rpgxef"
|
||||
#define HOMEPATH_NAME_WIN "RPGXEF"
|
||||
#define HOMEPATH_NAME_MACOSX HOMEPATH_NAME_WIN
|
||||
#define GAMENAME_FOR_MASTER "EliteForce"
|
||||
#define LEGACY_PROTOCOL
|
||||
#endif
|
||||
|
||||
// Heartbeat for dpmaster protocol. You shouldn't change this unless you know what you're doing
|
||||
#ifdef ELITEFORCE
|
||||
#define HEARTBEAT_FOR_MASTER "STEF1"
|
||||
#else
|
||||
#define HEARTBEAT_FOR_MASTER "DarkPlaces"
|
||||
#endif
|
||||
#define HEARTBEAT_FOR_MASTER "STEF1"
|
||||
|
||||
#define BASETA "missionpack"
|
||||
|
||||
#ifndef PRODUCT_VERSION
|
||||
#ifndef XTRA
|
||||
#define PRODUCT_VERSION "1.36"
|
||||
#else
|
||||
#define PRODUCT_VERSION "1.0"
|
||||
#endif
|
||||
#define PRODUCT_VERSION "1.0"
|
||||
#endif
|
||||
|
||||
#define Q3_VERSION PRODUCT_NAME " " PRODUCT_VERSION
|
||||
|
@ -1097,11 +1067,7 @@ typedef enum {
|
|||
#define MAX_CLIENTS 64 // absolute limit
|
||||
#define MAX_LOCATIONS 64
|
||||
|
||||
#ifdef XTRA
|
||||
#define GENTITYNUM_BITS 11 // don't need to send any more
|
||||
#else
|
||||
#define GENTITYNUM_BITS 10 // don't need to send any more
|
||||
#endif
|
||||
#define MAX_GENTITIES (1<<GENTITYNUM_BITS)
|
||||
|
||||
// entitynums are communicated with GENTITY_BITS, so any reserved
|
||||
|
@ -1111,19 +1077,11 @@ typedef enum {
|
|||
#define ENTITYNUM_WORLD (MAX_GENTITIES-2)
|
||||
#define ENTITYNUM_MAX_NORMAL (MAX_GENTITIES-2)
|
||||
|
||||
#ifndef XTRA
|
||||
#define MODELNUM_BITS 8
|
||||
#else
|
||||
#define MODELNUM_BITS 9
|
||||
#endif
|
||||
#define MAX_MODELS (1<<MODELNUM_BITS) // these are sent over the net as 8 bits
|
||||
#define MAX_SOUNDS 256 // so they cannot be blindly increased
|
||||
|
||||
#ifndef XTRA
|
||||
#define MAX_CONFIGSTRINGS 1024
|
||||
#else
|
||||
#define MAX_CONFIGSTRINGS 4096
|
||||
#endif
|
||||
|
||||
// these are the only configstrings that the system reserves, all the
|
||||
// other ones are strictly for servergame to clientgame communication
|
||||
|
@ -1132,11 +1090,7 @@ typedef enum {
|
|||
|
||||
#define RESERVED_CONFIGSTRINGS 2 // game can't modify below this, only the system can
|
||||
|
||||
#ifndef XTRA
|
||||
#define MAX_GAMESTATE_CHARS 16000
|
||||
#else
|
||||
#define MAX_GAMESTATE_CHARS 64000
|
||||
#endif
|
||||
typedef struct {
|
||||
int stringOffsets[MAX_CONFIGSTRINGS];
|
||||
char stringData[MAX_GAMESTATE_CHARS];
|
||||
|
@ -1150,12 +1104,7 @@ typedef struct {
|
|||
#define MAX_PERSISTANT 16
|
||||
#define MAX_POWERUPS 16
|
||||
#define MAX_WEAPONS 16
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
#define MAX_PS_EVENTS 4
|
||||
#else
|
||||
#define MAX_PS_EVENTS 2
|
||||
#endif
|
||||
|
||||
#define PS_PMOVEFRAMECOUNTBITS 6
|
||||
|
||||
|
@ -1179,11 +1128,9 @@ typedef struct playerState_s {
|
|||
vec3_t origin;
|
||||
vec3_t velocity;
|
||||
int weaponTime;
|
||||
#ifdef ELITEFORCE
|
||||
int rechargeTime; // for the phaser
|
||||
short useTime; // use debounce
|
||||
int introTime; // for the holodoor
|
||||
#endif
|
||||
int rechargeTime; // for the phaser
|
||||
short useTime; // use debounce
|
||||
int introTime; // for the holodoor
|
||||
int gravity;
|
||||
int speed;
|
||||
int delta_angles[3]; // add to command angles to get view direction
|
||||
|
@ -1202,10 +1149,6 @@ typedef struct playerState_s {
|
|||
// when at rest, the value will remain unchanged
|
||||
// used to twist the legs during strafing
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
vec3_t grapplePoint; // location of grapple to pull towards if PMF_GRAPPLE_PULL
|
||||
#endif
|
||||
|
||||
int eFlags; // copied to entityState_t->eFlags
|
||||
|
||||
int eventSequence; // pmove generated events
|
||||
|
@ -1228,27 +1171,15 @@ typedef struct playerState_s {
|
|||
int damageYaw;
|
||||
int damagePitch;
|
||||
int damageCount;
|
||||
#ifdef ELITEFORCE
|
||||
int damageShieldCount;
|
||||
#endif
|
||||
|
||||
int stats[MAX_STATS];
|
||||
int persistant[MAX_PERSISTANT]; // stats that aren't cleared on death
|
||||
int powerups[MAX_POWERUPS]; // level.time that the powerup runs out
|
||||
int ammo[MAX_WEAPONS];
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
int generic1;
|
||||
int loopSound;
|
||||
int jumppad_ent; // jumppad entity hit this frame
|
||||
#endif
|
||||
|
||||
// not communicated over the net at all
|
||||
int ping; // server to game info for scoreboard
|
||||
#ifndef ELITEFORCE
|
||||
int pmove_framecount; // FIXME: don't transmit over the network
|
||||
int jumppad_frame;
|
||||
#endif
|
||||
int entityEventSequence;
|
||||
} playerState_t;
|
||||
|
||||
|
@ -1283,7 +1214,6 @@ typedef struct playerState_s {
|
|||
// then BUTTON_WALKING should be set
|
||||
|
||||
// usercmd_t is sent to the server each client frame
|
||||
#ifdef ELITEFORCE
|
||||
typedef struct usercmd_s {
|
||||
int serverTime;
|
||||
byte buttons;
|
||||
|
@ -1291,15 +1221,6 @@ typedef struct usercmd_s {
|
|||
int angles[3];
|
||||
signed char forwardmove, rightmove, upmove;
|
||||
} usercmd_t;
|
||||
#else
|
||||
typedef struct usercmd_s {
|
||||
int serverTime;
|
||||
int angles[3];
|
||||
int buttons;
|
||||
byte weapon; // weapon
|
||||
signed char forwardmove, rightmove, upmove;
|
||||
} usercmd_t;
|
||||
#endif
|
||||
//===================================================================
|
||||
|
||||
// if entityState->solid == SOLID_BMODEL, modelindex is an inline model number
|
||||
|
@ -1369,10 +1290,6 @@ typedef struct entityState_s {
|
|||
int weapon; // determines weapon and flash model, etc
|
||||
int legsAnim; // mask off ANIM_TOGGLEBIT
|
||||
int torsoAnim; // mask off ANIM_TOGGLEBIT
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
int generic1;
|
||||
#endif
|
||||
} entityState_t;
|
||||
|
||||
typedef enum {
|
||||
|
|
|
@ -23,9 +23,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#ifndef _QCOMMON_H_
|
||||
#define _QCOMMON_H_
|
||||
|
||||
#if defined(ELITEFORCE) && defined(MISSIONPACK)
|
||||
#undef MISSIONPACK
|
||||
#endif
|
||||
#undef MISSIONPACK
|
||||
|
||||
#include "../qcommon/cm_public.h"
|
||||
|
||||
|
@ -47,9 +45,7 @@ typedef struct {
|
|||
qboolean allowoverflow; // if false, do a Com_Error
|
||||
qboolean overflowed; // set to true if the buffer size failed (with allowoverflow set)
|
||||
qboolean oob; // set to true if the buffer size failed (with allowoverflow set)
|
||||
#ifdef ELITEFORCE
|
||||
qboolean compat; // Compatibility mode for old EliteForce servers.
|
||||
#endif
|
||||
byte *data;
|
||||
int maxsize;
|
||||
int cursize;
|
||||
|
@ -195,12 +191,7 @@ void NET_JoinMulticast6(void);
|
|||
void NET_LeaveMulticast6(void);
|
||||
void NET_Sleep(int msec);
|
||||
|
||||
#ifndef XTRA
|
||||
#define MAX_MSGLEN 16384 // max length of a message, which may
|
||||
// be fragmented into multiple packets
|
||||
#else
|
||||
#define MAX_MSGLEN 65536
|
||||
#endif
|
||||
|
||||
#define MAX_DOWNLOAD_WINDOW 48 // ACK window of 48 download chunks. Cannot set this higher, or clients
|
||||
// will overflow the reliable commands buffer
|
||||
|
@ -262,16 +253,8 @@ PROTOCOL
|
|||
==============================================================
|
||||
*/
|
||||
|
||||
#ifdef XTRA
|
||||
#define PROTOCOL_VERSION 60
|
||||
#define PROTOCOL_LEGACY_VERSION 59
|
||||
#elif defined(ELITEFORCE)
|
||||
#define PROTOCOL_VERSION 26
|
||||
#define PROTOCOL_LEGACY_VERSION 24
|
||||
#else
|
||||
#define PROTOCOL_VERSION 71
|
||||
#define PROTOCOL_LEGACY_VERSION 68
|
||||
#endif
|
||||
#define PROTOCOL_VERSION 60
|
||||
#define PROTOCOL_LEGACY_VERSION 59
|
||||
// 1.31 - 67
|
||||
|
||||
// maintain a list of compatible protocols for demo playing
|
||||
|
@ -279,47 +262,23 @@ PROTOCOL
|
|||
extern int demo_protocols[];
|
||||
|
||||
// override on command line, config files etc.
|
||||
#ifdef ELITEFORCE
|
||||
|
||||
#if !defined UPDATE_SERVER_NAME && !defined STANDALONE
|
||||
#define UPDATE_SERVER_NAME "motd.stef1.ravensoft.com"
|
||||
#endif
|
||||
#ifndef MASTER_SERVER_NAME
|
||||
#define MASTER_SERVER_NAME "master.stef1.ravensoft.com"
|
||||
#endif
|
||||
|
||||
#define PORT_MASTER 27953
|
||||
|
||||
#else
|
||||
|
||||
#if !defined UPDATE_SERVER_NAME && !defined STANDALONE
|
||||
#define UPDATE_SERVER_NAME "update.quake3arena.com"
|
||||
#endif
|
||||
#define UPDATE_SERVER_NAME "update.quake3arena.com"
|
||||
#ifndef MASTER_SERVER_NAME
|
||||
#define MASTER_SERVER_NAME "master.quake3arena.com"
|
||||
#endif
|
||||
|
||||
#define PORT_MASTER 27950
|
||||
|
||||
#if !defined UPDATE_SERVER_NAME && !defined STANDALONE
|
||||
#define UPDATE_SERVER_NAME "motd.stef1.ravensoft.com"
|
||||
#endif
|
||||
#ifndef MASTER_SERVER_NAME
|
||||
#define MASTER_SERVER_NAME "master.stef1.ravensoft.com"
|
||||
#endif
|
||||
|
||||
#define PORT_MASTER 27953
|
||||
|
||||
#ifndef STANDALONE
|
||||
#ifdef ELITEFORCE
|
||||
#ifndef AUTHORIZE_SERVER_NAME
|
||||
#define AUTHORIZE_SERVER_NAME "authenticate.stef1.ravensoft.com"
|
||||
#endif
|
||||
#ifndef PORT_AUTHORIZE
|
||||
#define PORT_AUTHORIZE 27953
|
||||
#endif
|
||||
#else
|
||||
#ifndef AUTHORIZE_SERVER_NAME
|
||||
#define AUTHORIZE_SERVER_NAME "authorize.quake3arena.com"
|
||||
#endif
|
||||
#ifndef PORT_AUTHORIZE
|
||||
#define PORT_AUTHORIZE 27952
|
||||
#endif
|
||||
#endif
|
||||
#ifndef AUTHORIZE_SERVER_NAME
|
||||
#define AUTHORIZE_SERVER_NAME "authenticate.stef1.ravensoft.com"
|
||||
#endif
|
||||
#ifndef PORT_AUTHORIZE
|
||||
#define PORT_AUTHORIZE 27953
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define PORT_UPDATE 27951
|
||||
|
@ -637,24 +596,11 @@ issues.
|
|||
#define FS_CGAME_REF 0x04
|
||||
#define FS_QAGAME_REF 0x08
|
||||
// number of id paks that will never be autodownloaded from baseq3/missionpack
|
||||
#ifdef ELITEFORCE
|
||||
#define NUM_ID_PAKS 9
|
||||
#else
|
||||
#define NUM_ID_PAKS 9
|
||||
#define NUM_TA_PAKS 4
|
||||
#endif
|
||||
|
||||
#define MAX_FILE_HANDLES 64
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
#define Q3CONFIG_CFG "hmconfig.cfg"
|
||||
#else
|
||||
#ifdef DEDICATED
|
||||
# define Q3CONFIG_CFG "q3config_server.cfg"
|
||||
#else
|
||||
# define Q3CONFIG_CFG "q3config.cfg"
|
||||
#endif
|
||||
#endif
|
||||
#define Q3CONFIG_CFG "hmconfig.cfg"
|
||||
|
||||
qboolean FS_Initialized( void );
|
||||
|
||||
|
|
|
@ -41,9 +41,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
#define CONTENTS_PLAYERCLIP 0x10000
|
||||
#define CONTENTS_MONSTERCLIP 0x20000
|
||||
#ifdef ELITEFORCE
|
||||
#define CONTENTS_SHOTCLIP 0x40000
|
||||
#endif
|
||||
|
||||
//bot specific contents types
|
||||
#define CONTENTS_TELEPORTER 0x40000
|
||||
|
|
|
@ -457,18 +457,10 @@ void RB_BeginDrawingView (void) {
|
|||
if ( r_fastsky->integer && !( backEnd.refdef.rdflags & RDF_NOWORLDMODEL ) )
|
||||
{
|
||||
clearBits |= GL_COLOR_BUFFER_BIT; // FIXME: only if sky shaders have been used
|
||||
#ifdef ELITEFORCE
|
||||
if(r_origfastsky->integer)
|
||||
qglClearColor(0.8f, 0.7f, 0.4f, 1.0f);
|
||||
else
|
||||
qglClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
#else
|
||||
#ifdef _DEBUG
|
||||
qglClearColor( 0.8f, 0.7f, 0.4f, 1.0f ); // FIXME: get color of sky
|
||||
#else
|
||||
qglClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); // FIXME: get color of sky
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
qglClear( clearBits );
|
||||
|
||||
|
|
|
@ -69,9 +69,7 @@ cvar_t *r_measureOverdraw;
|
|||
|
||||
cvar_t *r_inGameVideo;
|
||||
cvar_t *r_fastsky;
|
||||
#ifdef ELITEFORCE
|
||||
cvar_t *r_origfastsky;
|
||||
#endif
|
||||
cvar_t *r_drawSun;
|
||||
cvar_t *r_dynamiclight;
|
||||
cvar_t *r_dlightBacks;
|
||||
|
@ -200,9 +198,7 @@ static void InitOpenGL( void )
|
|||
|
||||
GLimp_Init();
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
glConfig.textureFilterAnisotropicAvailable = textureFilterAnisotropic;
|
||||
#endif
|
||||
|
||||
strcpy( renderer_buffer, glConfig.renderer_string );
|
||||
Q_strlwr( renderer_buffer );
|
||||
|
@ -1000,11 +996,7 @@ void R_Register( void )
|
|||
// latched and archived variables
|
||||
//
|
||||
r_allowExtensions = ri.Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#ifdef ELITEFORCE
|
||||
r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compress_textures", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#else
|
||||
r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compressed_textures", "0", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
#endif
|
||||
r_ext_multitexture = ri.Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH );
|
||||
r_ext_compiled_vertex_array = ri.Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE | CVAR_LATCH);
|
||||
r_ext_texture_env_add = ri.Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE | CVAR_LATCH);
|
||||
|
@ -1046,11 +1038,7 @@ void R_Register( void )
|
|||
// temporary latched variables that can only change over a restart
|
||||
//
|
||||
r_fullbright = ri.Cvar_Get ("r_fullbright", "0", CVAR_LATCH|CVAR_CHEAT );
|
||||
#ifdef ELITEFORCE
|
||||
r_mapOverBrightBits = ri.Cvar_Get ("r_mapOverBrightBits", "1", CVAR_LATCH );
|
||||
#else
|
||||
r_mapOverBrightBits = ri.Cvar_Get ("r_mapOverBrightBits", "2", CVAR_LATCH );
|
||||
#endif
|
||||
r_intensity = ri.Cvar_Get ("r_intensity", "1", CVAR_LATCH );
|
||||
r_singleShader = ri.Cvar_Get ("r_singleShader", "0", CVAR_CHEAT | CVAR_LATCH );
|
||||
|
||||
|
@ -1066,9 +1054,7 @@ void R_Register( void )
|
|||
r_stereoSeparation = ri.Cvar_Get( "r_stereoSeparation", "64", CVAR_ARCHIVE );
|
||||
r_ignoreGLErrors = ri.Cvar_Get( "r_ignoreGLErrors", "1", CVAR_ARCHIVE );
|
||||
r_fastsky = ri.Cvar_Get( "r_fastsky", "0", CVAR_ARCHIVE );
|
||||
#ifdef ELITEFORCE
|
||||
r_origfastsky = ri.Cvar_Get( "r_origfastsky", "0", CVAR_ARCHIVE );
|
||||
#endif
|
||||
r_inGameVideo = ri.Cvar_Get( "r_inGameVideo", "1", CVAR_ARCHIVE );
|
||||
r_drawSun = ri.Cvar_Get( "r_drawSun", "0", CVAR_ARCHIVE );
|
||||
r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE );
|
||||
|
@ -1175,15 +1161,10 @@ void R_Init( void ) {
|
|||
Com_Memset( &backEnd, 0, sizeof( backEnd ) );
|
||||
Com_Memset( &tess, 0, sizeof( tess ) );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(sizeof(glconfig_t) != 5192)
|
||||
{
|
||||
ri.Error( ERR_FATAL, "Mod ABI incompatible: sizeof(glconfig_t) == %u != 5192", (unsigned int) sizeof(glconfig_t));
|
||||
}
|
||||
#else
|
||||
if(sizeof(glconfig_t) != 11332)
|
||||
ri.Error( ERR_FATAL, "Mod ABI incompatible: sizeof(glconfig_t) == %u != 11332", (unsigned int) sizeof(glconfig_t));
|
||||
#endif
|
||||
|
||||
// Swap_Init();
|
||||
|
||||
|
@ -1354,9 +1335,7 @@ refexport_t *GetRefAPI ( int apiVersion, refimport_t *rimp ) {
|
|||
re.RegisterSkin = RE_RegisterSkin;
|
||||
re.RegisterShader = RE_RegisterShader;
|
||||
re.RegisterShaderNoMip = RE_RegisterShaderNoMip;
|
||||
#ifdef ELITEFORCE
|
||||
re.RegisterShader3D = RE_RegisterShader3D;
|
||||
#endif
|
||||
re.LoadWorld = RE_LoadWorldMap;
|
||||
re.SetWorldVisData = RE_SetWorldVisData;
|
||||
re.EndRegistration = RE_EndRegistration;
|
||||
|
|
|
@ -294,7 +294,6 @@ void R_SetupEntityLighting( const trRefdef_t *refdef, trRefEntity_t *ent ) {
|
|||
}
|
||||
ent->lightingCalculated = qtrue;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(ent->e.renderfx & RF_FULLBRIGHT)
|
||||
{
|
||||
// ent->ambientLight[0] = ent->ambientLight[1] = ent->ambientLight[1] = 0xFF;
|
||||
|
@ -306,7 +305,6 @@ void R_SetupEntityLighting( const trRefdef_t *refdef, trRefEntity_t *ent ) {
|
|||
ent->lightDir[0] = ent->lightDir[1] = ent->lightDir[2] = 0;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
//
|
||||
// trace a sample point down to find ambient light
|
||||
|
|
|
@ -813,11 +813,7 @@ extern refimport_t ri;
|
|||
#define MAX_SKINS 1024
|
||||
|
||||
|
||||
#ifndef XTRA
|
||||
#define MAX_DRAWSURFS 0x10000
|
||||
#else
|
||||
#define MAX_DRAWSURFS 0x20000
|
||||
#endif
|
||||
#define DRAWSURF_MASK (MAX_DRAWSURFS-1)
|
||||
|
||||
/*
|
||||
|
@ -839,18 +835,9 @@ the bits are allocated as follows:
|
|||
7-16 : entity index
|
||||
17-30 : sorted shader index
|
||||
*/
|
||||
#ifndef XTRA
|
||||
#define QSORT_FOGNUM_SHIFT 2
|
||||
#define QSORT_ENTITYNUM_SHIFT 7
|
||||
#define QSORT_SHADERNUM_SHIFT (QSORT_ENTITYNUM_SHIFT+ENTITYNUM_BITS)
|
||||
#if (QSORT_SHADERNUM_SHIFT+SHADERNUM_BITS) > 32
|
||||
#error "Need to update sorting, too many bits."
|
||||
#endif
|
||||
#else
|
||||
#define QSORT_FOGNUM_SHIFT 2
|
||||
#define QSORT_ENTITYNUM_SHIFT 7
|
||||
#define QSORT_SHADERNUM_SHIFT (QSORT_ENTITYNUM_SHIFT+ENTITYNUM_BITS)
|
||||
#endif
|
||||
|
||||
extern int gl_filter_min, gl_filter_max;
|
||||
|
||||
|
@ -1070,9 +1057,7 @@ extern cvar_t *r_primitives; // "0" = based on compiled vertex array existance
|
|||
|
||||
extern cvar_t *r_inGameVideo; // controls whether in game video should be draw
|
||||
extern cvar_t *r_fastsky; // controls whether sky should be cleared or drawn
|
||||
#ifdef ELITEFORCE
|
||||
extern cvar_t *r_origfastsky; // controls whether fastsky color is like in original EF.
|
||||
#endif
|
||||
extern cvar_t *r_drawSun; // controls drawing of sun quad
|
||||
extern cvar_t *r_dynamiclight; // dynamic lights enabled/disabled
|
||||
extern cvar_t *r_dlightBacks; // dlight non-facing surfaces for continuity
|
||||
|
@ -1294,10 +1279,8 @@ const void *RB_TakeVideoFrameCmd( const void *data );
|
|||
qhandle_t RE_RegisterShaderLightMap( const char *name, int lightmapIndex );
|
||||
qhandle_t RE_RegisterShader( const char *name );
|
||||
qhandle_t RE_RegisterShaderNoMip( const char *name );
|
||||
#ifdef ELITEFORCE
|
||||
qhandle_t RE_RegisterShader3D( const char *name );
|
||||
#endif
|
||||
qhandle_t RE_RegisterShaderFromImage(const char *name, int lightmapIndex, image_t *image, qboolean mipRawImage);
|
||||
qhandle_t RE_RegisterShaderFromImage(const char *name, int lightmapIndex, image_t *image, qboolean mipRawImage);
|
||||
|
||||
shader_t *R_FindShader( const char *name, int lightmapIndex, qboolean mipRawImage );
|
||||
shader_t *R_GetShaderByHandle( qhandle_t hShader );
|
||||
|
|
|
@ -1020,11 +1020,7 @@ int R_SpriteFogNum( trRefEntity_t *ent ) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
radius = ent->e.data.sprite.radius;
|
||||
#else
|
||||
radius = ent->e.radius;
|
||||
#endif
|
||||
|
||||
for ( i = 1 ; i < tr.world->numfogs ; i++ ) {
|
||||
fog = &tr.world->fogs[i];
|
||||
|
@ -1231,7 +1227,6 @@ void R_AddEntitySurfaces (void) {
|
|||
case RT_PORTALSURFACE:
|
||||
break; // don't draw anything
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
case RT_ORIENTEDSPRITE:
|
||||
case RT_ALPHAVERTPOLY:
|
||||
case RT_LINE:
|
||||
|
@ -1240,7 +1235,6 @@ void R_AddEntitySurfaces (void) {
|
|||
case RT_BEZIER:
|
||||
case RT_CYLINDER:
|
||||
case RT_ELECTRICITY:
|
||||
#endif
|
||||
|
||||
case RT_SPRITE:
|
||||
case RT_BEAM:
|
||||
|
|
|
@ -49,9 +49,7 @@ typedef struct {
|
|||
qhandle_t (*RegisterSkin)( const char *name );
|
||||
qhandle_t (*RegisterShader)( const char *name );
|
||||
qhandle_t (*RegisterShaderNoMip)( const char *name );
|
||||
#ifdef ELITEFORCE
|
||||
qhandle_t (*RegisterShader3D)( const char *name );
|
||||
#endif
|
||||
void (*LoadWorld)( const char *name );
|
||||
|
||||
// the vis data is a large enough block of data that we go to the trouble
|
||||
|
|
|
@ -312,10 +312,6 @@ void RE_RenderScene( const refdef_t *fd ) {
|
|||
ri.Error (ERR_DROP, "R_RenderScene: NULL worldmodel");
|
||||
}
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
Com_Memcpy( tr.refdef.text, fd->text, sizeof( tr.refdef.text ) );
|
||||
#endif
|
||||
|
||||
tr.refdef.x = fd->x;
|
||||
tr.refdef.y = fd->y;
|
||||
tr.refdef.width = fd->width;
|
||||
|
|
|
@ -1109,10 +1109,8 @@ static void ComputeTexCoords( shaderStage_t *pStage ) {
|
|||
static void RB_IterateStagesGeneric( shaderCommands_t *input )
|
||||
{
|
||||
int stage;
|
||||
#ifdef ELITEFORCE
|
||||
qboolean overridealpha;
|
||||
int oldalphaGen = 0;
|
||||
#endif
|
||||
|
||||
for ( stage = 0; stage < MAX_SHADER_STAGES; stage++ )
|
||||
{
|
||||
|
@ -1123,7 +1121,6 @@ static void RB_IterateStagesGeneric( shaderCommands_t *input )
|
|||
break;
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
// Override the shader alpha channel if requested.
|
||||
if(backEnd.currentEntity->e.renderfx & RF_FORCE_ENT_ALPHA)
|
||||
{
|
||||
|
@ -1133,14 +1130,11 @@ static void RB_IterateStagesGeneric( shaderCommands_t *input )
|
|||
}
|
||||
else
|
||||
overridealpha = qfalse;
|
||||
#endif
|
||||
|
||||
ComputeColors( pStage );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(overridealpha)
|
||||
pStage->alphaGen = oldalphaGen;
|
||||
#endif
|
||||
|
||||
ComputeTexCoords( pStage );
|
||||
|
||||
|
@ -1174,14 +1168,12 @@ static void RB_IterateStagesGeneric( shaderCommands_t *input )
|
|||
else
|
||||
R_BindAnimatedImage( &pStage->bundle[0] );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(overridealpha && backEnd.currentEntity->e.shaderRGBA[3] < 0xFF && !(pStage->stateBits & GLS_ATEST_BITS))
|
||||
{
|
||||
GL_State((pStage->stateBits & ~(GLS_SRCBLEND_BITS | GLS_DSTBLEND_BITS | GLS_ATEST_BITS)) // remove the shader set values.
|
||||
| GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA | GLS_ATEST_GT_0); // Now add the default values.
|
||||
}
|
||||
else
|
||||
#endif
|
||||
GL_State( pStage->stateBits );
|
||||
|
||||
//
|
||||
|
|
|
@ -579,9 +579,6 @@ void RB_DeformTessGeometry( void ) {
|
|||
case DEFORM_TEXT5:
|
||||
case DEFORM_TEXT6:
|
||||
case DEFORM_TEXT7:
|
||||
#ifndef ELITEFORCE
|
||||
DeformText( backEnd.refdef.text[ds->deformation - DEFORM_TEXT0] );
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -693,12 +690,8 @@ void RB_CalcWaveColor( const waveForm_t *wf, unsigned char *dstColors )
|
|||
if ( wf->func == GF_NOISE ) {
|
||||
glow = wf->base + R_NoiseGet4f( 0, 0, 0, ( tess.shaderTime + wf->phase ) * wf->frequency ) * wf->amplitude;
|
||||
} else if( wf->func == GF_RANDOM ) {
|
||||
#ifndef XTRA
|
||||
glow = wf->base + R_RandomOn( (tess.shaderTime + wf->phase) * wf->frequency ) * wf->amplitude;
|
||||
#else
|
||||
// mutiply wf->frequence with 25 creates a random result much closer to vEF
|
||||
glow = wf->base + R_RandomOn( (tess.shaderTime + wf->phase) * (wf->frequency * 25) ) * wf->amplitude;
|
||||
#endif
|
||||
} else {
|
||||
glow = EvalWaveForm( wf ) * tr.identityLight;
|
||||
}
|
||||
|
|
|
@ -745,12 +745,10 @@ static qboolean ParseStage( shaderStage_t *stage, char **text )
|
|||
{
|
||||
depthFuncBits = 0;
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
if ( !Q_stricmp( token, "disable" ) )
|
||||
{
|
||||
depthFuncBits = 0;
|
||||
}
|
||||
#endif
|
||||
else if ( !Q_stricmp( token, "equal" ) )
|
||||
{
|
||||
depthFuncBits = GLS_DEPTHFUNC_EQUAL;
|
||||
|
@ -2792,7 +2790,7 @@ qhandle_t RE_RegisterShaderNoMip( const char *name ) {
|
|||
|
||||
return sh->index;
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
|
||||
/*
|
||||
====================
|
||||
RE_RegisterShader3D
|
||||
|
@ -2822,7 +2820,6 @@ qhandle_t RE_RegisterShader3D( const char *name ) {
|
|||
|
||||
return sh->index;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
====================
|
||||
|
|
|
@ -159,13 +159,8 @@ static void RB_SurfaceSprite( void ) {
|
|||
float rotation;
|
||||
|
||||
// calculate the xyz locations for the four corners
|
||||
#ifdef ELITEFORCE
|
||||
radius = backEnd.currentEntity->e.data.sprite.radius;
|
||||
rotation = backEnd.currentEntity->e.data.sprite.rotation;
|
||||
#else
|
||||
radius = backEnd.currentEntity->e.radius;
|
||||
rotation = backEnd.currentEntity->e.rotation;
|
||||
#endif
|
||||
|
||||
if ( rotation == 0 ) {
|
||||
VectorScale( backEnd.viewParms.or.axis[1], radius, left );
|
||||
|
@ -557,8 +552,6 @@ static void RB_SurfaceLightningBolt( void ) {
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
|
||||
/*
|
||||
==============
|
||||
RB_SurfaceOrientedSprite
|
||||
|
@ -1125,7 +1118,6 @@ void RB_SurfaceElectricity(void)
|
|||
RB_Line(segstartpos, segendpos, linedirection, left, prevend, 0, e->data.electricity.stscale, e);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
** VectorArrayNormalize
|
||||
|
@ -1760,9 +1752,7 @@ Entities that have a single procedurally generated surface
|
|||
*/
|
||||
static void RB_SurfaceEntity( surfaceType_t *surfType ) {
|
||||
switch( backEnd.currentEntity->e.reType ) {
|
||||
#ifdef ELITEFORCE
|
||||
case RT_ALPHAVERTPOLY:
|
||||
#endif
|
||||
case RT_SPRITE:
|
||||
RB_SurfaceSprite();
|
||||
break;
|
||||
|
@ -1778,7 +1768,6 @@ static void RB_SurfaceEntity( surfaceType_t *surfType ) {
|
|||
case RT_LIGHTNING:
|
||||
RB_SurfaceLightningBolt();
|
||||
break;
|
||||
#ifdef ELITEFORCE
|
||||
case RT_ORIENTEDSPRITE:
|
||||
RB_SurfaceOrientedSprite();
|
||||
break;
|
||||
|
@ -1800,7 +1789,6 @@ static void RB_SurfaceEntity( surfaceType_t *surfType ) {
|
|||
case RT_ELECTRICITY:
|
||||
RB_SurfaceElectricity();
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
RB_SurfaceAxis();
|
||||
break;
|
||||
|
|
|
@ -133,11 +133,8 @@ void SV_GetChallenge(netadr_t from)
|
|||
#ifndef STANDALONE
|
||||
// Drop the authorize stuff if this client is coming in via v6 as the auth server does not support ipv6.
|
||||
// Drop also for addresses coming in on local LAN and for stand-alone games independent from id's assets.
|
||||
#ifdef ELITEFORCE
|
||||
|
||||
if(challenge->adr.type == NA_IP && !com_standalone->integer && !Sys_IsLANAddress(from))
|
||||
#else
|
||||
if(challenge->adr.type == NA_IP && !com_standalone->integer && !Sys_IsLANAddress(from))
|
||||
#endif
|
||||
{
|
||||
// look up the authorize server's IP
|
||||
if (svs.authorizeAddress.type == NA_BAD)
|
||||
|
@ -165,31 +162,13 @@ void SV_GetChallenge(netadr_t from)
|
|||
Com_DPrintf( "authorize server timed out\n" );
|
||||
else
|
||||
{
|
||||
#ifndef ELITEFORCE
|
||||
cvar_t *fs;
|
||||
char game[1024];
|
||||
#endif
|
||||
|
||||
Com_DPrintf( "sending getIpAuthorize for %s\n", NET_AdrToString( from ));
|
||||
|
||||
// otherwise send their ip to the authorize server
|
||||
#ifdef ELITEFORCE
|
||||
NET_OutOfBandPrint( NS_SERVER, svs.authorizeAddress,
|
||||
"getIpAuthorize %i %i.%i.%i.%i ", challenge->challenge,
|
||||
from.ip[0], from.ip[1], from.ip[2], from.ip[3] );
|
||||
#else
|
||||
strcpy(game, BASEGAME);
|
||||
fs = Cvar_Get ("fs_game", "", CVAR_INIT|CVAR_SYSTEMINFO );
|
||||
if (fs && fs->string[0] != 0) {
|
||||
strcpy(game, fs->string);
|
||||
}
|
||||
|
||||
// the 0 is for backwards compatibility with obsolete sv_allowanonymous flags
|
||||
// getIpAuthorize <challenge> <IP> <game> 0 <auth-flag>
|
||||
NET_OutOfBandPrint( NS_SERVER, svs.authorizeAddress,
|
||||
"getIpAuthorize %i %i.%i.%i.%i %s 0 %s", challenge->challenge,
|
||||
from.ip[0], from.ip[1], from.ip[2], from.ip[3], game, sv_strictAuth->string );
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -667,11 +646,9 @@ void SV_DropClient( client_t *drop, const char *reason ) {
|
|||
VM_Call( gvm, GAME_CLIENT_DISCONNECT, drop - svs.clients );
|
||||
|
||||
// add the disconnect command
|
||||
#ifdef ELITEFORCE
|
||||
if(drop->compat)
|
||||
SV_SendServerCommand( drop, "disconnect %s", reason);
|
||||
else
|
||||
#endif
|
||||
SV_SendServerCommand( drop, "disconnect \"%s\"", reason);
|
||||
|
||||
if ( isBot ) {
|
||||
|
@ -731,22 +708,16 @@ static void SV_SendClientGameState( client_t *client ) {
|
|||
// gamestate message was not just sent, forcing a retransmit
|
||||
client->gamestateMessageNum = client->netchan.outgoingSequence;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(client->compat)
|
||||
MSG_InitOOB(&msg, msgBuffer, sizeof( msgBuffer ) );
|
||||
else
|
||||
#endif
|
||||
MSG_Init( &msg, msgBuffer, sizeof( msgBuffer ) );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
msg.compat = client->compat;
|
||||
#endif
|
||||
|
||||
// NOTE, MRE: all server->client messages now acknowledge
|
||||
// let the client know which reliable clientCommands we have received
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg.compat)
|
||||
#endif
|
||||
MSG_WriteLong( &msg, client->lastClientCommand );
|
||||
|
||||
// send any server commands waiting to be sent first.
|
||||
|
@ -779,16 +750,12 @@ static void SV_SendClientGameState( client_t *client ) {
|
|||
MSG_WriteDeltaEntity( &msg, &nullstate, base, qtrue );
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg.compat)
|
||||
MSG_WriteByte(&msg, 0);
|
||||
else
|
||||
#endif
|
||||
MSG_WriteByte( &msg, svc_EOF );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg.compat)
|
||||
#endif
|
||||
MSG_WriteLong( &msg, client - svs.clients);
|
||||
|
||||
// write the checksum feed
|
||||
|
@ -953,9 +920,6 @@ Fill up msg with data, return number of download blocks added
|
|||
int SV_WriteDownloadToClient(client_t *cl, msg_t *msg)
|
||||
{
|
||||
int curindex;
|
||||
#ifndef ELITEFORCE
|
||||
int missionPack = 0;
|
||||
#endif
|
||||
int unreferenced = 1;
|
||||
char errorMessage[1024];
|
||||
char pakbuf[MAX_QPATH], *pakptr;
|
||||
|
@ -967,11 +931,6 @@ int SV_WriteDownloadToClient(client_t *cl, msg_t *msg)
|
|||
if(!cl->download)
|
||||
{
|
||||
qboolean idPack = qfalse;
|
||||
#ifndef ELITEFORCE
|
||||
#ifndef STANDALONE
|
||||
qboolean missionPack = qfalse;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Chop off filename extension.
|
||||
Com_sprintf(pakbuf, sizeof(pakbuf), "%s", cl->downloadName);
|
||||
|
@ -1000,12 +959,7 @@ int SV_WriteDownloadToClient(client_t *cl, msg_t *msg)
|
|||
// now that we know the file is referenced,
|
||||
// check whether it's legal to download it.
|
||||
#ifndef STANDALONE
|
||||
#ifdef ELITEFORCE
|
||||
idPack = FS_idPak(pakbuf, BASEGAME, NUM_ID_PAKS);
|
||||
#else
|
||||
missionPack = FS_idPak(pakbuf, BASETA, NUM_TA_PAKS);
|
||||
idPack = missionPack;
|
||||
#endif
|
||||
#endif
|
||||
idPack = idPack || FS_idPak(pakbuf, BASEGAME, NUM_ID_PAKS);
|
||||
|
||||
|
@ -1029,23 +983,8 @@ int SV_WriteDownloadToClient(client_t *cl, msg_t *msg)
|
|||
Com_sprintf(errorMessage, sizeof(errorMessage), "File \"%s\" is not referenced and cannot be downloaded.", cl->downloadName);
|
||||
}
|
||||
else if (idPack) {
|
||||
#ifdef ELITEFORCE
|
||||
Com_Printf("clientDownload: %d : \"%s\" cannot download Raven pk3 files\n", (int) (cl - svs.clients), cl->downloadName);
|
||||
Com_sprintf(errorMessage, sizeof(errorMessage), "Cannot autodownload Raven pk3 file \"%s\"", cl->downloadName);
|
||||
#else
|
||||
Com_Printf("clientDownload: %d : \"%s\" cannot download id pk3 files\n", (int) (cl - svs.clients), cl->downloadName);
|
||||
#ifndef STANDALONE
|
||||
if(missionPack)
|
||||
{
|
||||
Com_sprintf(errorMessage, sizeof(errorMessage), "Cannot autodownload Team Arena file \"%s\"\n"
|
||||
"The Team Arena mission pack can be found in your local game store.", cl->downloadName);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
Com_sprintf(errorMessage, sizeof(errorMessage), "Cannot autodownload id pk3 file \"%s\"", cl->downloadName);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if ( !(sv_allowDownload->integer & DLF_ENABLE) ||
|
||||
(sv_allowDownload->integer & DLF_NO_UDP) ) {
|
||||
|
@ -1070,9 +1009,7 @@ int SV_WriteDownloadToClient(client_t *cl, msg_t *msg)
|
|||
MSG_WriteByte( msg, svc_download );
|
||||
MSG_WriteShort( msg, 0 ); // client is expecting block zero
|
||||
MSG_WriteLong( msg, -1 ); // illegal file size
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
#endif
|
||||
MSG_WriteString( msg, errorMessage );
|
||||
|
||||
*cl->downloadName = 0;
|
||||
|
@ -1285,10 +1222,8 @@ static void SV_VerifyPaks_f( client_t *cl ) {
|
|||
// start at arg 2 ( skip serverId cl_paks )
|
||||
nCurArg = 1;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!cl->compat)
|
||||
{
|
||||
#endif
|
||||
pArg = Cmd_Argv(nCurArg++);
|
||||
if(!pArg) {
|
||||
bGood = qfalse;
|
||||
|
@ -1304,9 +1239,7 @@ static void SV_VerifyPaks_f( client_t *cl ) {
|
|||
return;
|
||||
}
|
||||
}
|
||||
#ifdef ELITEFORCE
|
||||
}
|
||||
#endif
|
||||
|
||||
// we basically use this while loop to avoid using 'goto' :)
|
||||
while (bGood) {
|
||||
|
@ -1721,9 +1654,6 @@ each of the backup packets.
|
|||
*/
|
||||
static void SV_UserMove( client_t *cl, msg_t *msg, qboolean delta ) {
|
||||
int i;
|
||||
#ifndef ELITEFORCE
|
||||
int key;
|
||||
#endif
|
||||
int cmdCount;
|
||||
usercmd_t nullcmd;
|
||||
usercmd_t cmds[MAX_PACKET_USERCMDS];
|
||||
|
@ -1747,25 +1677,11 @@ static void SV_UserMove( client_t *cl, msg_t *msg, qboolean delta ) {
|
|||
return;
|
||||
}
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
// use the checksum feed in the key
|
||||
key = sv.checksumFeed;
|
||||
// also use the message acknowledge
|
||||
key ^= cl->messageAcknowledge;
|
||||
// also use the last acknowledged server command in the key
|
||||
key ^= MSG_HashKey(cl->reliableCommands[ cl->reliableAcknowledge & (MAX_RELIABLE_COMMANDS-1) ], 32);
|
||||
|
||||
#endif
|
||||
|
||||
Com_Memset( &nullcmd, 0, sizeof(nullcmd) );
|
||||
oldcmd = &nullcmd;
|
||||
for ( i = 0 ; i < cmdCount ; i++ ) {
|
||||
cmd = &cmds[i];
|
||||
#ifdef ELITEFORCE
|
||||
MSG_ReadDeltaUsercmd( msg, oldcmd, cmd );
|
||||
#else
|
||||
MSG_ReadDeltaUsercmdKey( msg, key, oldcmd, cmd );
|
||||
#endif
|
||||
oldcmd = cmd;
|
||||
}
|
||||
|
||||
|
@ -1956,10 +1872,8 @@ void SV_ExecuteClientMessage( client_t *cl, msg_t *msg ) {
|
|||
int c;
|
||||
int serverId;
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
MSG_Bitstream(msg);
|
||||
#endif
|
||||
|
||||
serverId = MSG_ReadLong( msg );
|
||||
cl->messageAcknowledge = MSG_ReadLong( msg );
|
||||
|
@ -2025,10 +1939,9 @@ void SV_ExecuteClientMessage( client_t *cl, msg_t *msg ) {
|
|||
do {
|
||||
c = MSG_ReadByte( msg );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat && c == -1)
|
||||
c = clc_EOF;
|
||||
#endif
|
||||
|
||||
if ( c == clc_EOF )
|
||||
break;
|
||||
|
||||
|
|
|
@ -335,10 +335,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
return 0;
|
||||
case G_FS_GETFILELIST:
|
||||
return FS_GetFileList( VMA(1), VMA(2), VMA(3), args[4] );
|
||||
#ifndef ELITEFORCE
|
||||
case G_FS_SEEK:
|
||||
return FS_Seek( args[1], args[2], args[3] );
|
||||
#endif
|
||||
case G_LOCATE_GAME_DATA:
|
||||
SV_LocateGameData( VMA(1), args[2], args[3], VMA(4), args[5] );
|
||||
return 0;
|
||||
|
@ -358,18 +354,9 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
return SV_AreaEntities( VMA(1), VMA(2), VMA(3), args[4] );
|
||||
case G_ENTITY_CONTACT:
|
||||
return SV_EntityContact( VMA(1), VMA(2), VMA(3), /*int capsule*/ qfalse );
|
||||
#ifndef ELITEFORCE
|
||||
case G_ENTITY_CONTACTCAPSULE:
|
||||
return SV_EntityContact( VMA(1), VMA(2), VMA(3), /*int capsule*/ qtrue );
|
||||
#endif
|
||||
case G_TRACE:
|
||||
SV_Trace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qfalse );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case G_TRACECAPSULE:
|
||||
SV_Trace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], /*int capsule*/ qtrue );
|
||||
return 0;
|
||||
#endif
|
||||
case G_POINT_CONTENTS:
|
||||
return SV_PointContents( VMA(1), args[2] );
|
||||
case G_SET_BRUSH_MODEL:
|
||||
|
@ -428,13 +415,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
case G_DEBUG_POLYGON_DELETE:
|
||||
BotImport_DebugPolygonDelete( args[1] );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case G_REAL_TIME:
|
||||
return Com_RealTime( VMA(1) );
|
||||
case G_SNAPVECTOR:
|
||||
Q_SnapVector(VMA(1));
|
||||
return 0;
|
||||
#endif
|
||||
//====================================
|
||||
|
||||
case BOTLIB_SETUP:
|
||||
|
@ -446,21 +426,8 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
case BOTLIB_LIBVAR_GET:
|
||||
return botlib_export->BotLibVarGet( VMA(1), VMA(2), args[3] );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
case BOTLIB_DEFINE:
|
||||
return botlib_export->PC_AddGlobalDefine( VMA(1) );
|
||||
#else
|
||||
case BOTLIB_PC_ADD_GLOBAL_DEFINE:
|
||||
return botlib_export->PC_AddGlobalDefine( VMA(1) );
|
||||
case BOTLIB_PC_LOAD_SOURCE:
|
||||
return botlib_export->PC_LoadSourceHandle( VMA(1) );
|
||||
case BOTLIB_PC_FREE_SOURCE:
|
||||
return botlib_export->PC_FreeSourceHandle( args[1] );
|
||||
case BOTLIB_PC_READ_TOKEN:
|
||||
return botlib_export->PC_ReadTokenHandle( args[1], VMA(2) );
|
||||
case BOTLIB_PC_SOURCE_FILE_AND_LINE:
|
||||
return botlib_export->PC_SourceFileAndLine( args[1], VMA(2), VMA(3) );
|
||||
#endif
|
||||
case BOTLIB_START_FRAME:
|
||||
return botlib_export->BotLibStartFrame( VMF(1) );
|
||||
case BOTLIB_LOAD_MAP:
|
||||
|
@ -477,14 +444,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
case BOTLIB_USER_COMMAND:
|
||||
SV_ClientThink( &svs.clients[args[1]], VMA(2) );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case BOTLIB_AAS_BBOX_AREAS:
|
||||
return botlib_export->aas.AAS_BBoxAreas( VMA(1), VMA(2), VMA(3), args[4] );
|
||||
case BOTLIB_AAS_AREA_INFO:
|
||||
return botlib_export->aas.AAS_AreaInfo( args[1], VMA(2) );
|
||||
case BOTLIB_AAS_ALTERNATIVE_ROUTE_GOAL:
|
||||
return botlib_export->aas.AAS_AlternativeRouteGoals( VMA(1), args[2], VMA(3), args[4], args[5], VMA(6), args[7], args[8] );
|
||||
#endif
|
||||
case BOTLIB_AAS_ENTITY_INFO:
|
||||
botlib_export->aas.AAS_EntityInfo( args[1], VMA(2) );
|
||||
return 0;
|
||||
|
@ -499,10 +458,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
|
||||
case BOTLIB_AAS_POINT_AREA_NUM:
|
||||
return botlib_export->aas.AAS_PointAreaNum( VMA(1) );
|
||||
#ifndef ELITEFORCE
|
||||
case BOTLIB_AAS_POINT_REACHABILITY_AREA_INDEX:
|
||||
return botlib_export->aas.AAS_PointReachabilityAreaIndex( VMA(1) );
|
||||
#endif
|
||||
case BOTLIB_AAS_TRACE_AREAS:
|
||||
return botlib_export->aas.AAS_TraceAreas( VMA(1), VMA(2), VMA(3), VMA(4), args[5] );
|
||||
|
||||
|
@ -524,12 +479,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
|
||||
case BOTLIB_AAS_AREA_TRAVEL_TIME_TO_GOAL_AREA:
|
||||
return botlib_export->aas.AAS_AreaTravelTimeToGoalArea( args[1], VMA(2), args[3], args[4] );
|
||||
#ifndef ELITEFORCE
|
||||
case BOTLIB_AAS_ENABLE_ROUTING_AREA:
|
||||
return botlib_export->aas.AAS_EnableRoutingArea( args[1], args[2] );
|
||||
case BOTLIB_AAS_PREDICT_ROUTE:
|
||||
return botlib_export->aas.AAS_PredictRoute( VMA(1), args[2], VMA(3), args[4], args[5], args[6], args[7], args[8], args[9], args[10], args[11] );
|
||||
#endif
|
||||
case BOTLIB_AAS_SWIMMING:
|
||||
return botlib_export->aas.AAS_Swimming( VMA(1) );
|
||||
case BOTLIB_AAS_PREDICT_CLIENT_MOVEMENT:
|
||||
|
@ -546,11 +495,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
botlib_export->ea.EA_Command( args[1], VMA(2) );
|
||||
return 0;
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
case BOTLIB_EA_ACTION:
|
||||
botlib_export->ea.EA_Action( args[1], args[2] );
|
||||
return 0;
|
||||
#endif
|
||||
case BOTLIB_EA_GESTURE:
|
||||
botlib_export->ea.EA_Gesture( args[1] );
|
||||
return 0;
|
||||
|
@ -680,11 +624,7 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
botlib_export->ai.BotSetChatGender( args[1], args[2] );
|
||||
return 0;
|
||||
case BOTLIB_AI_SET_CHAT_NAME:
|
||||
#ifdef ELITEFORCE
|
||||
botlib_export->ai.BotSetChatName( args[1], VMA(2));
|
||||
#else
|
||||
botlib_export->ai.BotSetChatName( args[1], VMA(2), args[3] );
|
||||
#endif
|
||||
return 0;
|
||||
|
||||
case BOTLIB_AI_RESET_GOAL_STATE:
|
||||
|
@ -734,11 +674,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
return botlib_export->ai.BotGetMapLocationGoal( VMA(1), VMA(2) );
|
||||
case BOTLIB_AI_AVOID_GOAL_TIME:
|
||||
return FloatAsInt( botlib_export->ai.BotAvoidGoalTime( args[1], args[2] ) );
|
||||
#ifndef ELITEFORCE
|
||||
case BOTLIB_AI_SET_AVOID_GOAL_TIME:
|
||||
botlib_export->ai.BotSetAvoidGoalTime( args[1], args[2], VMF(3));
|
||||
return 0;
|
||||
#endif
|
||||
case BOTLIB_AI_INIT_LEVEL_ITEMS:
|
||||
botlib_export->ai.BotInitLevelItems();
|
||||
return 0;
|
||||
|
@ -768,11 +703,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
case BOTLIB_AI_RESET_MOVE_STATE:
|
||||
botlib_export->ai.BotResetMoveState( args[1] );
|
||||
return 0;
|
||||
#ifndef ELITEFORCE
|
||||
case BOTLIB_AI_ADD_AVOID_SPOT:
|
||||
botlib_export->ai.BotAddAvoidSpot( args[1], VMA(2), VMF(3), args[4] );
|
||||
return 0;
|
||||
#endif
|
||||
case BOTLIB_AI_MOVE_TO_GOAL:
|
||||
botlib_export->ai.BotMoveToGoal( VMA(1), args[2], VMA(3), args[4] );
|
||||
return 0;
|
||||
|
@ -860,7 +790,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
case TRAP_CEIL:
|
||||
return FloatAsInt( ceil( VMF(1) ) );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
case BOTLIB_EA_USE_ITEM:
|
||||
botlib_export->ea.EA_UseItem(args[1], VMA(2));
|
||||
return 0;
|
||||
|
@ -876,7 +805,6 @@ intptr_t SV_GameSystemCalls( intptr_t *args ) {
|
|||
case BOTLIB_EA_ALT_ATTACK:
|
||||
botlib_export->ea.EA_Attack( args[1] );
|
||||
return 0;
|
||||
#endif
|
||||
default:
|
||||
Com_Error( ERR_DROP, "Bad game system trap: %ld", (long int) args[0] );
|
||||
}
|
||||
|
|
|
@ -664,11 +664,7 @@ void SV_Init (void)
|
|||
// server vars
|
||||
sv_rconPassword = Cvar_Get ("rconPassword", "", CVAR_TEMP );
|
||||
sv_privatePassword = Cvar_Get ("sv_privatePassword", "", CVAR_TEMP );
|
||||
#ifdef ELITEFORCE
|
||||
sv_fps = Cvar_Get ("sv_fps", "20", CVAR_SYSTEMINFO | CVAR_TEMP);
|
||||
#else
|
||||
sv_fps = Cvar_Get ("sv_fps", "20", CVAR_TEMP );
|
||||
#endif
|
||||
sv_timeout = Cvar_Get ("sv_timeout", "200", CVAR_TEMP );
|
||||
sv_zombietime = Cvar_Get ("sv_zombietime", "2", CVAR_TEMP );
|
||||
Cvar_Get ("nextmap", "", CVAR_TEMP );
|
||||
|
@ -677,14 +673,9 @@ void SV_Init (void)
|
|||
Cvar_Get ("sv_dlURL", "", CVAR_SERVERINFO | CVAR_ARCHIVE);
|
||||
|
||||
sv_master[0] = Cvar_Get("sv_master1", MASTER_SERVER_NAME, 0);
|
||||
#ifdef ELITEFORCE
|
||||
sv_master[1] = Cvar_Get("sv_master2", "efmaster.tjps.eu", CVAR_ARCHIVE);
|
||||
for(index = 2; index < MAX_MASTER_SERVERS; index++)
|
||||
sv_master[index] = Cvar_Get(va("sv_master%d", index + 1), "", CVAR_ARCHIVE);
|
||||
#else
|
||||
for(index = 1; index < MAX_MASTER_SERVERS; index++)
|
||||
sv_master[index] = Cvar_Get(va("sv_master%d", index + 1), "", CVAR_ARCHIVE);
|
||||
#endif
|
||||
|
||||
sv_reconnectlimit = Cvar_Get ("sv_reconnectlimit", "3", 0);
|
||||
sv_showloss = Cvar_Get ("sv_showloss", "0", 0);
|
||||
|
@ -730,11 +721,9 @@ void SV_FinalMessage( char *message ) {
|
|||
if ( cl->netchan.remoteAddress.type != NA_LOOPBACK ) {
|
||||
SV_SendServerCommand( cl, "print \"%s\n\"\n", message );
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(cl->compat)
|
||||
SV_SendServerCommand(cl, "disconnect Server shutdown: %s", message);
|
||||
else
|
||||
#endif
|
||||
SV_SendServerCommand( cl, "disconnect \"%s\"", message );
|
||||
}
|
||||
// force a snapshot to be sent
|
||||
|
|
|
@ -317,19 +317,12 @@ void SV_MasterHeartbeat(const char *message)
|
|||
|
||||
// this command should be changed if the server info / status format
|
||||
// ever incompatably changes
|
||||
#ifdef ELITEFORCE
|
||||
if(adr[i][0].type != NA_BAD)
|
||||
NET_OutOfBandPrint(NS_SERVER, adr[i][0], "\\heartbeat\\%d\\gamename\\%s\\",
|
||||
Cvar_VariableIntegerValue("net_port"), message);
|
||||
if(adr[i][1].type != NA_BAD)
|
||||
NET_OutOfBandPrint(NS_SERVER, adr[i][1], "\\heartbeat\\%d\\gamename\\%s\\",
|
||||
Cvar_VariableIntegerValue("net_port6"), message);
|
||||
#else
|
||||
if(adr[i][0].type != NA_BAD)
|
||||
NET_OutOfBandPrint( NS_SERVER, adr[i][0], "heartbeat %s\n", message);
|
||||
if(adr[i][1].type != NA_BAD)
|
||||
NET_OutOfBandPrint( NS_SERVER, adr[i][1], "heartbeat %s\n", message);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -685,11 +678,7 @@ void SVC_Info( netadr_t from ) {
|
|||
Info_SetValueForKey( infostring, "game", gamedir );
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
NET_OutOfBandPrint( NS_SERVER, from, "infoResponse \"%s\"", infostring );
|
||||
#else
|
||||
NET_OutOfBandPrint( NS_SERVER, from, "infoResponse\n%s", infostring );
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -794,12 +783,6 @@ static void SV_ConnectionlessPacket( netadr_t from, msg_t *msg ) {
|
|||
MSG_BeginReadingOOB( msg );
|
||||
MSG_ReadLong( msg ); // skip the -1 marker
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
if (!Q_strncmp("connect", (char *) &msg->data[4], 7)) {
|
||||
Huff_Decompress(msg, 12);
|
||||
}
|
||||
#endif
|
||||
|
||||
s = MSG_ReadStringLine( msg );
|
||||
Cmd_TokenizeString( s );
|
||||
|
||||
|
@ -876,9 +859,7 @@ void SV_PacketEvent( netadr_t from, msg_t *msg ) {
|
|||
cl->netchan.remoteAddress.port = from.port;
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
msg->compat = cl->compat;
|
||||
#endif
|
||||
|
||||
// make sure it is a valid, in sequence packet
|
||||
if (SV_Netchan_Process(cl, msg)) {
|
||||
|
|
|
@ -24,116 +24,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "../qcommon/qcommon.h"
|
||||
#include "server.h"
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
#ifdef LEGACY_PROTOCOL
|
||||
/*
|
||||
==============
|
||||
SV_Netchan_Encode
|
||||
|
||||
// first four bytes of the data are always:
|
||||
long reliableAcknowledge;
|
||||
|
||||
==============
|
||||
*/
|
||||
static void SV_Netchan_Encode(client_t *client, msg_t *msg, const char *clientCommandString)
|
||||
{
|
||||
long i, index;
|
||||
byte key, *string;
|
||||
int srdc, sbit;
|
||||
qboolean soob;
|
||||
|
||||
if ( msg->cursize < SV_ENCODE_START ) {
|
||||
return;
|
||||
}
|
||||
|
||||
srdc = msg->readcount;
|
||||
sbit = msg->bit;
|
||||
soob = msg->oob;
|
||||
|
||||
msg->bit = 0;
|
||||
msg->readcount = 0;
|
||||
msg->oob = qfalse;
|
||||
|
||||
/* reliableAcknowledge = */ MSG_ReadLong(msg);
|
||||
|
||||
msg->oob = soob;
|
||||
msg->bit = sbit;
|
||||
msg->readcount = srdc;
|
||||
|
||||
string = (byte *) clientCommandString;
|
||||
index = 0;
|
||||
// xor the client challenge with the netchan sequence number
|
||||
key = client->challenge ^ client->netchan.outgoingSequence;
|
||||
for (i = SV_ENCODE_START; i < msg->cursize; i++) {
|
||||
// modify the key with the last received and with this message acknowledged client command
|
||||
if (!string[index])
|
||||
index = 0;
|
||||
if (string[index] > 127 || string[index] == '%') {
|
||||
key ^= '.' << (i & 1);
|
||||
}
|
||||
else {
|
||||
key ^= string[index] << (i & 1);
|
||||
}
|
||||
index++;
|
||||
// encode the data with this key
|
||||
*(msg->data + i) = *(msg->data + i) ^ key;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
SV_Netchan_Decode
|
||||
|
||||
// first 12 bytes of the data are always:
|
||||
long serverId;
|
||||
long messageAcknowledge;
|
||||
long reliableAcknowledge;
|
||||
|
||||
==============
|
||||
*/
|
||||
static void SV_Netchan_Decode( client_t *client, msg_t *msg ) {
|
||||
int serverId, messageAcknowledge, reliableAcknowledge;
|
||||
int i, index, srdc, sbit;
|
||||
qboolean soob;
|
||||
byte key, *string;
|
||||
|
||||
srdc = msg->readcount;
|
||||
sbit = msg->bit;
|
||||
soob = msg->oob;
|
||||
|
||||
msg->oob = qfalse;
|
||||
|
||||
serverId = MSG_ReadLong(msg);
|
||||
messageAcknowledge = MSG_ReadLong(msg);
|
||||
reliableAcknowledge = MSG_ReadLong(msg);
|
||||
|
||||
msg->oob = soob;
|
||||
msg->bit = sbit;
|
||||
msg->readcount = srdc;
|
||||
|
||||
string = (byte *)client->reliableCommands[ reliableAcknowledge & (MAX_RELIABLE_COMMANDS-1) ];
|
||||
index = 0;
|
||||
//
|
||||
key = client->challenge ^ serverId ^ messageAcknowledge;
|
||||
for (i = msg->readcount + SV_DECODE_START; i < msg->cursize; i++) {
|
||||
// modify the key with the last sent and acknowledged server command
|
||||
if (!string[index])
|
||||
index = 0;
|
||||
if (string[index] > 127 || string[index] == '%') {
|
||||
key ^= '.' << (i & 1);
|
||||
}
|
||||
else {
|
||||
key ^= string[index] << (i & 1);
|
||||
}
|
||||
index++;
|
||||
// decode the data with this key
|
||||
*(msg->data + i) = *(msg->data + i) ^ key;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
=================
|
||||
SV_Netchan_FreeQueue
|
||||
|
@ -165,13 +55,6 @@ void SV_Netchan_TransmitNextInQueue(client_t *client)
|
|||
Com_DPrintf("#462 Netchan_TransmitNextFragment: popping a queued message for transmit\n");
|
||||
netbuf = client->netchan_start_queue;
|
||||
|
||||
#ifndef ELITEFORCE
|
||||
#ifdef LEGACY_PROTOCOL
|
||||
if(client->compat)
|
||||
SV_Netchan_Encode(client, &netbuf->msg, netbuf->clientCommandString);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Netchan_Transmit(&client->netchan, netbuf->msg.cursize, netbuf->msg.data);
|
||||
|
||||
// pop from queue
|
||||
|
@ -226,9 +109,7 @@ then buffer them and make sure they get sent in correct order
|
|||
|
||||
void SV_Netchan_Transmit( client_t *client, msg_t *msg)
|
||||
{
|
||||
#ifdef ELITEFORCE
|
||||
if(!msg->compat)
|
||||
#endif
|
||||
MSG_WriteByte( msg, svc_EOF );
|
||||
|
||||
|
||||
|
@ -253,12 +134,6 @@ void SV_Netchan_Transmit( client_t *client, msg_t *msg)
|
|||
}
|
||||
else
|
||||
{
|
||||
#ifndef ELITEFORCE
|
||||
#ifdef LEGACY_PROTOCOL
|
||||
if(client->compat)
|
||||
SV_Netchan_Encode(client, msg, client->lastClientCommandString);
|
||||
#endif
|
||||
#endif
|
||||
Netchan_Transmit( &client->netchan, msg->cursize, msg->data );
|
||||
}
|
||||
}
|
||||
|
@ -273,12 +148,7 @@ qboolean SV_Netchan_Process( client_t *client, msg_t *msg ) {
|
|||
ret = Netchan_Process( &client->netchan, msg );
|
||||
if (!ret)
|
||||
return qfalse;
|
||||
#ifndef ELITEFORCE
|
||||
#ifdef LEGACY_PROTOCOL
|
||||
if(client->compat)
|
||||
SV_Netchan_Decode(client, msg);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return qtrue;
|
||||
}
|
||||
|
||||
|
|
|
@ -154,9 +154,7 @@ static void SV_WriteSnapshotToClient( client_t *client, msg_t *msg ) {
|
|||
|
||||
MSG_WriteByte (msg, svc_snapshot);
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(msg->compat)
|
||||
#endif
|
||||
if(msg->compat)
|
||||
MSG_WriteLong( msg, client->lastClientCommand );
|
||||
|
||||
|
||||
|
@ -241,11 +239,7 @@ Build a client snapshot structure
|
|||
=============================================================================
|
||||
*/
|
||||
|
||||
#ifndef XTRA
|
||||
#define MAX_SNAPSHOT_ENTITIES 1024
|
||||
#else
|
||||
#define MAX_SNAPSHOT_ENTITIES 2048
|
||||
#endif
|
||||
typedef struct {
|
||||
int numSnapshotEntities;
|
||||
int snapshotEntities[MAX_SNAPSHOT_ENTITIES];
|
||||
|
@ -424,15 +418,6 @@ static void SV_AddEntitiesVisibleFromPoint( vec3_t origin, clientSnapshot_t *fra
|
|||
|
||||
// if it's a portal entity, add everything visible from its camera position
|
||||
if ( ent->r.svFlags & SVF_PORTAL ) {
|
||||
#ifndef ELITEFORCE
|
||||
if ( ent->s.generic1 ) {
|
||||
vec3_t dir;
|
||||
VectorSubtract(ent->s.origin, origin, dir);
|
||||
if ( VectorLengthSquared(dir) > (float) ent->s.generic1 * ent->s.generic1 ) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
SV_AddEntitiesVisibleFromPoint( ent->s.origin2, frame, eNums, qtrue );
|
||||
}
|
||||
|
||||
|
@ -620,22 +605,18 @@ void SV_SendClientSnapshot( client_t *client ) {
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef ELITEFORCE
|
||||
if(client->compat)
|
||||
{
|
||||
MSG_InitOOB(&msg, msg_buf, sizeof(msg_buf));
|
||||
msg.compat = qtrue;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
MSG_Init (&msg, msg_buf, sizeof(msg_buf));
|
||||
msg.allowoverflow = qtrue;
|
||||
|
||||
// NOTE, MRE: all server->client messages now acknowledge
|
||||
// let the client know which reliable clientCommands we have received
|
||||
#ifdef ELITEFORCE
|
||||
if(!client->compat)
|
||||
#endif
|
||||
MSG_WriteLong( &msg, client->lastClientCommand );
|
||||
|
||||
// (re)send any reliable server commands
|
||||
|
|
|
@ -222,7 +222,6 @@ void SV_LinkEntity( sharedEntity_t *gEnt ) {
|
|||
// encode the size into the entityState_t for client prediction
|
||||
if ( gEnt->r.bmodel ) {
|
||||
gEnt->s.solid = SOLID_BMODEL; // a solid_box will never create this value
|
||||
#ifdef ELITEFORCE
|
||||
} else if ( gEnt->r.contents & ( CONTENTS_SOLID | CONTENTS_BODY | CONTENTS_SHOTCLIP ) ) {
|
||||
if(gEnt->r.svFlags & SVF_SHIELD_BBOX)
|
||||
{
|
||||
|
@ -277,9 +276,6 @@ void SV_LinkEntity( sharedEntity_t *gEnt ) {
|
|||
}
|
||||
else
|
||||
{
|
||||
#else
|
||||
} else if ( gEnt->r.contents & ( CONTENTS_SOLID | CONTENTS_BODY ) ) {
|
||||
#endif
|
||||
// assume that x/y are equal and symetric
|
||||
i = gEnt->r.maxs[0];
|
||||
if (i<1)
|
||||
|
@ -300,9 +296,7 @@ void SV_LinkEntity( sharedEntity_t *gEnt ) {
|
|||
k = 1;
|
||||
if (k>255)
|
||||
k = 255;
|
||||
#ifdef ELITEFORCE
|
||||
}
|
||||
#endif
|
||||
|
||||
gEnt->s.solid = (k<<16) | (j<<8) | i;
|
||||
} else {
|
||||
|
|
|
@ -81,12 +81,10 @@ typedef enum {
|
|||
UI_GETGLCONFIG,
|
||||
UI_GETCLIENTSTATE,
|
||||
UI_GETCONFIGSTRING,
|
||||
#ifdef ELITEFORCE
|
||||
UI_LAN_GETLOCALSERVERCOUNT,
|
||||
UI_LAN_GETLOCALSERVERADDRESSSTRING,
|
||||
UI_LAN_GETGLOBALSERVERCOUNT,
|
||||
UI_LAN_GETGLOBALSERVERADDRESSSTRING,
|
||||
#endif
|
||||
UI_LAN_GETGLOBALSERVERADDRESSSTRING,
|
||||
UI_LAN_GETPINGQUEUECOUNT,
|
||||
UI_LAN_CLEARPING,
|
||||
UI_LAN_GETPING,
|
||||
|
@ -94,47 +92,8 @@ typedef enum {
|
|||
UI_CVAR_REGISTER,
|
||||
UI_CVAR_UPDATE,
|
||||
UI_MEMORY_REMAINING,
|
||||
#ifdef ELITEFORCE
|
||||
UI_SET_CDKEY,
|
||||
UI_R_MODELBOUNDS,
|
||||
#else
|
||||
UI_GET_CDKEY,
|
||||
UI_SET_CDKEY,
|
||||
UI_R_REGISTERFONT,
|
||||
UI_R_MODELBOUNDS,
|
||||
UI_PC_ADD_GLOBAL_DEFINE,
|
||||
UI_PC_LOAD_SOURCE,
|
||||
UI_PC_FREE_SOURCE,
|
||||
UI_PC_READ_TOKEN,
|
||||
UI_PC_SOURCE_FILE_AND_LINE,
|
||||
UI_S_STOPBACKGROUNDTRACK,
|
||||
UI_S_STARTBACKGROUNDTRACK,
|
||||
UI_REAL_TIME,
|
||||
UI_LAN_GETSERVERCOUNT,
|
||||
UI_LAN_GETSERVERADDRESSSTRING,
|
||||
UI_LAN_GETSERVERINFO,
|
||||
UI_LAN_MARKSERVERVISIBLE,
|
||||
UI_LAN_UPDATEVISIBLEPINGS,
|
||||
UI_LAN_RESETPINGS,
|
||||
UI_LAN_LOADCACHEDSERVERS,
|
||||
UI_LAN_SAVECACHEDSERVERS,
|
||||
UI_LAN_ADDSERVER,
|
||||
UI_LAN_REMOVESERVER,
|
||||
UI_CIN_PLAYCINEMATIC,
|
||||
UI_CIN_STOPCINEMATIC,
|
||||
UI_CIN_RUNCINEMATIC,
|
||||
UI_CIN_DRAWCINEMATIC,
|
||||
UI_CIN_SETEXTENTS,
|
||||
UI_R_REMAP_SHADER,
|
||||
UI_VERIFY_CDKEY,
|
||||
UI_LAN_SERVERSTATUS,
|
||||
UI_LAN_GETSERVERPING,
|
||||
UI_LAN_SERVERISVISIBLE,
|
||||
UI_LAN_COMPARESERVERS,
|
||||
// 1.32
|
||||
UI_FS_SEEK,
|
||||
UI_SET_PBCLSTATUS,
|
||||
#endif
|
||||
|
||||
UI_MEMSET = 100,
|
||||
UI_MEMCPY,
|
||||
|
@ -193,9 +152,7 @@ typedef enum {
|
|||
|
||||
UI_DRAW_CONNECT_SCREEN,
|
||||
// void UI_DrawConnectScreen( qboolean overlay );
|
||||
#ifndef ELITEFORCE
|
||||
UI_HASUNIQUECDKEY
|
||||
#endif
|
||||
|
||||
// if !overlay, the background will be drawn, otherwise it will be
|
||||
// overlayed over whatever the cgame has drawn.
|
||||
// a GetClientState syscall will be made to get the current strings
|
||||
|
|
Loading…
Reference in a new issue