/** * @file Krennic.hpp * @date 18/01/2023 * @author JackCarterSmith * @copyright GPL-v3.0 * @brief Main game assets parser and interface. * * Complete class would take Erso legacy files tree and extract levels, objects, * textures, animations, etc. adapted datas for OpenGL/Direct3D application. * */ #include #include #include #include #include #include #include "Erso.hpp" #ifndef KRENNIC_HPP_ #define KRENNIC_HPP_ namespace RDI { class Krennic final { public: Krennic( Erso* pErso ); ~Krennic(); /** * Retrieve know list of legacy game files type. * @return Array of filtered elements. */ ///@{ std::vector getLevelsList() { return listLevelsName; } std::vector getModelsList() { return listModelsName; } std::vector getTexturesList() { return listTexturesName; } std::vector getMusicsList() { return listMusicsName; } std::vector getSamplesList() { return listSamplesName; } ///@} /** * Obtain the class interface for datas in specified file type. * @param name Name of the file, should be in list. * @return File type class handler. */ ///@{ void* getLevel( std::string name ); HOB* getModel( std::string name ); HMT* getTexture( std::string name ); void* getMusic( std::string name ); void* getSample( std::string name ); ///@} /** * @brief Retrieve default file instance. * @details Unknown file type can be wrapped in dummy class to access raw * content without parsing or other type of processing. * * @param[in] vPath Virtual path to the file. * @return Generic file type class handler. */ GenericFile *getFile( boost::filesystem::path vPath ); private: std::vector listModels; std::vector listLevelsName; std::vector listModelsName; std::vector listTexturesName; std::vector listMusicsName; std::vector listSamplesName; void BuildLevelFileList( Erso* pErso ); void BuildModelFileList( Erso* pErso ); void BuildTextureFileList( Erso* pErso ); void BuildMusicFileList( Erso* pErso ); void BuildSampleFileList( Erso* pErso ); void DisposeLevels(); void DisposeModels(); void DisposeTextures(); void DisposeMusics(); void DisposeSamples(); }; } #endif /* KRENNIC_HPP_ */