00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __NEPACKAGE_H
00028 #define __NEPACKAGE_H
00029
00030
00037 #include "base.h"
00038 #include "loadableentity.h"
00039 #include "directory.h"
00040
00041 #include <string>
00042
00043
00044 namespace NeoEngine
00045 {
00046
00047
00048
00049 class FileManager;
00050
00051
00056 class NEOENGINE_API VirtualFileTemplate : public FileTemplate
00057 {
00058 public:
00059
00061 int m_iOffset;
00062
00064 int m_iSize;
00065
00067 int m_iFlags;
00068
00070 int m_aiData[4];
00071
00073 Package *m_pkPackage;
00074
00075
00082 virtual File *AllocateFile( const std::string &rstrName, Directory *pkParent );
00083 };
00084
00085
00086
00087
00093 class NEOENGINE_API Package : public Directory, public LoadableEntity
00094 {
00095 public:
00096
00100 enum FILEFLAG
00101 {
00103 FILEFLAG_NORMAL = 0x00000000,
00104
00106 FILEFLAG_BZIP2_COMPRESSED = 0x00000001
00107 };
00108
00109
00110 protected:
00111
00117 virtual bool LoadNode( unsigned int uiFlags );
00118
00123 void ReadCluster( Directory *pkDirectory );
00124
00125
00126 public:
00127
00134 Package( Directory *pkParent, const std::string &rstrFile, FileManager *pkManager );
00135
00139 virtual ~Package();
00140
00145 inline File *GetBaseFile() { return m_pkFile; }
00146 };
00147
00148
00149 };
00150
00151
00152 #endif // __NEPACKAGE_H