/* ================ SV_EntityScript get entity script for current map ================ */ char *SV_EntityScript( void ) { string entfilename; char *ents; size_t ft1, ft2; if( !sv.worldmodel ) return NULL; // check for entfile too Q_strncpy( entfilename, sv.worldmodel->name, sizeof( entfilename )); FS_StripExtension( entfilename ); FS_DefaultExtension( entfilename, ".ent" ); // make sure what entity patch is never than bsp ft1 = FS_FileTime( sv.worldmodel->name, false ); ft2 = FS_FileTime( entfilename, true ); if( ft2 != -1 ) { if( ft1 > ft2 ) { MsgDev( D_INFO, "^1Entity patch is older than BSP. Ignored.\n", entfilename ); } else if(( ents = FS_LoadFile( entfilename, NULL, true )) != NULL ) { MsgDev( D_INFO, "^2Read entity patch:^7 %s\n", entfilename ); return ents; } } // use internal entities return sv.worldmodel->entities; }
/* ================== CL_LevelShot_f splash logo while map is loading ================== */ void CL_LevelShot_f( void ) { size_t ft1, ft2; string filename; if( cls.scrshot_request != scrshot_plaque ) return; cls.scrshot_request = scrshot_inactive; // check for exist if( cls.demoplayback && ( cls.demonum != -1 )) { Q_sprintf( cls.shotname, "levelshots/%s_%s.bmp", cls.demoname, glState.wideScreen ? "16x9" : "4x3" ); Q_snprintf( filename, sizeof( filename ), "demos/%s.dem", cls.demoname ); // make sure what levelshot is newer than demo ft1 = FS_FileTime( filename, false ); ft2 = FS_FileTime( cls.shotname, true ); } else { Q_sprintf( cls.shotname, "levelshots/%s_%s.bmp", clgame.mapname, glState.wideScreen ? "16x9" : "4x3" ); // make sure what levelshot is newer than bsp ft1 = FS_FileTime( cl.worldmodel->name, false ); ft2 = FS_FileTime( cls.shotname, true ); } // missing levelshot or level never than levelshot if( ft2 == -1 || ft1 > ft2 ) cls.scrshot_action = scrshot_plaque; // build new frame for levelshot else cls.scrshot_action = scrshot_inactive; // disable - not needs }
/* ============= COM_CompareFileTime ============= */ int COM_CompareFileTime( const char *filename1, const char *filename2, int *iCompare ) { int bRet = 0; *iCompare = 0; if( filename1 && filename2 ) { int ft1 = FS_FileTime( filename1, false ); int ft2 = FS_FileTime( filename2, false ); // one of files is missing if( ft1 == -1 || ft2 == -1 ) return bRet; *iCompare = Host_CompareFileTime( ft1, ft2 ); bRet = 1; } return bRet; }