diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 8c316ff6..3fece5b2 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -96718,24 +96718,24 @@ 0x00000071012f9e70,sub_71012F9E70,372,_ZN4ksys3res11BoneControl33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071012f9fe4,sub_71012F9FE4,384,_ZN4ksys3res11BoneControl6EyeSetC2Ev 0x00000071012fa164,sub_71012FA164,368,_ZN4ksys3res11BoneControl9SpineNodeC2Ev -0x00000071012fa2d4,sub_71012FA2D4,272, -0x00000071012fa3e4,nullsub_4837,4, -0x00000071012fa3e8,nullsub_4838,4, -0x00000071012fa3ec,sub_71012FA3EC,180, -0x00000071012fa4a0,sub_71012FA4A0,180, -0x00000071012fa554,sub_71012FA554,104, -0x00000071012fa5bc,sub_71012FA5BC,92, -0x00000071012fa618,sub_71012FA618,8, -0x00000071012fa620,sub_71012FA620,92, -0x00000071012fa67c,sub_71012FA67C,8, -0x00000071012fa684,sub_71012FA684,8, -0x00000071012fa68c,sub_71012FA68C,92, -0x00000071012fa6e8,sub_71012FA6E8,104, -0x00000071012fa750,sub_71012FA750,92, -0x00000071012fa7ac,sub_71012FA7AC,8, -0x00000071012fa7b4,sub_71012FA7B4,100, -0x00000071012fa818,sub_71012FA818,88, -0x00000071012fa870,sub_71012FA870,372, +0x00000071012fa2d4,sub_71012FA2D4,272,_ZN4ksys3res8ChemicalC1Ev +0x00000071012fa3e4,nullsub_4837,4,_ZN4ksys3res8Chemical9doCreate_EPhjPN4sead4HeapE +0x00000071012fa3e8,nullsub_4838,4,_ZThn632_N4ksys3res8Chemical9doCreate_EPhjPN4sead4HeapE +0x00000071012fa3ec,sub_71012FA3EC,180,_ZN4ksys3res8Chemical6parse_EPhmPN4sead4HeapE +0x00000071012fa4a0,sub_71012FA4A0,180,_ZThn632_N4ksys3res8Chemical6parse_EPhmPN4sead4HeapE +0x00000071012fa554,sub_71012FA554,104,_ZN4ksys3res8ChemicalD2Ev +0x00000071012fa5bc,sub_71012FA5BC,92,_ZN4ksys3res8ChemicalD0Ev +0x00000071012fa618,sub_71012FA618,8,_ZNK4ksys3res8Chemical27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071012fa620,sub_71012FA620,92,_ZNK4ksys3res8Chemical18getRuntimeTypeInfoEv +0x00000071012fa67c,sub_71012FA67C,8,_ZNK4ksys3res8Chemical10needsParseEv +0x00000071012fa684,sub_71012FA684,8,_ZThn632_NK4ksys3res8Chemical27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071012fa68c,sub_71012FA68C,92,_ZThn632_NK4ksys3res8Chemical18getRuntimeTypeInfoEv +0x00000071012fa6e8,sub_71012FA6E8,104,_ZThn632_N4ksys3res8ChemicalD1Ev +0x00000071012fa750,sub_71012FA750,92,_ZThn632_N4ksys3res8ChemicalD0Ev +0x00000071012fa7ac,sub_71012FA7AC,8,_ZThn632_NK4ksys3res8Chemical10needsParseEv +0x00000071012fa7b4,sub_71012FA7B4,100,_ZThn664_N4ksys3res8ChemicalD1Ev +0x00000071012fa818,sub_71012FA818,88,_ZThn664_N4ksys3res8ChemicalD0Ev +0x00000071012fa870,sub_71012FA870,372,_ZN4ksys3res8Chemical33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071012fa9e4,nullsub_4839,4,_ZN4ksys3res3Lod9doCreate_EPhjPN4sead4HeapE 0x00000071012fa9e8,nullsub_4840,4,_ZThn632_N4ksys3res3Lod9doCreate_EPhjPN4sead4HeapE 0x00000071012fa9ec,sub_71012FA9EC,492,_ZN4ksys3res3Lod6parse_EPhmPN4sead4HeapE diff --git a/src/KingSystem/Resource/resResourceChemical.cpp b/src/KingSystem/Resource/resResourceChemical.cpp index fa7bd256..b404656f 100644 --- a/src/KingSystem/Resource/resResourceChemical.cpp +++ b/src/KingSystem/Resource/resResourceChemical.cpp @@ -1 +1,24 @@ #include "KingSystem/Resource/resResourceChemical.h" + +namespace ksys::res { + +Chemical::Chemical() : ParamIO("chemical", 0) { + addList(&mRoot, "chemical_root"); +} + +void Chemical::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {} + +bool Chemical::parse_(u8* data, size_t size, sead::Heap* heap) { + if (!data) + return true; + + agl::utl::ResParameterArchive archive{data}; + + const auto chemical_root_list = + agl::utl::getResParameterList(archive.getRootList(), "chemical_root"); + mRoot.parse(chemical_root_list, heap); + + return true; +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceChemical.h b/src/KingSystem/Resource/resResourceChemical.h index bb9ffe9b..4b27461c 100644 --- a/src/KingSystem/Resource/resResourceChemical.h +++ b/src/KingSystem/Resource/resResourceChemical.h @@ -1,13 +1,25 @@ #pragma once +#include "KingSystem/Chemical/chmRoot.h" #include "KingSystem/Resource/resResource.h" #include "KingSystem/Utils/ParamIO.h" namespace ksys::res { -// TODO class Chemical : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(Chemical, Resource) + +public: + Chemical(); + + void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override; + bool needsParse() const override { return true; } + bool parse_(u8* data, size_t size, sead::Heap* heap) override; + + const chm::Root& getRoot() const { return mRoot; } + +private: + chm::Root mRoot; }; } // namespace ksys::res