/** * @file Krennic.cpp * @date 24/09/2022 * @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 "Erso.hpp" #include "Krennic.hpp" namespace RDI { Krennic::Krennic( Erso* pErso ) { BuildLevelList(pErso); BuildModelList(pErso); BuildTextureList(pErso); BuildMusicList(pErso); BuildSampleList(pErso); } Krennic::~Krennic() {} void Krennic::BuildLevelList( Erso* pErso ) { const static std::string legacyLvlPath = "data/level"; ErsoEntryDir* levelDir = nullptr; listLevel.clear(); levelDir = dynamic_cast(pErso->getElement(boost::filesystem::path(legacyLvlPath))); if (levelDir != nullptr) { for ( ErsoEntry* fl : levelDir->getFiles() ) { if (fl->isDirectory()) { if (pErso->getElement(boost::filesystem::path(legacyLvlPath).append(fl->getName()).append("dat")) != nullptr) { listLevel.push_back(legacyLvlPath + "/" + fl->getName()); } } } } //TODO: LvlClass builder } void Krennic::BuildModelList( Erso* pErso ) { const static std::vector legacyModelPath = { "data/pl_crafts", "data/reb_stuff", "data/imp_stuff", "data/gnrc_stuff", "data2" }; ErsoEntryDir* curModelDir = nullptr; listModel.clear(); for ( std::string path_it : legacyModelPath ) { curModelDir = dynamic_cast(pErso->getElement(boost::filesystem::path(path_it))); if (curModelDir != nullptr) { for ( ErsoEntry* fl : curModelDir->getFiles() ) { if (fl->getName().find("_HOB") != std::string::npos) { listModel.push_back(path_it + "/" + fl->getName()); } } } } } void Krennic::BuildTextureList( Erso* pErso ) { } void Krennic::BuildMusicList( Erso* pErso ) { const static std::string legacyMusicPath = "data/sound"; ErsoEntryDir* musicDir = nullptr; listMusic.clear(); musicDir = dynamic_cast(pErso->getElement(boost::filesystem::path(legacyMusicPath))); if (musicDir != nullptr) { for ( ErsoEntry* fl : musicDir->getFiles() ) { //TODO: MusyX-Class builder if (fl->getName().find("_SNG") != std::string::npos) { listMusic.push_back(legacyMusicPath + "/" + fl->getName()); } } } } void Krennic::BuildSampleList( Erso* pErso ) { } }