diff options
| author | Léo Lam <leo@leolam.fr> | 2020-09-24 21:05:33 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2020-09-24 21:30:18 +0200 |
| commit | 72d100323ca3c03d3dc71d0446de947e6280ebfc (patch) | |
| tree | 1afa5fc88c4e95f7fa4b245ccbd3e0fcfb4effd0 /src/KingSystem/Resource/resOffsetReadFileDevice.h | |
| parent | 7d51cbac51e2b70aff47268131c6fdfad13bfc57 (diff) | |
ksys/res: Implement OffsetReadFileDevice
Diffstat (limited to 'src/KingSystem/Resource/resOffsetReadFileDevice.h')
| -rw-r--r-- | src/KingSystem/Resource/resOffsetReadFileDevice.h | 41 |
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 |
