//CFTTFileSystem_PAK - [2020-04-13 11:57:46]
#ifndef _CFTTFILESYSTEM_PAK_H_
#define _CFTTFILESYSTEM_PAK_H_

#include "CFTTFileIterator_Android.h"
#include "CFTTFileSystem.h"

/*
00221378 CFTTFileSystem_PAK::CFTTFileSystem_PAK()
0022139C CFTTFileSystem_PAK::~CFTTFileSystem_PAK()
0022140C CFTTFileSystem_PAK::~CFTTFileSystem_PAK()
0022141C CFTTFileSystem_PAK::Initialise(CFTTFile *,EFTTMemHeapID)
00221740 CFTTFileSystem_PAK::Open(char const*,uint,EFTTMemHeapID)
0022178A CFTTFileSystem_PAK::GetFileIndex(char const*)
002217B6 CFTTFileSystem_PAK::OpenFileIndex(int,EFTTMemHeapID,char const*)
002218A2 CFTTFileSystem_PAK::GetFileIndexInternal(char *)
00221930 CFTTFileSystem_PAK::GetNumFiles()
00221940 CFTTFileSystem_PAK::OpenDir(char const*,CFTTFileIterator **)
00221A10 CFTTFileSystem_PAK::FileExistsFS(char const*)
00221A46 CFTTFileSystem_PAK::GetAttributesFS(char const*,TFTTFileAttributes *)

vtable_CFTTFileSystem_PAK_328794
  CFTTFileSystem_PAK::~CFTTFileSystem_PAK()
  CFTTFileSystem_PAK::~CFTTFileSystem_PAK()
  CFTTFileSystem::GetAbsoluteFilename(char const*,char *,uint)
  CFTTFileSystem_PAK::Open(char const*,uint,EFTTMemHeapID)
  CFTTFileSystem::Delete(char const*)
  CFTTFileSystem::Rename(char const*,char const*,CFTTFileSystem*)
  CFTTFileSystem::Copy(char const*,char const*,bool)
  CFTTFileSystem_PAK::OpenDir(char const*,CFTTFileIterator **)
  CFTTFileSystem_PAK::FileExistsFS(char const*)
  CFTTFileSystem_PAK::GetAttributesFS(char const*,TFTTFileAttributes *)

00155A0E
v3 = (CFTTFileSystem_PAK *)operator new(0x28, 0, 0, v2);
v5 = CFTTFileSystem_PAK::CFTTFileSystem_PAK(v3);

CFTTFileSystem_PAK 0x28

CFTTFileSystem_PAK	    0032878C	0x28
CFTTFileSystem_APKX	    00329B80	0x2C
CFTTFileSystem_Android	00329AE4	0x10
*/

class CFTTFileSystem_PAK : public CFTTFileSystem {
public:
  CFTTFileSystem_PAK();           //00221378
  virtual ~CFTTFileSystem_PAK();  //0022139C 0022140C

  EFTTError Initialise(CFTTFile* pCFTTFile, EFTTMemHeapID eHeapId);  //0022141C
  virtual CFTTFile* Open(char const* filepath,
                         uint a3,
                         EFTTMemHeapID eMemHeapID);  //00221740
  virtual EFTTError OpenDir(char const* pDir,
                            CFTTFileIterator** ppFileIt);  //00221940
  virtual bool FileExistsFS(char const* pFileName);        //00221A10
  virtual EFTTError GetAttributesFS(char const* pFileName,
                                    TFTTFileAttributes* pAttr);  //00221A46

  int GetFileIndex(char const* file);    //0022178A
  int GetNumFiles();                     //00221930
  int GetFileIndexInternal(char* file);  //002218A2
  CFTTFile* OpenFileIndex(int index,
                          EFTTMemHeapID eHeapId,
                          char const* pFileName);  //002217B6

  CFTTFile* pCFTTFile_8;
  int magicnum_C;                //magic number
  uint dir_count_10;             //dir count
  uint file_count_14;            //file count
  int namebuflen_18;             //field_18
  TFTTPakDirectory* pPAKDir_1C;  //0x14 * field_10      [array]
  TFTTPakFile* pPakFile_20;      //0x18 * file_count_14 [array]
  char* namebuf_24;              //namebuf_24 = new uint8[namebuflen_18];
};

#endif  //_CFTTFILESYSTEM_PAK_H_