mirror of
https://github.com/zeldaret/ss
synced 2026-05-24 15:20:58 -04:00
26af4db82d
* update from dtk-template and start work towards using clangd * include <a> -> "a" * Update build.yml * remove/add non-trivial class in union warning
134 lines
4.2 KiB
C++
134 lines
4.2 KiB
C++
#ifndef EGG_AUDIO_ARC_PLAYER_MANAGER_H
|
|
#define EGG_AUDIO_ARC_PLAYER_MANAGER_H
|
|
|
|
#include "common.h"
|
|
#include "nw4r/snd/snd_DvdSoundArchive.h"
|
|
#include "nw4r/snd/snd_MemorySoundArchive.h"
|
|
#include "nw4r/snd/snd_NandSoundArchive.h"
|
|
#include "nw4r/snd/snd_SoundArchivePlayer.h"
|
|
#include "nw4r/snd/snd_SoundHeap.h"
|
|
|
|
namespace EGG {
|
|
|
|
class ArcPlayer {
|
|
public:
|
|
enum SARC_STORAGE {
|
|
STORAGE_NONE,
|
|
STORAGE_DVD,
|
|
STORAGE_NAND,
|
|
STORAGE_CNT,
|
|
STORAGE_MEM
|
|
};
|
|
|
|
ArcPlayer(nw4r::snd::SoundArchivePlayer *, nw4r::snd::SoundHeap *);
|
|
virtual ~ArcPlayer(); // at 0x8
|
|
bool setSteamBlocks(u32);
|
|
void stopAllSound();
|
|
|
|
u32 changeNameToId(const char *name) {
|
|
return mOpenSndArchive->ConvertLabelStringToSoundId(name);
|
|
}
|
|
nw4r::snd::SoundArchivePlayer *getPlayer() {
|
|
return mActiveSndArchivePlayer;
|
|
}
|
|
|
|
void setLoadStringLabels(bool bLoad) {
|
|
mLoadLabelStringData = bLoad;
|
|
}
|
|
|
|
virtual UNKTYPE *openArchive(const char *, nw4r::snd::SoundHeap *, SARC_STORAGE); // at 0xC
|
|
virtual UNKTYPE *openDvdArchive(const char *, nw4r::snd::SoundHeap *); // at 0x10
|
|
virtual UNKTYPE *openNandArchive(const char *, nw4r::snd::SoundHeap *); // at 0x14
|
|
virtual UNKTYPE *setupMemoryArchive(const void *, nw4r::snd::SoundHeap *); // at 0x18
|
|
|
|
virtual UNKTYPE *setupMemoryArchive(const void *p, nw4r::snd::SoundHeap *heap, s32) // at 0x1C
|
|
{
|
|
return setupMemoryArchive(p, heap);
|
|
}
|
|
|
|
virtual void closeArchive(); // at 0x20
|
|
virtual bool loadGroup(unsigned int, nw4r::snd::SoundHeap *, u32); // at 0x24
|
|
virtual bool loadGroup(int, nw4r::snd::SoundHeap *, u32); // at 0x28
|
|
virtual bool loadGroup(u32, nw4r::snd::SoundHeap *, u32); // at 0x2C
|
|
virtual bool loadGroup(const char *, nw4r::snd::SoundHeap *, u32); // at 0x30
|
|
virtual void calc(); // at 0x34
|
|
|
|
virtual bool startSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x38
|
|
{
|
|
return mActiveSndArchivePlayer->StartSound(handle, id);
|
|
}
|
|
|
|
virtual bool startSound(nw4r::snd::SoundHandle *handle, unsigned int id) // at 0x3C
|
|
{
|
|
return ArcPlayer::startSound(handle, (u32)id);
|
|
}
|
|
|
|
virtual bool startSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x40
|
|
{
|
|
u32 id = -1;
|
|
if (mOpenSndArchive) {
|
|
id = changeNameToId(name);
|
|
}
|
|
|
|
return ArcPlayer::startSound(handle, id);
|
|
}
|
|
|
|
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x44
|
|
{
|
|
return mActiveSndArchivePlayer->PrepareSound(handle, id);
|
|
}
|
|
|
|
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, unsigned int id) // at 0x48
|
|
{
|
|
return ArcPlayer::prepareSound(handle, (u32)id);
|
|
}
|
|
|
|
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x4C
|
|
{
|
|
u32 id = -1;
|
|
if (mOpenSndArchive) {
|
|
id = changeNameToId(name);
|
|
}
|
|
|
|
return ArcPlayer::prepareSound(handle, id);
|
|
}
|
|
|
|
virtual bool holdSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x50
|
|
{
|
|
return mActiveSndArchivePlayer->HoldSound(handle, id);
|
|
}
|
|
|
|
virtual bool holdSound(nw4r::snd::SoundHandle *handle, unsigned int id) // at 0x54
|
|
{
|
|
return ArcPlayer::holdSound(handle, (u32)id);
|
|
}
|
|
|
|
virtual bool holdSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x58
|
|
{
|
|
u32 id = -1;
|
|
if (mOpenSndArchive) {
|
|
id = changeNameToId(name);
|
|
}
|
|
|
|
return ArcPlayer::holdSound(handle, id);
|
|
}
|
|
|
|
private:
|
|
/* 0x004 */ bool mIsOpeningArchive;
|
|
/* 0x005 */ bool mIsLoadingGroup;
|
|
/* 0x006 */ bool mLoadLabelStringData;
|
|
/* 0x008 */ nw4r::snd::SoundArchive *mOpenSndArchive;
|
|
/* 0x00C */ nw4r::snd::DvdSoundArchive mDvdSndArchive;
|
|
/* 0x198 */ nw4r::snd::NandSoundArchive mNandSndArchive;
|
|
/* 0x374 */ nw4r::snd::MemorySoundArchive mMemorySndArchive;
|
|
/* 0x4C4 */ nw4r::snd::SoundArchivePlayer *mActiveSndArchivePlayer;
|
|
/* 0x4C8 */ nw4r::snd::SoundHeap *mSoundHeap;
|
|
/* 0x4CC */ SARC_STORAGE mStorage;
|
|
/* 0x4D0 */ u32 mSteamBlocks;
|
|
/* 0x4D4 */ void *mpHeaderBuf;
|
|
};
|
|
|
|
} // namespace EGG
|
|
|
|
#endif
|