This is an automated email from the git hooks/post-receive script. smcv pushed a commit to annotated tag 1.42d in repository iortcw.
commit 2e3c5fd2da204ea0f8cc2e51dd95ff09a1d5ccb9 Author: MAN-AT-ARMS <m4n4t4...@gmail.com> Date: Sat Dec 19 07:37:31 2015 -0500 SP: Fix loading cutscene autosaves --- SP/code/game/g_save.c | 158 ++++++++++++++++++++++++-------------------------- 1 file changed, 76 insertions(+), 82 deletions(-) diff --git a/SP/code/game/g_save.c b/SP/code/game/g_save.c index 45b150b..f7fa94c 100644 --- a/SP/code/game/g_save.c +++ b/SP/code/game/g_save.c @@ -1267,8 +1267,6 @@ qboolean G_SaveGame( char *username ) { G_SaveWriteError(); } - - // write out the entity structures i = sizeof( gentity_t ); if ( !G_SaveWrite( &i, sizeof( i ), f ) ) { @@ -1333,7 +1331,6 @@ qboolean G_SaveGame( char *username ) { G_SaveWriteError(); } - trap_FS_FCloseFile( f ); // check the byte count @@ -1374,6 +1371,7 @@ G_LoadGame */ void G_LoadGame( char *filename ) { char mapname[MAX_QPATH]; + char mapstr[MAX_QPATH]; fileHandle_t f; int i, leveltime, size, last; gentity_t *ent; @@ -1420,6 +1418,7 @@ void G_LoadGame( char *filename ) { // read the mapname (this is only used in the sever exe, so just discard it) trap_FS_Read( mapname, MAX_QPATH, f ); + Com_sprintf( mapstr, MAX_QPATH, "%s", mapname ); // read the level time trap_FS_Read( &i, sizeof( i ), f ); @@ -1498,7 +1497,6 @@ void G_LoadGame( char *filename ) { } trap_Cvar_Set( "r_savegameFogColor", infoString ); } - trap_SetConfigstring( CS_FOGVARS, infoString ); } //----(SA) end @@ -1513,96 +1511,96 @@ void G_LoadGame( char *filename ) { } } - - - // reset all AAS blocking entities trap_AAS_SetAASBlockingEntity( vec3_origin, vec3_origin, -1 ); - // read the entity structures - trap_FS_Read( &i, sizeof( i ), f ); - size = i; - last = 0; - while ( 1 ) - { + if ( Q_stricmpn( mapstr, "cutscene", 8 ) ) { // Don't read in this stuff for cutscenes + // read the entity structures trap_FS_Read( &i, sizeof( i ), f ); - if ( i < 0 ) { - break; - } - if ( i >= MAX_GENTITIES ) { - trap_FS_FCloseFile( f ); - G_Error( "G_LoadGame: entitynum out of range (%i, MAX = %i)\n", i, MAX_GENTITIES ); - } - if ( i >= level.num_entities ) { // notify server - level.num_entities = i; - serverEntityUpdate = qtrue; - } - ent = &g_entities[i]; - ReadEntity( f, ent, size ); - // free all entities that we skipped - for ( ; last < i; last++ ) { - if ( g_entities[last].inuse && i != ENTITYNUM_WORLD ) { - if ( last < MAX_CLIENTS ) { - trap_DropClient( last, "" ); - } else { - G_FreeEntity( &g_entities[last] ); + size = i; + last = 0; + while ( 1 ) + { + trap_FS_Read( &i, sizeof( i ), f ); + if ( i < 0 ) { + break; + } + if ( i >= MAX_GENTITIES ) { + trap_FS_FCloseFile( f ); + G_Error( "G_LoadGame: entitynum out of range (%i, MAX = %i)\n", i, MAX_GENTITIES ); + } + if ( i >= level.num_entities ) { // notify server + level.num_entities = i; + serverEntityUpdate = qtrue; + } + ent = &g_entities[i]; + ReadEntity( f, ent, size ); + // free all entities that we skipped + for ( ; last < i; last++ ) { + if ( g_entities[last].inuse && i != ENTITYNUM_WORLD ) { + if ( last < MAX_CLIENTS ) { + trap_DropClient( last, "" ); + } else { + G_FreeEntity( &g_entities[last] ); + } } } + last = i + 1; } - last = i + 1; - } - // clear all remaining entities - for ( ent = &g_entities[last] ; last < MAX_GENTITIES ; last++, ent++ ) { - memset( ent, 0, sizeof( *ent ) ); - ent->classname = "freed"; - ent->freetime = level.time; - ent->inuse = qfalse; - } + // clear all remaining entities + for ( ent = &g_entities[last] ; last < MAX_GENTITIES ; last++, ent++ ) { + memset( ent, 0, sizeof( *ent ) ); + ent->classname = "freed"; + ent->freetime = level.time; + ent->inuse = qfalse; + } - // read the client structures - trap_FS_Read( &i, sizeof( i ), f ); - size = i; - while ( 1 ) - { + // read the client structures trap_FS_Read( &i, sizeof( i ), f ); - if ( i < 0 ) { - break; - } - if ( i > MAX_CLIENTS ) { - trap_FS_FCloseFile( f ); - G_Error( "G_LoadGame: clientnum out of range\n" ); - } - cl = &level.clients[i]; - if ( cl->pers.connected == CON_DISCONNECTED ) { - trap_FS_FCloseFile( f ); - G_Error( "G_LoadGame: client mis-match in savegame" ); + size = i; + while ( 1 ) + { + trap_FS_Read( &i, sizeof( i ), f ); + if ( i < 0 ) { + break; + } + if ( i > MAX_CLIENTS ) { + trap_FS_FCloseFile( f ); + G_Error( "G_LoadGame: clientnum out of range\n" ); + } + cl = &level.clients[i]; + if ( cl->pers.connected == CON_DISCONNECTED ) { + trap_FS_FCloseFile( f ); + G_Error( "G_LoadGame: client mis-match in savegame" ); + } + ReadClient( f, cl, size ); } - ReadClient( f, cl, size ); - } - // read the cast_state structures - trap_FS_Read( &i, sizeof( i ), f ); - size = i; - while ( 1 ) - { + // read the cast_state structures trap_FS_Read( &i, sizeof( i ), f ); - if ( i < 0 ) { - break; + size = i; + while ( 1 ) + { + trap_FS_Read( &i, sizeof( i ), f ); + if ( i < 0 ) { + break; + } + if ( i > MAX_CLIENTS ) { + trap_FS_FCloseFile( f ); + G_Error( "G_LoadGame: clientnum out of range\n" ); + } + cs = &caststates[i]; + ReadCastState( f, cs, size ); } - if ( i > MAX_CLIENTS ) { - trap_FS_FCloseFile( f ); - G_Error( "G_LoadGame: clientnum out of range\n" ); + + // inform server of entity count if it has increased + if ( serverEntityUpdate ) { + // let the server system know that there are more entities + trap_LocateGameData( level.gentities, level.num_entities, sizeof( gentity_t ), + &level.clients[0].ps, sizeof( level.clients[0] ) ); } - cs = &caststates[i]; - ReadCastState( f, cs, size ); - } - // inform server of entity count if it has increased - if ( serverEntityUpdate ) { - // let the server system know that there are more entities - trap_LocateGameData( level.gentities, level.num_entities, sizeof( gentity_t ), - &level.clients[0].ps, sizeof( level.clients[0] ) ); } //----(SA) moved these up in ver 15 @@ -1621,7 +1619,6 @@ void G_LoadGame( char *filename ) { trap_SetConfigstring( CS_MUSIC_QUEUE, musicString ); } } - } if ( ver > 13 ) { @@ -1633,11 +1630,8 @@ void G_LoadGame( char *filename ) { aicast_skillscale = (float)i / (float)GSKILL_MAX; } } - //----(SA) end moved - - trap_FS_FCloseFile( f ); // now increment the attempts field and update totalplaytime according to cvar -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git _______________________________________________ Pkg-games-commits mailing list Pkg-games-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits