prime/include/Kyoto/Audio/CAudioSys.hpp

105 lines
2.5 KiB
C++
Raw Normal View History

#ifndef _CAUDIOSYS
#define _CAUDIOSYS
2022-08-13 01:26:00 +00:00
#include "types.h"
2023-01-07 21:24:16 +00:00
#include "rstl/map.hpp"
#include "rstl/rc_ptr.hpp"
#include "rstl/string.hpp"
#include "rstl/vector.hpp"
2022-12-01 13:45:36 +00:00
#include "Kyoto/Math/CVector3f.hpp"
2023-01-07 21:24:16 +00:00
class CAudioGroupSet;
enum ETRKSampleRate {
kTSR_Zero,
kTSR_One,
// TODO
};
enum ETRKRepeatMode {
// TODO
};
2022-08-13 01:26:00 +00:00
class CAudioSys {
2023-01-07 21:24:16 +00:00
static const rstl::string mpDefaultInvalidString;
2022-08-13 01:26:00 +00:00
public:
2022-10-31 16:19:28 +00:00
enum ESurroundModes { kSM_Mono, kSM_Stereo, kSM_Surround };
2023-01-07 21:24:16 +00:00
class CEmitterData {
2023-01-08 01:42:15 +00:00
public:
CEmitterData() : _50(0), _51(0), _52(kEmitterMedPriority){};
private:
char data[0x50];
char _50;
char _51;
uchar _52;
2023-01-07 21:24:16 +00:00
};
2022-10-31 16:19:28 +00:00
2022-12-01 13:45:36 +00:00
struct C3DEmitterParmData {
C3DEmitterParmData(const CVector3f& pos, const CVector3f& dir, float maxDist, float distComp,
uint flags, ushort sfxId, float maxVol, float minVol, bool important,
uchar prio)
: x0_pos(pos)
, xc_dir(dir)
, x18_maxDist(maxDist)
, x1c_distComp(distComp)
, x20_flags(flags)
, x24_sfxId(sfxId)
, x26_maxVol(maxVol)
, x27_minVol(minVol)
, x28_important(important)
, x29_prio(prio) {}
CVector3f x0_pos;
CVector3f xc_dir;
float x18_maxDist;
float x1c_distComp;
uint x20_flags;
ushort x24_sfxId;
float x26_maxVol;
float x27_minVol;
bool x28_important; // Can't be allocated over, regardless of priority
uchar x29_prio;
};
2023-01-07 21:24:16 +00:00
class CTrkData {};
CAudioSys(char, char, char, char, uint);
2022-10-01 06:19:09 +00:00
~CAudioSys();
static void SysSetVolume(uchar, uint, uchar);
2022-10-31 16:19:28 +00:00
static void SysSetSfxVolume(uchar, ushort, uchar, uchar);
static void SetDefaultVolumeScale(short);
static void SetVolumeScale(short);
2022-10-31 16:19:28 +00:00
static void SetSurroundMode(ESurroundModes);
static void TrkSetSampleRate(ETRKSampleRate);
static short GetDefaultVolumeScale();
2023-01-08 01:42:15 +00:00
static bool GetVerbose();
2023-01-07 21:24:16 +00:00
static bool mInitialized;
2023-01-08 01:42:15 +00:00
static bool mIsListenerActive;
2023-01-07 21:24:16 +00:00
static bool mVerbose;
static uchar mMaxNumEmitters;
static rstl::map< rstl::string, rstl::ncrc_ptr< CAudioGroupSet > >* mpGroupSetDB;
static rstl::map< uint, rstl::string >* mpGroupSetResNameDB;
static rstl::map< rstl::string, rstl::ncrc_ptr< CTrkData > >* mpDVDTrackDB;
2023-01-08 01:42:15 +00:00
static rstl::vector< CEmitterData >* mpEmitterDB;
2023-01-07 21:24:16 +00:00
static unkptr mpListener;
/* TODO: Remaining globals */
static ESurroundModes mSurroundMode;
static uint mMaxAramUsage;
2023-01-08 01:42:15 +00:00
static uint mCurrentAramUsage;
2023-01-07 21:24:16 +00:00
static bool mProLogic2;
static const uchar kMaxVolume;
2023-01-08 01:42:15 +00:00
static uchar kEmitterMedPriority;
2022-08-13 01:26:00 +00:00
};
#endif // _CAUDIOSYS