18 FILE_ON_ZIP_ARCHIVE = 2,
19 FILE_ON_SEARCH_PATH = 4,
20 FILE_ON_EXECUTABLE = 8,
37 static string m_strExtractRootPath;
38 static bool m_bExtractFileToDisk;
40 static int m_nDiskFilePriority;
55 PE_CORE_DECL CParaFile(
char* buf,
int nBufferSize,
bool bCopyBuffer =
false);
61 PE_CORE_DECL CParaFile(
const char* filename);
69 PE_CORE_DECL CParaFile(
const char* filename,
const char* relativePath);
70 PE_CORE_DECL ~CParaFile();
74 PE_CORE_DECL
static bool CreateDirectory(
const char* filename);
79 PE_CORE_DECL
static bool MakeDirectoryFromFilePath(
const char * filename);
87 PE_CORE_DECL
static void ToCanonicalFilePath(
string & output,
const string& input,
bool bBackSlash =
true);
89 PE_CORE_DECL
static void ToCanonicalFilePath(
string & output,
const string& input,
bool bBackSlash =
false);
95 PE_CORE_DECL
static void ToCanonicalFilePath(
char* output,
const char* input,
bool bBackSlash =
true);
97 PE_CORE_DECL
static void ToCanonicalFilePath(
char* output,
const char* input,
bool bBackSlash =
false);
106 PE_CORE_DECL
static bool DoesFileExist(
const char* filename,
bool bSearchZipFiles =
false,
bool bUseSearchPath =
false);
113 static int32 DoesFileExist2(
const char* filename, uint32 dwWhereToSearch = FILE_ON_DISK, std::string* pDiskFilePath = NULL);
124 static bool IsAbsolutePath(
const std::string& path);
131 PE_CORE_DECL
static int DeleteTempFile(
const string& sFilePattern);
138 PE_CORE_DECL
static int DeleteFile(
const string& sFilePattern,
bool bSecureFolderOnly =
true);
146 PE_CORE_DECL
static bool MoveFile(
const char* src,
const char* dest);
153 PE_CORE_DECL
static bool BackupFile(
const char* filename);
159 PE_CORE_DECL
static unsigned long CRC32(
const char* filename);
169 PE_CORE_DECL
static bool CopyFile(
const char* src,
const char* dest,
bool bOverride);
179 PE_CORE_DECL
static string GetParentDirectoryFromPath(
const string& sfilename,
int nParentCounts = 0);
186 PE_CORE_DECL
static string AutoFindParaEngineRootPath(
const string& sFile);
193 PE_CORE_DECL
static string ChangeFileExtension(
const string& sFile,
const string & sExt);
196 PE_CORE_DECL
static string GetFileExtension(
const string& sFile);
207 PE_CORE_DECL
static string GetRelativePath(
const string& sAbsolutePath,
const string& sRootPath);
217 PE_CORE_DECL
static string GetAbsolutePath(
const string& sRelativePath,
const string& sRootPath);
222 PE_CORE_DECL
static string GetFileName(
const string& sFilePath);
225 PE_CORE_DECL
static bool IsFileName(
const string& sFilePath);
228 PE_CORE_DECL
static int GetFileSize(
const char* sFilePath);
234 PE_CORE_DECL
static const std::string& GetWritablePath();
237 PE_CORE_DECL
static void SetWritablePath(
const std::string& writable_path);
239 PE_CORE_DECL
static bool IsWritablePath(
const std::string& filepath,
bool bLogWarning =
true);
241 enum PARAENGINE_DIRECTORY{
247 APP_DATABASE_DIR = 5,
251 APP_SCREENSHOT_DIR = 9,
254 APP_CHARACTER_DIR = 12,
255 APP_SH_DESKTOP_DIR = 13,
256 APP_SH_DESKTOP_FOLDER_DIR = 14,
257 APP_SH_MYDOC_DIR = 15,
259 APP_SH_MUSIC_DIR = 17,
260 APP_SH_PICTURE_DIR = 18,
261 APP_SH_VIDEO_DIR = 19,
263 APP_EXECUTABLE_DIR = 21,
272 PE_CORE_DECL
static const string& GetCurDirectory(DWORD dwDirectoryType);
275 PE_CORE_DECL
static void SetDevDirectory(
const string& sFilePath);
276 PE_CORE_DECL
static const string& GetDevDirectory();
282 static void SetDiskFilePriority(
int nPriority);
288 static int GetDiskFilePriority();
310 PE_CORE_DECL
bool OpenFile(
const char* filename,
bool bReadyOnly =
true,
const char* relativePath = NULL,
bool bUseCompressed =
false, uint32 dwWhereToOpen = FILE_ON_DISK | FILE_ON_ZIP_ARCHIVE | FILE_ON_SEARCH_PATH);
313 PE_CORE_DECL
bool OpenFile(
CArchive* pArchive,
const char* filename,
bool bUseCompressed =
false);
318 PE_CORE_DECL
static bool GetFileInfo(
const char* filename,
CParaFileInfo& fileInfo, uint32 dwWhereToOpen = FILE_ON_DISK | FILE_ON_ZIP_ARCHIVE | FILE_ON_SEARCH_PATH);
330 PE_CORE_DECL
int OpenAssetFile(
const char* filename,
bool bDownloadIfNotUpToDate =
true,
const char* relativePath = NULL);
333 PE_CORE_DECL
static bool DoesAssetFileExist(
const char* filename);
334 PE_CORE_DECL
static bool DoesAssetFileExist2(
const char* filename,
bool bSearchZipFile =
false);
340 PE_CORE_DECL
bool Decompress();
343 PE_CORE_DECL
bool IsCompressed();
346 PE_CORE_DECL
void SetIsCompressed(
bool bCompressed);
351 PE_CORE_DECL
bool CreateNewFile(
const char* filename,
bool bAutoMakeFilePath =
true);
355 PE_CORE_DECL
void GiveupBufferOwnership();
356 PE_CORE_DECL
void TakeBufferOwnership();
362 PE_CORE_DECL
bool ExtractFileToDisk(
const string& filenameDest,
bool bReplace);
367 PE_CORE_DECL
static void SetExtractFileProperty(
bool bExtractFile);
369 PE_CORE_DECL
static bool GetExtractFileProperty();
376 PE_CORE_DECL
static bool UnzipMemToFile(
const char* buffer,
int nSize,
const char* destFilename,
bool bAutoMakeDirectory);
386 PE_CORE_DECL
int write(
const void* src,
int bytes);
390 PE_CORE_DECL
int WriteString(
const string& sStr);
396 PE_CORE_DECL
int WriteString(
const char* sStr,
int nLen = 0);
398 PE_CORE_DECL
int WriteFormated(
const char *, ...);
400 inline int WriteDWORD(DWORD data){
return write(&data,
sizeof(data)); }
401 inline int WriteWORD(WORD data) {
return write(&data,
sizeof(data)); }
414 void SetFilePointer(
int lDistanceToMove,
int dwMoveMethod);
431 PE_CORE_DECL
size_t read(
void* dest,
size_t bytes);
434 inline DWORD
ReadDWORD(){ DWORD data; read(&data, 4);
return data; }
436 inline WORD
ReadWORD(){ WORD data; read(&data, 2);
return data; }
439 inline BYTE
ReadByte(){ BYTE data; read(&data, 1);
return data; }
440 inline int WriteByte(BYTE data){
return write(&data, 1); }
443 DWORD ReadDWORD_LE();
450 uint32_t ReadEncodedUInt();
452 int WriteEncodedUInt(uint32_t
value);
463 PE_CORE_DECL
int GetNextLine(
char* buf,
int sizeBuf);
468 PE_CORE_DECL
int SkipComment();
473 PE_CORE_DECL
int SkipEqualMark();
480 PE_CORE_DECL
int SkipString(
const char* sName);
483 PE_CORE_DECL
int SkipCurrentLine();
502 PE_CORE_DECL
bool GetNextAttribute(
const char * sName,
string& output);
504 PE_CORE_DECL
bool GetNextAttribute(
const char * sName,
float& output);
506 PE_CORE_DECL
bool GetNextAttribute(
const char * sName,
double& output);
508 PE_CORE_DECL
bool GetNextAttribute(
const char * sName,
int& output);
510 PE_CORE_DECL
bool GetNextAttribute(
const char * sName,
bool& output);
514 PE_CORE_DECL
bool GetNextAttribute(
const char * sName);
524 template <
class TYPE_ARG1>
527 bool bSucceed =
false;
529 size_t nOldPos = m_curPos;
534 const char* pSrc = getPointer();
536 if (_snscanf(pSrc, m_size - m_curPos, sFormat, a1) >= 1)
538 if (sscanf(pSrc, sFormat, a1) >= 1)
549 template <
class TYPE_ARG1,
class TYPE_ARG2>
550 bool GetNextFormatted(
const char * sFormat, TYPE_ARG1 a1, TYPE_ARG2 a2)
552 bool bSucceed =
false;
554 size_t nOldPos = m_curPos;
559 const char* pSrc = getPointer();
561 if (_snscanf(pSrc, m_size - m_curPos, sFormat, a1, a2) >= 2)
563 if (sscanf(pSrc, sFormat, a1, a2) >= 2)
575 template <
class TYPE_ARG1,
class TYPE_ARG2,
class TYPE_ARG3>
576 bool GetNextFormatted(
const char * sFormat, TYPE_ARG1 a1, TYPE_ARG2 a2, TYPE_ARG3 a3)
578 bool bSucceed =
false;
580 size_t nOldPos = m_curPos;
585 const char* pSrc = getPointer();
587 if (_snscanf(pSrc, m_size - m_curPos, sFormat, a1, a2, a3) >= 3)
589 if (sscanf(pSrc, sFormat, a1, a2, a3) >= 3)
608 PE_CORE_DECL
const string& GetFileName();
610 PE_CORE_DECL
size_t getSize();
611 PE_CORE_DECL
size_t getPos();
612 PE_CORE_DECL
char* getBuffer();
613 PE_CORE_DECL
inline char* getPointer(){
return m_buffer + m_curPos; }
615 PE_CORE_DECL
bool isEof();
616 PE_CORE_DECL
void seek(
int offset);
617 PE_CORE_DECL
void seekRelative(
int offset);
618 PE_CORE_DECL
void close();
629 PE_CORE_DECL
void synchBits();
634 PE_CORE_DECL
unsigned int readUBits(
int numBits);
638 PE_CORE_DECL
int readSBits(
int numBits);
642 void* GetHandlePtr();
651 bool m_bDiskFileOpened : 1;
653 bool m_bIsCompressed : 1;
655 bool m_bMemoryFile : 1;
665 size_t m_uncompressed_size;
file archiver base class.
Definition: Archive.h:24
a file handle in a Archive
Definition: FileHandle.h:13
file information.
Definition: FileUtils.h:11
bool GetNextFormatted(const char *sFormat, TYPE_ARG1 a1)
this is similar to GetNextAttribute().
Definition: ParaFile.h:525
different physics engine has different winding order.
Definition: EventBinding.h:32
WORD ReadWORD()
read WORD
Definition: ParaFile.h:436
DWORD ReadDWORD()
read DWORD
Definition: ParaFile.h:434
FileLocation
where to search the file and where the file is found
Definition: ParaFile.h:14
Definition: enum_maker.hpp:46
it presents a real or virtual file in ParaEngine.
Definition: ParaFile.h:31
BYTE ReadByte()
read WORD
Definition: ParaFile.h:439