Add hack to wrap save time

This commit is contained in:
mittorn 2018-08-14 20:46:18 +07:00
parent 05c2e9ad92
commit 16b12b122c
3 changed files with 21 additions and 7 deletions

View File

@ -19,6 +19,7 @@ cvar_t cvar_agibcount = { "mp_agibcount","8", FCVAR_SERVER };
cvar_t mp_gravgun_players = { "mp_gravgun_players", "0", FCVAR_SERVER };
cvar_t mp_fixhornetbug = { "mp_fixhornetbug", "0", FCVAR_SERVER };
cvar_t mp_fixsavetime = { "mp_fixsavetime", "0", FCVAR_SERVER };
cvar_t mp_checkentities = { "mp_checkentities", "0", FCVAR_SERVER };
cvar_t mp_touchmenu = { "mp_touchmenu", "1", FCVAR_SERVER };
cvar_t mp_touchname = { "mp_touchname", "", FCVAR_SERVER };

View File

@ -18,6 +18,7 @@ extern cvar_t mp_spectator;
extern cvar_t mp_fixhornetbug;
extern cvar_t mp_checkentities;
extern cvar_t mp_touchmenu;
extern cvar_t mp_fixsavetime;
// distance clipping (client.cpp)
// useful for open world

View File

@ -1829,6 +1829,9 @@ void UTIL_StripToken( const char *pKey, char *pDest )
pDest[i] = 0;
}
bool g_isReadingHeader;
float g_SaveTime;
// --------------------------------------------------------------
//
// CSave
@ -2420,17 +2423,24 @@ int CRestore::ReadField( void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCou
switch( pTest->fieldType )
{
case FIELD_TIME:
#ifdef __VFP_FP__
memcpy( &timeData, pInputData, 4 );
// Re-base time variables
timeData += time;
if( mp_fixsavetime.value )
{
if( g_isReadingHeader )
g_SaveTime = timeData;
if( g_SaveTime > 10000 && timeData > 0.1 )
{
timeData -= g_SaveTime - 500;
if( timeData && timeData < 0.1 )
timeData = 0.1;
}
}
memcpy( pOutputData, &timeData, 4 );
#else
timeData = *(float *)pInputData;
// Re-base time variables
timeData += time;
*( (float *)pOutputData ) = timeData;
#endif
break;
case FIELD_FLOAT:
memcpy( pOutputData, pInputData, 4 );
@ -2575,6 +2585,8 @@ int CRestore::ReadFields( const char *pname, void *pBaseData, TYPEDESCRIPTION *p
int lastField, fileCount;
HEADER header;
g_isReadingHeader = !strcmp( pname, "Save Header" );
i = ReadShort();
ASSERT( i == sizeof(int) ); // First entry should be an int