Rev 84 | Rev 114 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#pragma once#include "CyString.h"#include "File.h"#include "Utils/StringList.h"#include <map>class CBaseFile;class CXspFile;namespace Utils {class CStringList;}namespace SPK {class CTextDB;tclass CVirtualFileSystem{public:typedef std::map<Utils::String, Utils::String> FileList;typedef std::map<Utils::String, Utils::String>::iterator FileListItr;private:Utils::String m_sAddon;Utils::String m_sDir;bool m_bLoaded;FileList *m_pModMap;FileList *m_pMap;CTextDB *m_pTexts;CTextDB *m_pModTexts;Utils::CStringList *_lShields;Utils::CStringList *_lLasers;Utils::CStringList *_lMissiles;Utils::CStringList *_lCockpits;Utils::CStringList *_lComponentSections;Utils::CStringList *_lDummySections;Utils::CStringList *_lBodiesSections;int m_iLang;public:CVirtualFileSystem(void);~CVirtualFileSystem(void);void SetAddon(const Utils::String &addon) { m_sAddon = addon; }void extractTexts(CXspFile *pPackage, int textId);C_File *extractGameFileToPackage(CBaseFile *pPackage, const Utils::String &sFile, FileType iFileType, const Utils::String &sTo);C_File *extractGameFileToPackage(CBaseFile *pPackage, const Utils::String &sFile, FileType iFileType);Utils::String ExtractGameFile(const Utils::String &file, const Utils::String &to);bool LoadFilesystem(const Utils::String &dir, int maxPatch = 0);bool LoadFilesystem(const Utils::String &dir, const Utils::String &mod, int maxPatch = 0);bool loadMod(const Utils::String &mod);bool addMod(const Utils::String &mod);bool isFileAvailable(const Utils::String &file);CyStringList *GetTShipsEntries();Utils::String getTShipsEntry(const Utils::String &sId);void updateModTexts(int iPage);void updateModTexts(int iFromPage, int iToPage);void updateTexts(int iPage);void updateTexts(int iFromPage, int iToPage);Utils::String findText(int iLang, int iPage, int iID) const;bool textExists(int iLang, int iPage, int iID) const;void clearMods(bool bIncludeStandard = false);bool loadShipData(CyStringList *list);void setLanguage(int iLang);Utils::String firstShield();Utils::String nextShield();Utils::String firstComponentSection();Utils::String nextComponentSection();Utils::String firstDummySection();Utils::String nextDummySection();Utils::String firstBodiesSection();Utils::String nextBodiesSection();std::pair<Utils::String, Utils::String> firstLaser();std::pair<Utils::String, Utils::String> nextLaser();std::pair<Utils::String, Utils::String> firstMissile();std::pair<Utils::String, Utils::String> nextMissile();Utils::String firstCockpit();Utils::String nextCockpit();private:void _updateTexts(int iFromPage, int iToPage, FileList *pFileList, CTextDB *pTextList);Utils::String _convertExtension(const Utils::String &sFile);void _clear();void _addFile(const Utils::String &sFile, const Utils::String &sDest, FileList *pList);void _addModFile(const Utils::String &sFile, const Utils::String &sMod, FileList *pList);Utils::String _findFile(const Utils::String &file);void _addDir(const Utils::String &sStart, const Utils::String &sDir);Utils::String _extractFromCat(const Utils::String &sCat, const Utils::String &sFile, const Utils::String &sTo);Utils::String _extract(const Utils::String &sFile, const Utils::String &sTo);Utils::CStringList *_updateList(const Utils::String &typesFile, int iTextPos);void _updateShields();void _updateLasers();void _updateMissiles();void _updateCockpits();void _updateComponentSections();void _updateDummySections();void _updateBodiesSections();Utils::String _returnText(Utils::SStringList *s);Utils::String _returnID(Utils::SStringList *s);Utils::String _returnLine(Utils::SStringList *s);std::pair<Utils::String, Utils::String> _returnPair(Utils::SStringList *s);Utils::CStringList *_updateSectionList(const Utils::String &sFile, bool singleEntry);};}