ksys/res: Implement Resource (base class)

This commit is contained in:
Léo Lam 2020-09-04 20:07:49 +02:00
parent 96a3286a43
commit 578955f4e9
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 120 additions and 23 deletions

View File

@ -50,6 +50,9 @@ add_executable(uking
src/KingSystem/MessageSystem/mesTransceiver.h
src/KingSystem/Resource/resResource.cpp
src/KingSystem/Resource/resResource.h
src/KingSystem/Terrain/teraSystem.h
src/KingSystem/Utils/Byaml.cpp

View File

@ -56358,7 +56358,7 @@
0x00000071009cab10,sub_71009CAB10,8,
0x00000071009cab18,sub_71009CAB18,92,
0x00000071009cab74,sub_71009CAB74,8,
0x00000071009cab7c,ResourceBase::needsParse,8,
0x00000071009cab7c,ResourceBase::needsParse,8,_ZNK4ksys3res8Resource10needsParseEv
0x00000071009cab84,sub_71009CAB84,8,
0x00000071009cad00,nullsub_5460,4,
0x00000071009cad04,sub_71009CAD04,496,
@ -56427,7 +56427,7 @@
0x00000071009cde70,sub_71009CDE70,132,
0x00000071009cdef4,sub_71009CDEF4,92,
0x00000071009cdf50,sub_71009CDF50,8,
0x00000071009cdf58,ResourceBase::returnTrue,8,
0x00000071009cdf58,ResourceBase::returnTrue,8,_ZN4ksys3res8Resource3m2_Ev
0x00000071009cdf60,sub_71009CDF60,140,
0x00000071009ce10c,_ZN3agl12GPUMemBlockTIhED2Ev,20,
0x00000071009ce120,sub_71009CE120,52,
@ -90751,30 +90751,30 @@
0x0000007101200abc,nullsub_4691,4,
0x0000007101200ac0,sub_7101200AC0,1444,
0x00000071012011d8,sub_71012011D8,124,
0x0000007101201254,ResourceBase::ctor,64,
0x0000007101201294,j__ZN4sead14DirectResourceD2Ev,4,
0x0000007101201298,sub_7101201298,8,
0x00000071012012a0,ResourceBase::dtorDelete,36,
0x00000071012012c4,sub_71012012C4,40,
0x0000007101201254,ResourceBase::ctor,64,_ZN4ksys3res8ResourceC1Ev
0x0000007101201294,j__ZN4sead14DirectResourceD2Ev,4,_ZN4ksys3res8ResourceD2Ev
0x0000007101201298,sub_7101201298,8,_ZThn32_N4ksys3res8ResourceD1Ev
0x00000071012012a0,ResourceBase::dtorDelete,36,_ZN4ksys3res8ResourceD0Ev
0x00000071012012c4,sub_71012012C4,40,_ZThn32_N4ksys3res8ResourceD0Ev
0x00000071012012ec,res::getResLoadArgAllocSize,16,
0x00000071012012fc,ResourceBase::getField30,8,
0x0000007101201304,ResourceBase::setField30,8,
0x000000710120130c,ResourceBase::callOnDestroy,12,
0x0000007101201318,ResourceBase::callParse,24,
0x0000007101201330,ResourceBase::callM5,32,
0x0000007101201350,ResourceBase::callM6AndClearField30,48,
0x0000007101201380,ResourceBase::callM7,12,
0x000000710120138c,ResourceBase::doCreate,4,
0x0000007101201390,ResourceBase::onDestroy,4,
0x0000007101201394,ResourceBase::parse,8,
0x000000710120139c,ResourceBase::nullsub1,4,
0x00000071012013a0,ResourceBase::afterParse,8,
0x00000071012013a8,ResourceBase::returnTrue4,8,
0x00000071012013b0,ResourceBase::nullsub2,4,
0x00000071012012fc,ResourceBase::getField30,8,_ZNK4ksys3res8Resource10getContextEv
0x0000007101201304,ResourceBase::setField30,8,_ZN4ksys3res8Resource10setContextEPNS0_7ContextE
0x000000710120130c,ResourceBase::callOnDestroy,12,_ZN4ksys3res8Resource9onDestroyEv
0x0000007101201318,ResourceBase::callParse,24,_ZN4ksys3res8Resource5parseEPNS0_7ContextEPN4sead4HeapE
0x0000007101201330,ResourceBase::callM5,32,_ZN4ksys3res8Resource2m5Ev
0x0000007101201350,ResourceBase::callM6AndClearField30,48,_ZN4ksys3res8Resource13finishParsingEv
0x0000007101201380,ResourceBase::callM7,12,_ZN4ksys3res8Resource2m7Ev
0x000000710120138c,ResourceBase::doCreate,4,_ZN4ksys3res8Resource9doCreate_EPhjPN4sead4HeapE
0x0000007101201390,ResourceBase::onDestroy,4,_ZN4ksys3res8Resource10onDestroy_Ev
0x0000007101201394,ResourceBase::parse,8,_ZN4ksys3res8Resource6parse_EPhmPN4sead4HeapE
0x000000710120139c,ResourceBase::nullsub1,4,_ZN4ksys3res8Resource3m5_Ev
0x00000071012013a0,ResourceBase::afterParse,8,_ZN4ksys3res8Resource14finishParsing_Ev
0x00000071012013a8,ResourceBase::returnTrue4,8,_ZN4ksys3res8Resource3m7_Ev
0x00000071012013b0,ResourceBase::nullsub2,4,_ZN4ksys3res8Resource3m8_Ev
0x00000071012013b4,res::setResLoadArgAllocSize,16,
0x00000071012013c4,res::clearResLoadArgAllocSize,16,
0x00000071012013d4,ResourceBase::rtti1,288,
0x00000071012014f4,ResourceBase::rtti2,92,
0x00000071012013d4,ResourceBase::rtti1,288,_ZNK4ksys3res8Resource27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012014f4,ResourceBase::rtti2,92,_ZNK4ksys3res8Resource18getRuntimeTypeInfoEv
0x0000007101201550,nullsub_5570,4,
0x0000007101201554,sub_7101201554,324,
0x0000007101201698,ResourceLoadArgBase::dtorDelete,4,

Can't render this file because it is too large.

View File

@ -0,0 +1,38 @@
#include "KingSystem/Resource/resResource.h"
namespace ksys::res {
Resource::Resource() = default;
Context* Resource::getContext() const {
return mContext;
}
void Resource::setContext(Context* context) {
mContext = context;
}
void Resource::onDestroy() {
onDestroy_();
}
void Resource::parse(Context*, sead::Heap* heap) {
parse_(mRawData, mRawSize, heap);
}
bool Resource::m5() {
m5_();
return true;
}
bool Resource::finishParsing() {
const bool ret = finishParsing_();
mContext = nullptr;
return ret;
}
bool Resource::m7() {
return m7_();
}
} // namespace ksys::res

View File

@ -0,0 +1,56 @@
#pragma once
#include <resource/seadResource.h>
#include "KingSystem/Utils/Types.h"
namespace ksys::res {
class IResource {
public:
virtual ~IResource() = default;
};
class Context {
public:
virtual ~Context() = default;
};
class Resource : public sead::DirectResource, public IResource {
SEAD_RTTI_OVERRIDE(Resource, sead::DirectResource)
public:
Resource();
void doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) override;
virtual bool needsParse() const { return false; }
virtual bool m2_() { return true; }
Context* getContext() const;
void setContext(Context* context);
void onDestroy();
void parse(Context*, sead::Heap* heap);
bool m5();
bool finishParsing();
bool m7();
protected:
virtual void onDestroy_() {}
virtual bool parse_(u8* data, size_t size, sead::Heap* heap);
virtual void m5_() {}
virtual bool finishParsing_() { return true; }
virtual bool m7_() { return true; }
virtual void m8_() {}
u32 mAllocSize = 0;
Context* mContext = nullptr;
};
KSYS_CHECK_SIZE_NX150(Resource, 0x38);
inline void Resource::doCreate_(u8*, u32, sead::Heap*) {}
inline bool Resource::parse_(u8*, size_t, sead::Heap*) {
return true;
}
} // namespace ksys::res