aboutsummaryrefslogtreecommitdiff
path: root/src/irrlicht/RezArchive.cpp
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2025-12-19 00:01:17 +0100
committerXavier Del Campo Romero <xavi92@disroot.org>2025-12-22 12:47:40 +0100
commitc736e13c7dd04bfa6c0580a4db3d6501dc28eed1 (patch)
tree04d1b490f710b0ed956e8f43d620ed6f846b8cf2 /src/irrlicht/RezArchive.cpp
parente2f9ee3f8cd319e952e4f5d5ec466f0ea9e6e77f (diff)
downloadglobalops-irrlicht.tar.gz
Irrlichtirrlicht
Diffstat (limited to 'src/irrlicht/RezArchive.cpp')
-rw-r--r--src/irrlicht/RezArchive.cpp44
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())
+{
+}