Fixes and other

- removed all #ifdefs ELITEFORCE nad #ifdefs XTRA
- changes to fix shader remapping
This commit is contained in:
Walter Julius Hennecke 2012-08-01 15:29:19 +02:00
parent c44406e24f
commit b90a89ea61
53 changed files with 312 additions and 2957 deletions

View file

@ -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
};
//===========================================================================

View file

@ -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();

View file

@ -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++)

View file

@ -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;

View file

@ -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
//===========================================================================
//

View file

@ -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;

View file

@ -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;
//----------------------------------------------

View file

@ -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] );

View file

@ -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 );
}

View file

@ -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");

View file

@ -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

View file

@ -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;
}

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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 );

View file

@ -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 );

View file

@ -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);

View file

@ -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
}
/*

View file

@ -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();

View file

@ -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 {

View file

@ -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

View file

@ -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;

View file

@ -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) {

View file

@ -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

View file

@ -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
/*

View file

@ -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 ) ) {

View file

@ -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];

View file

@ -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

View file

@ -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 )
{

View file

@ -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 {

View file

@ -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 );

View file

@ -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

View file

@ -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 );

View file

@ -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;

View file

@ -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

View file

@ -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 );

View file

@ -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:

View file

@ -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

View file

@ -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;

View file

@ -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 );
//

View file

@ -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;
}

View file

@ -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
/*
====================

View file

@ -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;

View file

@ -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;

View file

@ -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] );
}

View file

@ -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

View file

@ -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)) {

View file

@ -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;
}

View file

@ -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

View file

@ -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 {

View file

@ -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