diff options
Diffstat (limited to 'src/irrlicht/RezArchive.cpp')
| -rw-r--r-- | src/irrlicht/RezArchive.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/irrlicht/RezArchive.cpp b/src/irrlicht/RezArchive.cpp new file mode 100644 index 0000000..8b9ff05 --- /dev/null +++ b/src/irrlicht/RezArchive.cpp @@ -0,0 +1,44 @@ +#include <RezArchive.h> +#include <RezReadFile.h> +#include <rez.h> +#include <memory> + +irr::io::IReadFile *RezArchive::createAndOpenFile(const irr::io::path &filename) +{ + std::unique_ptr<rez::file> f = rez.open(filename.c_str()); + + if (!f) + return nullptr; + + return new RezReadFile(std::move(f), filename); +} + +irr::io::IReadFile *RezArchive::createAndOpenFile(irr::u32 index) +{ + return nullptr; +} + +const irr::io::IFileList *RezArchive::getFileList() const +{ + return filelist.get(); +} + +irr::io::E_FILE_ARCHIVE_TYPE RezArchive::getType() const +{ + return static_cast<irr::io::E_FILE_ARCHIVE_TYPE> + (MAKE_IRR_ID('r', 'e', 'z', 0)); +} + +int RezArchive::parse() +{ + if (rez.parse()) + return -1; + + filelist = std::make_unique<RezFileList>(rez); + return 0; +} + +RezArchive::RezArchive(const irr::io::path &filename) : + rez(filename.c_str()) +{ +} |
