mirror of
https://github.com/zeldaret/botw
synced 2026-07-11 22:40:14 -04:00
ksys/res: Add Event resource classes
This commit is contained in:
@@ -196,4 +196,6 @@ target_sources(uking PRIVATE
|
||||
|
||||
Event/resResourceDemo.cpp
|
||||
Event/resResourceDemo.h
|
||||
Event/resResourceEventFlow.cpp
|
||||
Event/resResourceEventFlow.h
|
||||
)
|
||||
|
||||
@@ -1,7 +1,20 @@
|
||||
#include "KingSystem/Resource/Event/resResourceDemo.h"
|
||||
#include "KingSystem/Resource/resEntryFactory.h"
|
||||
#include "KingSystem/Resource/resSystem.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
void Demo::registerFactory(sead::Heap* heap) {
|
||||
auto* rm = sead::ResourceMgr::instance();
|
||||
if (!rm)
|
||||
return;
|
||||
|
||||
if (rm->getDefaultFactory() != rm->findFactory("bdemo"))
|
||||
return;
|
||||
|
||||
res::registerEntryFactory(new (heap) EntryFactory<Demo>(1.0, sizeof(Demo)), "bdemo");
|
||||
}
|
||||
|
||||
Demo::Demo() : agl::utl::IParameterIO(".bdemo", 0) {}
|
||||
|
||||
void Demo::doCreate_(u8* buffer, u32, sead::Heap*) {
|
||||
|
||||
@@ -12,6 +12,8 @@ class Demo : public sead::DirectResource, public agl::utl::IParameterIO {
|
||||
public:
|
||||
Demo();
|
||||
|
||||
static void registerFactory(sead::Heap* heap);
|
||||
|
||||
void doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) override;
|
||||
|
||||
agl::utl::ParameterObj mDemoSettingObj;
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#include "KingSystem/Resource/Event/resResourceEventFlow.h"
|
||||
#include <evfl/ResEventFlowFile.h>
|
||||
#include "KingSystem/Resource/resEntryFactory.h"
|
||||
#include "KingSystem/Resource/resSystem.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
void EventFlowchart::registerFactory(sead::Heap* heap) {
|
||||
registerEntryFactory(new (heap) EntryFactory<EventFlowchart>(1.0, sizeof(EventFlowchart)),
|
||||
"bfevfl");
|
||||
}
|
||||
|
||||
void EventFlowchart::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {
|
||||
m_res = evfl::ResEventFlowFile::ResCast(buffer);
|
||||
}
|
||||
|
||||
void EventFlowchart::onDestroy_() {
|
||||
if (m_res) {
|
||||
m_res->Unrelocate();
|
||||
m_res = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
EventFlowchart::~EventFlowchart() = default;
|
||||
|
||||
void EventTimeline::registerFactory(sead::Heap* heap) {
|
||||
registerEntryFactory(new (heap) EntryFactory<EventTimeline>(1.0, sizeof(EventTimeline)),
|
||||
"bfevtm");
|
||||
}
|
||||
|
||||
void EventTimeline::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {
|
||||
m_res = evfl::ResEventFlowFile::ResCast(buffer);
|
||||
}
|
||||
|
||||
void EventTimeline::onDestroy_() {
|
||||
if (m_res) {
|
||||
m_res->Unrelocate();
|
||||
m_res = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
EventTimeline::~EventTimeline() = default;
|
||||
|
||||
} // namespace ksys::res
|
||||
@@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
|
||||
#include "KingSystem/Resource/resResource.h"
|
||||
|
||||
namespace evfl {
|
||||
struct ResEventFlowFile;
|
||||
}
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
class EventFlowchart : public Resource {
|
||||
SEAD_RTTI_OVERRIDE(EventFlowchart, Resource)
|
||||
|
||||
public:
|
||||
EventFlowchart() = default;
|
||||
~EventFlowchart() override;
|
||||
|
||||
static void registerFactory(sead::Heap* heap);
|
||||
|
||||
evfl::ResEventFlowFile* getRes() const { return m_res; }
|
||||
|
||||
private:
|
||||
void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override;
|
||||
void onDestroy_() override;
|
||||
|
||||
evfl::ResEventFlowFile* m_res = nullptr;
|
||||
};
|
||||
|
||||
class EventTimeline : public Resource {
|
||||
SEAD_RTTI_OVERRIDE(EventTimeline, Resource)
|
||||
|
||||
public:
|
||||
EventTimeline() = default;
|
||||
~EventTimeline() override;
|
||||
|
||||
static void registerFactory(sead::Heap* heap);
|
||||
|
||||
evfl::ResEventFlowFile* getRes() const { return m_res; }
|
||||
|
||||
private:
|
||||
void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override;
|
||||
void onDestroy_() override;
|
||||
|
||||
evfl::ResEventFlowFile* m_res = nullptr;
|
||||
};
|
||||
|
||||
} // namespace ksys::res
|
||||
Reference in New Issue
Block a user