summaryrefslogtreecommitdiff
path: root/src/KingSystem/Resource/resOffsetReadFileDevice.h
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-09-24 21:05:33 +0200
committerLéo Lam <leo@leolam.fr>2020-09-24 21:30:18 +0200
commit72d100323ca3c03d3dc71d0446de947e6280ebfc (patch)
tree1afa5fc88c4e95f7fa4b245ccbd3e0fcfb4effd0 /src/KingSystem/Resource/resOffsetReadFileDevice.h
parent7d51cbac51e2b70aff47268131c6fdfad13bfc57 (diff)
ksys/res: Implement OffsetReadFileDevice
Diffstat (limited to 'src/KingSystem/Resource/resOffsetReadFileDevice.h')
-rw-r--r--src/KingSystem/Resource/resOffsetReadFileDevice.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/KingSystem/Resource/resOffsetReadFileDevice.h b/src/KingSystem/Resource/resOffsetReadFileDevice.h
new file mode 100644
index 00000000..93c4800f
--- /dev/null
+++ b/src/KingSystem/Resource/resOffsetReadFileDevice.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#include <filedevice/seadMainFileDevice.h>
+#include "KingSystem/Utils/Types.h"
+
+namespace ksys::res {
+
+class OffsetRead {
+public:
+ OffsetRead() { resetOffsetRead(); }
+ virtual ~OffsetRead() = default;
+
+ void setReadOffset(u32 offset) { mOffsetReadOffset = offset; }
+ void setFileDevice(sead::FileDevice* device) { mOffsetReadFileDevice = device; }
+
+ void resetOffsetRead() {
+ mOffsetReadOffset = 0;
+ mOffsetReadFileDevice = nullptr;
+ }
+
+protected:
+ u32 mOffsetReadOffset;
+ sead::FileDevice* mOffsetReadFileDevice;
+};
+KSYS_CHECK_SIZE_NX150(OffsetRead, 0x18);
+
+class OffsetReadFileDevice : public sead::MainFileDevice, public OffsetRead {
+ SEAD_RTTI_OVERRIDE(OffsetReadFileDevice, sead::MainFileDevice)
+public:
+ explicit OffsetReadFileDevice(sead::Heap* heap);
+ ~OffsetReadFileDevice() override = default;
+
+ void setReadOffset(u32 offset) { OffsetRead::setReadOffset(offset); }
+ void setFileDevice(sead::FileDevice* device);
+
+protected:
+ u8* doLoad_(LoadArg& arg) override;
+};
+KSYS_CHECK_SIZE_NX150(OffsetReadFileDevice, 0xa0);
+
+} // namespace ksys::res