| Line 2... | Line 2... | 
          
            | 2 |  
 | 2 |  
 | 
          
            | 3 | #include "File.h"
 | 3 | #include "File.h"
 | 
          
            | 4 | #include "Utils/StringList.h"
 | 4 | #include "Utils/WString.h"
 | 
          
            | 5 | #include <map>
 | 5 | #include <map>
 | 
          
            | 6 |  
 | 6 |  
 | 
          
            | 7 | class CBaseFile;
 | 7 | class CBaseFile;
 | 
          
            | 8 | class CXspFile;
 | 8 | class CXspFile;
 | 
          
            | 9 |  
 | 9 |  
 | 
          
            | 10 | namespace Utils {
 | 10 | namespace Utils {
 | 
          
            | 11 | 	class CStringList;
 | 11 | 	class WStringList;
 | 
          
            | 12 | }
 | 12 | }
 | 
          
            | 13 | namespace SPK {
 | 13 | namespace SPK {
 | 
          
            | 14 | 	class CTextDB;
 | 14 | 	class CTextDB;
 | 
          
            | 15 |  
 | 15 |  
 | 
          
            | 16 | tclass CVirtualFileSystem
 | 16 | tclass CVirtualFileSystem
 | 
          
            | 17 | {
 | 17 | {
 | 
          
            | 18 | public:
 | 18 | public:
 | 
          
            | 19 | 	typedef std::map<Utils::String,Utils::String> FileList;
 | 19 | 	typedef std::map<Utils::WString, Utils::WString> FileList;
 | 
          
            | 20 | 	typedef std::map<Utils::String,Utils::String>::iterator FileListItr;
 | 20 | 	typedef std::map<Utils::WString, Utils::WString>::iterator FileListItr;
 | 
          
            | 21 |  
 | 21 |  
 | 
          
            | 22 | private:
 | 22 | private:
 | 
          
            | 23 | 	Utils::Stringm_sAddon;
 | 23 | 	Utils::WString	m_sAddon;
 | 
          
            | 24 | 	Utils::Stringm_sDir;
 | 24 | 	Utils::WString	m_sDir;
 | 
          
            | 25 | 	bool		m_bLoaded;
 | 25 | 	bool		m_bLoaded;
 | 
          
            | 26 |  
 | 26 |  
 | 
          
            | 27 | 	FileList *m_pModMap;
 | 27 | 	FileList *m_pModMap;
 | 
          
            | 28 | 	FileList *m_pMap;
 | 28 | 	FileList *m_pMap;
 | 
          
            | 29 |  
 | 29 |  
 | 
          
            | 30 | 	CTextDB	 *m_pTexts;
 | 30 | 	CTextDB	 *m_pTexts;
 | 
          
            | 31 | 	CTextDB  *m_pModTexts;
 | 31 | 	CTextDB  *m_pModTexts;
 | 
          
            | 32 |  
 | 32 |  
 | 
          
            | 33 | 	Utils::CStringList*_lShips;
 | 33 | 	Utils::WStringList	*_lShips;
 | 
          
            | 34 | 	Utils::CStringList*_lShields;
 | 34 | 	Utils::WStringList	*_lShields;
 | 
          
            | 35 | 	Utils::CStringList*_lLasers;
 | 35 | 	Utils::WStringList	*_lLasers;
 | 
          
            | 36 | 	Utils::CStringList*_lMissiles;
 | 36 | 	Utils::WStringList	*_lMissiles;
 | 
          
            | 37 | 	Utils::CStringList*_lCockpits;
 | 37 | 	Utils::WStringList	*_lCockpits;
 | 
          
            | 38 | 	Utils::CStringList*_lComponentSections;
 | 38 | 	Utils::WStringList	*_lComponentSections;
 | 
          
            | 39 | 	Utils::CStringList*_lDummySections;
 | 39 | 	Utils::WStringList	*_lDummySections;
 | 
          
            | 40 | 	Utils::CStringList*_lBodiesSections;
 | 40 | 	Utils::WStringList	*_lBodiesSections;
 | 
          
            | 41 |  
 | 41 |  
 | 
          
            | 42 | 	int m_iLang;
 | 42 | 	int m_iLang;
 | 
          
            | 43 |  
 | 43 |  
 | 
          
            | 44 | public:
 | 44 | public:
 | 
          
            | 45 | 	CVirtualFileSystem(void);
 | 45 | 	CVirtualFileSystem(void);
 | 
          
            | 46 | 	~CVirtualFileSystem(void);
 | 46 | 	~CVirtualFileSystem(void);
 | 
          
            | 47 |  
 | 47 |  
 | 
          
            | 48 | 	// setters
 | 48 | 	// setters
 | 
          
            | 49 | 	void setAddon(const Utils::String&addon);
 | 49 | 	void setAddon(const Utils::WString &addon);
 | 
          
            | 50 | 	void setLanguage(int iLang);
 | 50 | 	void setLanguage(int iLang);
 | 
          
            | 51 |  
 | 51 |  
 | 
          
            | 52 | 	// extractions
 | 52 | 	// extractions
 | 
          
            | 53 | 	void extractTexts(CXspFile *pPackage, int textId);
 | 53 | 	void extractTexts(CXspFile *pPackage, int textId);
 | 
          
            | 54 | 	C_File *extractGameFileToPackage(CBaseFile *pPackage, const Utils::String&sFile, FileType iFileType, const Utils::String&sTo);
 | 54 | 	C_File *extractGameFileToPackage(CBaseFile *pPackage, const Utils::WString &sFile, FileType iFileType, const Utils::WString &sTo);
 | 
          
            | 55 | 	C_File *extractGameFileToPackage(CBaseFile *pPackage, const Utils::String&sFile, FileType iFileType);
 | 55 | 	C_File *extractGameFileToPackage(CBaseFile *pPackage, const Utils::WString &sFile, FileType iFileType);
 | 
          
            | 56 | 	Utils::StringExtractGameFile(const Utils::String&file, const Utils::String&to);
 | 56 | 	Utils::WString extractGameFile(const Utils::WString &file, const Utils::WString &to);
 | 
          
            | 57 |  
 | 57 |  
 | 
          
            | 58 | 	// loading
 | 58 | 	// loading
 | 
          
            | 59 | 	bool LoadFilesystem(const Utils::String&dir, int maxPatch = 0);
 | 59 | 	bool LoadFilesystem(const Utils::WString &dir, int maxPatch = 0);
 | 
          
            | 60 | 	bool LoadFilesystem(const Utils::String&dir, const Utils::String&mod, int maxPatch = 0);
 | 60 | 	bool LoadFilesystem(const Utils::WString &dir, const Utils::WString &mod, int maxPatch = 0);
 | 
          
            | 61 | 	bool loadMod(const Utils::String&mod);
 | 61 | 	bool loadMod(const Utils::WString &mod);
 | 
          
            | 62 | 	bool addMod(const Utils::String&mod);
 | 62 | 	bool addMod(const Utils::WString &mod);
 | 
          
            | 63 |  
 | 63 |  
 | 
          
            | 64 | 	// getters
 | 64 | 	// getters
 | 
          
            | 65 | 	const Utils::String&directory() const;
 | 65 | 	const Utils::WString &directory() const;
 | 
          
            | 66 | 	bool isFileAvailable(const Utils::String&file) const;
 | 66 | 	bool isFileAvailable(const Utils::WString &file) const;
 | 
          
            | 67 | 	Utils::StringgetTShipsEntry(const Utils::String&sId);
 | 67 | 	Utils::WString getTShipsEntry(const Utils::WString &sId);
 | 
          
            | 68 | 	Utils::StringfindText(int iLang, int iPage, int iID) const;
 | 68 | 	Utils::WString findText(int iLang, int iPage, int iID) const;
 | 
          
            | 69 | 	bool textExists(int iLang, int iPage, int iID) const;
 | 69 | 	bool textExists(int iLang, int iPage, int iID) const;
 | 
          
            | 70 | 	bool isTextUpdated() const;
 | 70 | 	bool isTextUpdated() const;
 | 
          
            | 71 |  
 | 71 |  
 | 
          
            | 72 | 	// Updates
 | 72 | 	// Updates
 | 
          
            | 73 | 	void updateModTexts(int iPage);
 | 73 | 	void updateModTexts(int iPage);
 | 
          
            | Line 76... | Line 76... | 
          
            | 76 | 	void updateTexts(int iFromPage, int iToPage);
 | 76 | 	void updateTexts(int iFromPage, int iToPage);
 | 
          
            | 77 |  
 | 77 |  
 | 
          
            | 78 | 	void clearMods(bool bIncludeStandard = false);
 | 78 | 	void clearMods(bool bIncludeStandard = false);
 | 
          
            | 79 |  
 | 79 |  
 | 
          
            | 80 | 	// Iterators
 | 80 | 	// Iterators
 | 
          
            | 81 | 	Utils::CStringList*getTShipsEntries();
 | 81 | 	Utils::WStringList *getTShipsEntries();
 | 
          
            | 82 | 	Utils::StringfirstShield();
 | 82 | 	Utils::WString firstShield();
 | 
          
            | 83 | 	Utils::StringnextShield();
 | 83 | 	Utils::WString nextShield();
 | 
          
            | 84 | 	Utils::StringfirstComponentSection();
 | 84 | 	Utils::WString firstComponentSection();
 | 
          
            | 85 | 	Utils::StringnextComponentSection();
 | 85 | 	Utils::WString nextComponentSection();
 | 
          
            | 86 | 	Utils::StringfirstDummySection();
 | 86 | 	Utils::WString firstDummySection();
 | 
          
            | 87 | 	Utils::StringnextDummySection();
 | 87 | 	Utils::WString nextDummySection();
 | 
          
            | 88 | 	Utils::StringfirstBodiesSection();
 | 88 | 	Utils::WString firstBodiesSection();
 | 
          
            | 89 | 	Utils::StringnextBodiesSection();
 | 89 | 	Utils::WString nextBodiesSection();
 | 
          
            | 90 | 	std::pair<Utils::String,Utils::String> firstLaser();
 | 90 | 	std::pair<Utils::WString, Utils::WString> firstLaser();
 | 
          
            | 91 | 	std::pair<Utils::String,Utils::String> nextLaser();
 | 91 | 	std::pair<Utils::WString, Utils::WString> nextLaser();
 | 
          
            | 92 | 	std::pair<Utils::String,Utils::String> firstMissile();
 | 92 | 	std::pair<Utils::WString, Utils::WString> firstMissile();
 | 
          
            | 93 | 	std::pair<Utils::String,Utils::String> nextMissile();
 | 93 | 	std::pair<Utils::WString, Utils::WString> nextMissile();
 | 
          
            | 94 | 	Utils::StringfirstCockpit();
 | 94 | 	Utils::WString firstCockpit();
 | 
          
            | 95 | 	Utils::StringnextCockpit();
 | 95 | 	Utils::WString nextCockpit();
 | 
          
            | 96 |  
 | 96 |  
 | 
          
            | 97 | 	///////////////////////////////////////////////////////////////
 | 97 | 	///////////////////////////////////////////////////////////////
 | 
          
            | 98 | 	// Debug Functions
 | 98 | 	// Debug Functions
 | 
          
            | 99 | 	void DEBUG_LogContents(const Utils::String&sFile);
 | 99 | 	void DEBUG_LogContents(const Utils::WString &sFile);	
 | 
          
            | 100 |  
 | 100 |  
 | 
          
            | 101 | private:
 | 101 | private:
 | 
          
            | 102 | 	void _updateTexts(int iFromPage, int iToPage, FileList *pFileList, CTextDB *pTextList);
 | 102 | 	void _updateTexts(int iFromPage, int iToPage, FileList *pFileList, CTextDB *pTextList);
 | 
          
            | 103 | 	Utils::String_convertExtension(const Utils::String&sFile) const;
 | 103 | 	Utils::WString _convertExtension(const Utils::WString &sFile) const;
 | 
          
            | 104 | 	void _clear();
 | 104 | 	void _clear();
 | 
          
            | 105 | 	void _addFile(const Utils::String&sFile, const Utils::String&sDest, FileList *pList);
 | 105 | 	void _addFile(const Utils::WString &sFile, const Utils::WString &sDest, FileList *pList);
 | 
          
            | 106 | 	void _addModFile(const Utils::String&sFile, const Utils::String&sMod, FileList *pList);
 | 106 | 	void _addModFile(const Utils::WString &sFile, const Utils::WString &sMod, FileList *pList);
 | 
          
            | 107 | 	Utils::String_findFile(const Utils::String&file) const;
 | 107 | 	Utils::WString _findFile(const Utils::WString &file) const;
 | 
          
            | 108 | 	void _addDir(const Utils::String&sStart, const Utils::String&sDir);
 | 108 | 	void _addDir(const Utils::WString &sStart, const Utils::WString &sDir);
 | 
          
            | 109 | 	Utils::String_extractFromCat(const Utils::String&sCat, const Utils::String&sFile, const Utils::String&sTo);
 | 109 | 	Utils::WString _extractFromCat(const Utils::WString &sCat, const Utils::WString &sFile, const Utils::WString &sTo);
 | 
          
            | 110 | 	Utils::String_extract(const Utils::String&sFile, const Utils::String&sTo);
 | 110 | 	Utils::WString _extract(const Utils::WString &sFile, const Utils::WString &sTo);
 | 
          
            | 111 |  
 | 111 |  
 | 
          
            | 112 | 	Utils::CStringList*_updateList(const Utils::String&typesFile, int iTextPos);
 | 112 | 	Utils::WStringList *_updateList(const Utils::WString &typesFile, int iTextPos);
 | 
          
            | 113 | 	void _updateShields();
 | 113 | 	void _updateShields();
 | 
          
            | 114 | 	void _updateLasers();
 | 114 | 	void _updateLasers();
 | 
          
            | 115 | 	void _updateMissiles();
 | 115 | 	void _updateMissiles();
 | 
          
            | 116 | 	void _updateCockpits();
 | 116 | 	void _updateCockpits();
 | 
          
            | 117 | 	void _updateComponentSections();
 | 117 | 	void _updateComponentSections();
 | 
          
            | 118 | 	void _updateDummySections();
 | 118 | 	void _updateDummySections();
 | 
          
            | 119 | 	void _updateBodiesSections();
 | 119 | 	void _updateBodiesSections();
 | 
          
            | 120 | 	void _updateShips();
 | 120 | 	void _updateShips();
 | 
          
            | 121 |  
 | 121 |  
 | 
          
            | 122 | 	Utils::String_returnText(Utils::SStringList*s);
 | 122 | 	Utils::WString _returnText(Utils::WStringNode *s);
 | 
          
            | 123 | 	Utils::String_returnID(Utils::SStringList*s);
 | 123 | 	Utils::WString _returnID(Utils::WStringNode *s);
 | 
          
            | 124 | 	Utils::String_returnLine(Utils::SStringList*s);
 | 124 | 	Utils::WString _returnLine(Utils::WStringNode *s);
 | 
          
            | 125 | 	std::pair<Utils::String,Utils::String> _returnPair(Utils::SStringList*s);
 | 125 | 	std::pair<Utils::WString, Utils::WString> _returnPair(Utils::WStringNode *s);
 | 
          
            | 126 | 	Utils::CStringList*_updateSectionList(const Utils::String&sFile, bool singleEntry);
 | 126 | 	Utils::WStringList *_updateSectionList(const Utils::WString &sFile, bool singleEntry);
 | 
          
            | 127 |  
 | 127 |  
 | 
          
            | 128 | 	void _removeSameFile(const Utils::String&sFile, const Utils::String&sDest, const Utils::String&ext, FileList *pList);
 | 128 | 	void _removeSameFile(const Utils::WString &sFile, const Utils::WString &sDest, const Utils::WString &ext, FileList *pList);
 | 
          
            | 129 |  
 | 129 |  
 | 
          
            | 130 | };
 | 130 | };
 | 
          
            | 131 |  
 | 131 |  
 | 
          
            | 132 | }
 | 132 | }
 |