1#include "Project/File/SoundItemHolder.h"
2
3#include "Project/File/SoundItemEntry.h"
4
5namespace al {
6SoundItemHolder::SoundItemHolder() {
7 mSoundItemEntries.allocBufferAssert(size: 640, heap: nullptr);
8}
9
10SoundItemEntry* SoundItemHolder::addNewLoadRequestEntry(u32 itemId, u32 unknown,
11 IAudioResourceLoader* resourceLoader) {
12 SoundItemEntry* entry = mSoundItemEntries.get(idx: mSize);
13 entry->setLoadRequestInfo(itemId, unknown, resourceLoader);
14 mSize++;
15 return entry;
16}
17
18SoundItemEntry* SoundItemHolder::tryFindEntry(u32 itemId, IAudioResourceLoader* resourceLoader) {
19 for (s32 i = 0; i < mSize; i++) {
20 SoundItemEntry* entry = mSoundItemEntries.get(idx: i);
21 if (entry->getSoundItemId() == itemId && entry->getAudioResourceLoader() == resourceLoader)
22 return entry;
23 }
24 return nullptr;
25}
26
27void SoundItemHolder::waitLoadDoneAll() {
28 for (s32 i = 0; i < mSize; i++) {
29 SoundItemEntry* entry = mSoundItemEntries.get(idx: i);
30 if (entry->mFileState != FileState::IsLoadDone)
31 entry->waitLoadDone();
32 }
33}
34
35void SoundItemHolder::clearEntry() {
36 for (s32 i = 0; i < mSize; i++)
37 mSoundItemEntries.get(idx: i)->clear();
38 mSize = 0;
39}
40
41} // namespace al
42