From 396f732bc58080430562ea60fd345bf2e51cfc0b Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Sun, 17 Sep 2023 23:55:59 -0600 Subject: Refactored to use a better file format --- src/factories/SampleFactory.cpp | 46 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/factories/SampleFactory.cpp (limited to 'src/factories/SampleFactory.cpp') diff --git a/src/factories/SampleFactory.cpp b/src/factories/SampleFactory.cpp new file mode 100644 index 0000000..7e2d1a1 --- /dev/null +++ b/src/factories/SampleFactory.cpp @@ -0,0 +1,46 @@ +#include "SampleFactory.h" + +#include +#include "audio/AudioManager.h" + +bool SampleFactory::process(LUS::BinaryWriter* writer, YAML::Node& data, std::vector& buffer) { + WRITE_HEADER(LUS::ResourceType::Sample, 0); + + auto id = data["id"].as(); + AudioBankSample entry = AudioManager::Instance->get_aifc(id); + + // Write AdpcmLoop + WRITE_U32(entry.loop.start); + WRITE_U32(entry.loop.end); + WRITE_I32(entry.loop.count); + WRITE_U32(entry.loop.pad); + + if(entry.loop.state.has_value()){ + std::vector state = entry.loop.state.value(); + WRITE_U32(state.size()); + for(auto &value : state){ + writer->Write(value); + } + } else { + WRITE_U32(0); + } + + // Write AdpcmBook + WRITE_I32(entry.book.order); + WRITE_I32(entry.book.npredictors); + + WRITE_U32(entry.book.table.size()); + for(auto &value : entry.book.table){ + writer->Write(value); + } + + // Write sample + WRITE_I32(entry.data.size()); + for(auto &value : entry.data){ + WRITE_U8(value); + } + + writer->Write(entry.name); + + return true; +} \ No newline at end of file -- cgit v1.2.3