Files
tp/include/JSystem/JAudio2/JAISeMgr.h
T

124 lines
3.7 KiB
C++
Raw Normal View History

2021-03-28 22:49:05 +02:00
#ifndef JAISEMGR_H
#define JAISEMGR_H
2023-07-18 22:57:25 -07:00
#include "JSystem/JAudio2/JAISe.h"
2023-05-12 12:10:14 -07:00
#include "global.h"
struct JAIAudience;
struct JASSoundParams;
2021-03-28 22:49:05 +02:00
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-jaudio
*
*/
2021-09-30 07:13:49 -07:00
struct JASNonCopyable {
/* 0x0 */ int field_0x0;
}; // Size: 0x4
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-jaudio
*
*/
2023-07-12 10:59:33 +03:00
struct JAISeCategoryArrangementItem {
u8 mMaxActiveSe;
u8 mMaxInactiveSe;
};
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-jaudio
*
*/
2023-07-12 10:59:33 +03:00
struct JAISeCategoryArrangement {
JAISeCategoryArrangementItem mItems[16];
};
2021-09-30 07:13:49 -07:00
class JAISeMgr;
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-jaudio
*
*/
2021-09-30 07:13:49 -07:00
class JAISeCategoryMgr : public JAISeqDataUser {
public:
/* 8029F9C4 */ void JAISeMgr_calc_();
/* 8029FB30 */ void JAISeMgr_freeDeadSe_();
2023-07-12 10:59:33 +03:00
/* 8029FC88 */ u32 JAISeMgr_acceptsNewSe_(u32) const;
2021-09-30 07:13:49 -07:00
/* 8029FD40 */ void sortByPriority_();
/* 8029FDE0 */ void stop(u32);
/* 8029FE34 */ void stop();
/* 8029FE78 */ void stopSoundID(JAISoundID);
/* 8029FEEC */ void pause(bool);
/* 8029FF18 */ void JAISeMgr_mixOut_(JAISoundParamsMove const&, JAISoundActivity);
/* 802A0994 */ JAISeCategoryMgr();
/* 800078DC */ virtual ~JAISeCategoryMgr() {}
/* 8029F8B0 */ virtual bool isUsingSeqData(JAISeqDataRegion const&);
2023-07-12 10:59:33 +03:00
/* 8029F91C */ virtual int releaseSeqData(JAISeqDataRegion const&);
2021-09-30 07:13:49 -07:00
2022-12-19 11:06:32 -08:00
JAISoundParamsMove* getParams() { return &mParams; }
2023-07-12 10:59:33 +03:00
int getMaxSe() const {
2023-08-01 10:17:21 +03:00
return (mMaxActiveSe == 0) ? 0 : mMaxActiveSe + mMaxInactiveSe;
2023-07-12 10:59:33 +03:00
}
int getMaxActiveSe() const { return mMaxActiveSe; }
void setMaxActiveSe(int se) { mMaxActiveSe = se; }
void setMaxInactiveSe(int se) { mMaxInactiveSe = se; }
JSUList<JAISe>* getSeList() { return &mSeList; }
2023-07-12 10:59:33 +03:00
int getNumSe() const { return mSeList.getNumLinks(); }
JAIAudience* getAudience() { return (JAIAudience*)field_0x4.field_0x0; }
2022-12-19 11:06:32 -08:00
2021-09-30 07:13:49 -07:00
/* 0x04 */ JASNonCopyable field_0x4;
/* 0x08 */ JAISoundParamsMove mParams;
/* 0x58 */ JSUList<JAISe> mSeList;
/* 0x64 */ int mMaxInactiveSe;
/* 0x68 */ int mMaxActiveSe;
}; // Size: 0x6C
2024-04-12 00:10:30 -06:00
/**
* @ingroup jsystem-jaudio
*
*/
2023-07-12 10:59:33 +03:00
class JAISeMgr : public JASGlobalInstance<JAISeMgr>,
public JAISeqDataUser,
public JAISoundActivity {
2021-09-30 07:13:49 -07:00
public:
/* 802A0074 */ JAISeMgr(bool);
/* 802A0268 */ void setCategoryArrangement(JAISeCategoryArrangement const&);
/* 802A02A0 */ void stop();
/* 802A02F4 */ void stopSoundID(JAISoundID);
/* 802A0358 */ void initParams();
/* 802A03D8 */ void setAudience(JAIAudience*);
/* 802A03E0 */ void setSeqDataMgr(JAISeqDataMgr*);
/* 802A0434 */ void resetSeqDataMgr();
2023-07-12 10:59:33 +03:00
/* 802A0484 */ JAISe* newSe_(int, u32);
2021-09-30 07:13:49 -07:00
/* 802A0574 */ void calc();
/* 802A0704 */ void mixOut();
2024-01-30 19:08:37 -05:00
/* 802A0768 */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3<f32> const*);
2023-07-12 10:59:33 +03:00
/* 802A08D0 */ int getNumActiveSe() const;
2021-09-30 07:13:49 -07:00
/* 802A08FC */ virtual ~JAISeMgr(); // inline?
/* 802A0168 */ virtual bool isUsingSeqData(JAISeqDataRegion const&);
2023-07-12 10:59:33 +03:00
/* 802A01D8 */ virtual int releaseSeqData(JAISeqDataRegion const&);
2021-09-30 07:13:49 -07:00
2022-12-19 11:06:32 -08:00
JAISeCategoryMgr* getCategory(int categoryIndex) { return &mCategoryMgrs[categoryIndex]; }
2023-07-12 10:59:33 +03:00
JAIAudience* getAudience(int categoryIndex) {
if (categoryIndex >= 0 && categoryIndex < 16) {
JAIAudience* rv = mCategoryMgrs[categoryIndex].getAudience();
if (rv) return rv;
}
return mAudience;
}
2023-07-18 22:57:25 -07:00
JAISeqDataMgr* getSeqDataMgr() { return mSeqDataMgr; }
2023-09-15 05:20:09 -07:00
JAISoundParamsMove* getParams() { return &mParams; }
2022-12-19 11:06:32 -08:00
2021-09-30 07:13:49 -07:00
private:
/* 0x008 */ JAIAudience* mAudience;
/* 0x00C */ JAISeqDataMgr* mSeqDataMgr;
/* 0x010 */ int field_0x10;
/* 0x014 */ JAISeCategoryMgr mCategoryMgrs[16];
/* 0x6D4 */ JAISoundParamsMove mParams;
}; // Size: 0x724
STATIC_ASSERT(sizeof(JAISeMgr) == 0x724);
2021-03-28 22:49:05 +02:00
#endif /* JAISEMGR_H */