X-Git-Url: https://harrygodden.com/git/?p=csRadar.git;a=blobdiff_plain;f=vfilesys.h;h=fc4cec805886c749f37df2cdadb29f5677eeaae3;hp=8441c830bf1545184ed7616d0ade8a88e2f91c70;hb=HEAD;hpb=1d2752b69b6285d5eb6436728c6cf84228a9ccde diff --git a/vfilesys.h b/vfilesys.h index 8441c83..fc4cec8 100644 --- a/vfilesys.h +++ b/vfilesys.h @@ -1,6 +1,24 @@ +// This software is not affiliated with Valve Corporation +// We are not affiliated, associated, authorized, endorsed by, or in any way officially +// connected with Valve Corporation, or any of its subsidiaries or its affiliates. +// +// All trademarks are property of their respective owners + // Abstract Valve file system //======================================================================================================================= +// Initialize game directories / pakfile +void fs_set_gameinfo( const char *path ); +void fs_exit(void); + +// Read asset as binary in full. Will search VPK, then searchpaths, or return NULL if not found +char *valve_fs_get( const char *path ); + +// Implementation +//======================================================================================================================= + +#ifdef VALVE_IMPLEMENTATION + struct valve_filesystem { char gamedir[ 512 ]; @@ -25,12 +43,11 @@ void fs_set_gameinfo( const char *path ) // Set gamedir strcpy( fs->gamedir, path ); - csr_path_winunix( fs->gamedir ); - *csr_findext( fs->gamedir, '/' ) = 0x00; + csr_downlvl( fs->gamedir ); // Set exe dir strcpy( fs->exedir, fs->gamedir ); - strcat( fs->exedir, "../" ); + csr_downlvl( fs->exedir ); // Get all search paths from file vdf_node *search_paths = vdf_next(vdf_next(vdf_next( info, "GameInfo", NULL ), "FileSystem", NULL ), "SearchPaths", NULL ); @@ -76,19 +93,19 @@ void fs_set_gameinfo( const char *path ) if( !fs->vpk ) { - fprintf( stderr, "Could not locate pak01_dir.vpk in %i searchpaths. Stock models will not load!", csr_sb_count( fs->searchpaths ) ); + log_error( "Could not locate pak01_dir.vpk in %i searchpaths. Stock models will not load!\n", csr_sb_count( fs->searchpaths ) ); } - printf( "fs_info:\n\ - gamedir: %s\n\ - exedir: %s\n\ - bin: %s\n\ - pack: %s\n\ - searchpaths:\n", fs->gamedir, fs->exedir, fs->bindir, pack_path ); + log_info( "fs_info:\n" ); + log_info( " gamedir: %s\n", fs->gamedir ); + log_info( " exedir: %s\n", fs->exedir ); + log_info( " bin: %s\n", fs->bindir ); + log_info( " pack: %s\n", pack_path ); + log_info( " searchpaths:\n" ); for( int i = 0; i < csr_sb_count( fs->searchpaths ); i ++ ) { - printf( " %s\n", fs->searchpaths[i] ); + log_info( " '%s'\n", fs->searchpaths[i] ); } } @@ -145,7 +162,7 @@ char *valve_fs_get( const char *path ) if( !fs->current_archive ) { - fprintf( stderr, "Could not locate %s\n", pak ); + log_error( "Could not locate %s\n", pak ); return NULL; } } @@ -182,3 +199,5 @@ char *valve_fs_get( const char *path ) return NULL; } + +#endif