/* =========================================================================== Return to Castle Wolfenstein single player GPL Source Code Copyright (C) 1999-2010 id Software LLC, a ZeniMax Media company. This file is part of the Return to Castle Wolfenstein single player GPL Source Code (“RTCW SP Source Code”). RTCW SP Source Code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. RTCW SP Source Code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with RTCW SP Source Code. If not, see . In addition, the RTCW SP Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the RTCW SP Source Code. If not, please request a copy in writing from id Software at the address below. If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA. =========================================================================== */ //=========================================================================== // // Name: l_qfiles.h // Function: - // Programmer: Mr Elusive // Last update: 1999-12-01 // Tab Size: 3 //=========================================================================== #include "../qcommon/unzip.h" #define QFILETYPE_UNKNOWN 0x8000 #define QFILETYPE_PAK 0x0001 #define QFILETYPE_PK3 0x0002 #define QFILETYPE_BSP 0x0004 #define QFILETYPE_MAP 0x0008 #define QFILETYPE_MDL 0x0010 #define QFILETYPE_MD2 0x0020 #define QFILETYPE_MD3 0x0040 #define QFILETYPE_WAL 0x0080 #define QFILETYPE_WAV 0x0100 #define QFILETYPE_AAS 0x4000 #define QFILEEXT_UNKNOWN "" #define QFILEEXT_PAK ".PAK" #define QFILEEXT_PK3 ".PK3" #define QFILEEXT_SIN ".SIN" #define QFILEEXT_BSP ".BSP" #define QFILEEXT_MAP ".MAP" #define QFILEEXT_MDL ".MDL" #define QFILEEXT_MD2 ".MD2" #define QFILEEXT_MD3 ".MD3" #define QFILEEXT_WAL ".WAL" #define QFILEEXT_WAV ".WAV" #define QFILEEXT_AAS ".AAS" //maximum path length #ifndef _MAX_PATH #define _MAX_PATH 1024 #endif //for Sin packs #define MAX_PAK_FILENAME_LENGTH 120 #define SINPAKHEADER ( ( 'K' << 24 ) + ( 'A' << 16 ) + ( 'P' << 8 ) + 'S' ) typedef struct { char name[MAX_PAK_FILENAME_LENGTH]; int filepos, filelen; } dsinpackfile_t; typedef struct quakefile_s { char pakfile[_MAX_PATH]; char filename[_MAX_PATH]; char origname[_MAX_PATH]; int zipfile; int type; int offset; int length; unz_s zipinfo; struct quakefile_s *next; } quakefile_t; //returns the file extension for the given type char *QuakeFileTypeExtension( int type ); //returns the file type for the given extension int QuakeFileExtensionType( char *extension ); //return the Quake file type for the given file int QuakeFileType( char *filename ); //returns true if the filename complies to the filter int FileFilter( char *filter, char *filename, int casesensitive ); //find Quake files using the given filter quakefile_t *FindQuakeFiles( char *filter ); //load the given Quake file, returns the length of the file int LoadQuakeFile( quakefile_t *qf, void **bufferptr ); //read part of a Quake file into the buffer int ReadQuakeFile( quakefile_t *qf, void *buffer, int offset, int length );