diff options
| author | KiritoDv <kiritodev01@gmail.com> | 2024-02-01 17:37:13 -0600 |
|---|---|---|
| committer | KiritoDv <kiritodev01@gmail.com> | 2024-02-01 17:37:13 -0600 |
| commit | b964a4db9225203ad61b49a5d9286b373a5c3abb (patch) | |
| tree | c1a015715b07fc0f12bfc53312932e1175426e2e /src/audio/AudioManager.cpp | |
| parent | dadf7414ee87ff64d9da433b67a3a7c555f9c76c (diff) | |
Removed last table data from audio
Diffstat (limited to 'src/audio/AudioManager.cpp')
| -rw-r--r-- | src/audio/AudioManager.cpp | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 9120281..c4b612c 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -6,6 +6,8 @@ #include <filesystem> #include <cassert> #include <cstring> +#include <factories/BaseFactory.h> + #include "hj/zip.h" #include "hj/pyutils.h" #include "spdlog/spdlog.h" @@ -13,6 +15,7 @@ #include "spdlog/spdlog.h" std::unordered_map<std::string, uint32_t> name_table; +std::unordered_map<uint32_t, std::string> sample_table; AudioManager* AudioManager::Instance; std::vector<uint32_t> PyUtils::range(uint32_t start, uint32_t end) { @@ -606,14 +609,14 @@ void AudioManager::write_aifc(AudioBankSample* entry, LUS::BinaryWriter &out) { if(entry->loop.count != 0){ START_CUSTOM_SECTION("\x0bVADPCMLOOPS") uint16_t one = BSWAP16(1); - tmp.Write((char*) &one, 2); - tmp.Write((char*) &one, 2); - tmp.Write((uint32_t) entry->loop.start); - tmp.Write((uint32_t) entry->loop.end); - tmp.Write((int32_t) entry->loop.count); + tmp.Write(reinterpret_cast<char*>(&one), 2); + tmp.Write(reinterpret_cast<char*>(&one), 2); + tmp.Write(entry->loop.start); + tmp.Write(entry->loop.end); + tmp.Write(entry->loop.count); for(size_t i = 0; i < 16; i++){ int16_t loop = BSWAP16(entry->loop.state.value()[i]); - tmp.Write((char*) &loop, 2); + tmp.Write(reinterpret_cast<char*>(&loop), 2); } END_SECTION(); } @@ -624,6 +627,18 @@ void AudioManager::write_aifc(AudioBankSample* entry, LUS::BinaryWriter &out) { } +void AudioManager::bind_sample(YAML::Node& node, const std::string& path){ + auto id = GetSafeNode<uint32_t>(node, "id"); + sample_table[id] = path; +} + +std::string& AudioManager::get_sample(uint32_t id) { + if(!sample_table.contains(id)) { + throw std::runtime_error("Failed to find sample with id " + std::to_string(id)); + } + return sample_table[id]; +} + void AudioManager::create_aifc(int32_t index, LUS::BinaryWriter &out) { int32_t idx = -1; for(auto &sample_bank : this->loaded_tbl.banks){ |
