mirror of
https://github.com/zeldaret/ss
synced 2026-07-05 04:59:41 -04:00
Refactoring
This commit is contained in:
@@ -52,8 +52,6 @@ public:
|
||||
void updatePositionRelativeToListener();
|
||||
void updateDistanceToListener();
|
||||
|
||||
void resetFloats();
|
||||
|
||||
bool checkFlag(u16 flag) const {
|
||||
return (mFlags & flag);
|
||||
}
|
||||
|
||||
@@ -9,24 +9,10 @@
|
||||
#include "nw4r/snd/snd_Sound3DListener.h"
|
||||
#include "nw4r/snd/snd_Sound3DManager.h"
|
||||
|
||||
class dSnd3DManager_c;
|
||||
extern template class SndMgrDisposer<dSnd3DManager_c>;
|
||||
SND_DISPOSER_FORWARD_DECL(dSnd3DManager_c);
|
||||
|
||||
class dSnd3DManager_c {
|
||||
public:
|
||||
SndMgrDisposer<dSnd3DManager_c> *GetDisposer() {
|
||||
return &mDisposer;
|
||||
}
|
||||
|
||||
static dSnd3DManager_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
static dSnd3DManager_c *sInstance;
|
||||
static SndMgrDisposer<dSnd3DManager_c> *sDisposer;
|
||||
|
||||
private:
|
||||
SndMgrDisposer<dSnd3DManager_c> mDisposer;
|
||||
SND_DISPOSER_MEMBERS(dSnd3DManager_c);
|
||||
|
||||
public:
|
||||
dSnd3DManager_c();
|
||||
@@ -37,8 +23,8 @@ public:
|
||||
void resetCamDistance();
|
||||
void calc();
|
||||
void clearState();
|
||||
|
||||
nw4r::snd::Sound3DManager& getManager() {
|
||||
|
||||
nw4r::snd::Sound3DManager &getManager() {
|
||||
return mManager;
|
||||
}
|
||||
|
||||
@@ -59,7 +45,6 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void updateListenerPos(f32);
|
||||
/* 0x10 */ bool mIsSetup;
|
||||
/* 0x11 */ bool mCalculationsFresh;
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef D_SND_AREA_SOUND_H
|
||||
#define D_SND_AREA_SOUND_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/snd/d_snd_sound.h"
|
||||
|
||||
/** A sound class used for dSndAreaSoundEffectMgr */
|
||||
class dSndAreaSound_c : public dSndSound_c {
|
||||
public:
|
||||
dSndAreaSound_c();
|
||||
|
||||
virtual void cancel() override; // 0x08
|
||||
virtual void calc() override; // 0x0C
|
||||
virtual void fadeIn(u32 id, s32 fadeFrames) override; // 0x10
|
||||
|
||||
virtual void initCallback(u32 id); // 0x28
|
||||
|
||||
typedef void (*Callback)(dSndAreaSound_c &sound);
|
||||
|
||||
using dSndSound_c::pause;
|
||||
|
||||
void pause(s32 fadeFrames);
|
||||
void unpause(s32 fadeFrames);
|
||||
|
||||
private:
|
||||
bool isFadingOut() const {
|
||||
return mIsFadingOut && IsAttachedSound();
|
||||
}
|
||||
|
||||
/* 0x0F0 */ bool field_0xF0;
|
||||
/* 0x0F4 */ Callback mpCalcCallback;
|
||||
/* 0x0F8 */ UNKWORD field_0xF8;
|
||||
/* 0x0FC */ UNKWORD field_0xFC;
|
||||
/* 0x100 */ UNKWORD field_0x100;
|
||||
/* 0x104 */ UNKWORD field_0x104;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef D_SND_AREA_SOUND_EFFECT_MGR_H
|
||||
#define D_SND_AREA_SOUND_EFFECT_MGR_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/snd/d_snd_actor.h"
|
||||
#include "d/snd/d_snd_area_sound.h"
|
||||
#include "d/snd/d_snd_util.h"
|
||||
|
||||
SND_DISPOSER_FORWARD_DECL(dSndAreaSoundEffectMgr_c);
|
||||
|
||||
/**
|
||||
* A singleton sound actor for playing persistent environmental background
|
||||
* sound effects. Turn this off and the Faron birds will stop singing.
|
||||
*
|
||||
* Plays sounds like SE_A_F100 (hence the name, not sure if it's the real meaning).
|
||||
*/
|
||||
class dSndAreaSoundEffectMgr_c {
|
||||
SND_DISPOSER_MEMBERS(dSndAreaSoundEffectMgr_c)
|
||||
|
||||
public:
|
||||
dSndAreaSoundEffectMgr_c();
|
||||
|
||||
bool startSound(u32 soundId, u32 handleIdx);
|
||||
void calc();
|
||||
void stopSounds(s32 fadeFrames);
|
||||
|
||||
private:
|
||||
bool isPlayingAnySound() const;
|
||||
bool isPlayingSound(u32 soundId) const;
|
||||
|
||||
/* 0x010 */ dSndAreaSound_c mSounds[3];
|
||||
/* 0x328 */ UNKWORD field_0x328;
|
||||
/* 0x32C */ f32 field_0x32C;
|
||||
/* 0x330 */ f32 field_0x330;
|
||||
/* 0x334 */ dSndActor_c mActor;
|
||||
/* 0x388 */ f32 field_0x388;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -32,24 +32,10 @@ Notes on player groups:
|
||||
17: TgSound
|
||||
*/
|
||||
|
||||
class dSndControlPlayerMgr_c;
|
||||
extern template class SndMgrDisposer<dSndControlPlayerMgr_c>;
|
||||
SND_DISPOSER_FORWARD_DECL(dSndControlPlayerMgr_c);
|
||||
|
||||
class dSndControlPlayerMgr_c {
|
||||
public:
|
||||
SndMgrDisposer<dSndControlPlayerMgr_c> *GetDisposer() {
|
||||
return &mDisposer;
|
||||
}
|
||||
|
||||
static dSndControlPlayerMgr_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
static dSndControlPlayerMgr_c *sInstance;
|
||||
static SndMgrDisposer<dSndControlPlayerMgr_c> *sDisposer;
|
||||
|
||||
private:
|
||||
SndMgrDisposer<dSndControlPlayerMgr_c> mDisposer;
|
||||
SND_DISPOSER_MEMBERS(dSndControlPlayerMgr_c);
|
||||
|
||||
public:
|
||||
enum PlayerCtrl_e {
|
||||
@@ -87,7 +73,7 @@ private:
|
||||
void unlinkCtrl(dSndControlPlayer_c *);
|
||||
void setControlValue(PlayerCtrl_e ctrlType, u32 playerIdx, f32 value, s32 frames);
|
||||
f32 getAppliedPlayerVolume(u32 playerIdx) const;
|
||||
f32 getControlVolumeTarget(PlayerCtrl_e ctrlType, u32 playerIdx) const;
|
||||
f32 getControlTarget(PlayerCtrl_e ctrlType, u32 playerIdx) const;
|
||||
|
||||
/* 0x10 */ dSndControlPlayer_c *mpCtrls[CTRL_MAX];
|
||||
/* 0x1C */ f32 *mpTargetVolumes;
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
#include "nw4r/snd/snd_SoundHandle.h"
|
||||
#include "nw4r/snd/snd_SoundStartable.h"
|
||||
|
||||
class dSndPlayerMgr_c;
|
||||
extern template class SndMgrDisposer<dSndPlayerMgr_c>;
|
||||
SND_DISPOSER_FORWARD_DECL(dSndPlayerMgr_c);
|
||||
|
||||
/**
|
||||
* The main interface for managing sound stuff. Will delegate to dSndMgr_c for
|
||||
@@ -16,19 +15,7 @@ extern template class SndMgrDisposer<dSndPlayerMgr_c>;
|
||||
*/
|
||||
class dSndPlayerMgr_c {
|
||||
public:
|
||||
SndMgrDisposer<dSndPlayerMgr_c> *GetDisposer() {
|
||||
return &mDisposer;
|
||||
}
|
||||
|
||||
static dSndPlayerMgr_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
static dSndPlayerMgr_c *sInstance;
|
||||
static SndMgrDisposer<dSndPlayerMgr_c> *sDisposer;
|
||||
|
||||
private:
|
||||
SndMgrDisposer<dSndPlayerMgr_c> mDisposer;
|
||||
SND_DISPOSER_MEMBERS(dSndPlayerMgr_c);
|
||||
|
||||
public:
|
||||
dSndPlayerMgr_c();
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
#ifndef D_SND_SMALL_EFFECT_MGR_H
|
||||
#define D_SND_SMALL_EFFECT_MGR_H
|
||||
|
||||
#include "d/snd/d_snd_util.h"
|
||||
#include "d/snd/d_snd_wzsound.h" // IWYU pragma: export
|
||||
#include "nw4r/snd/snd_SoundHandle.h"
|
||||
|
||||
|
||||
SND_DISPOSER_FORWARD_DECL(dSndSmallEffectMgr_c);
|
||||
|
||||
/**
|
||||
* An interface for playing the SE_S ("sound effect, small"?) sounds.
|
||||
*/
|
||||
class dSndSmallEffectMgr_c {
|
||||
SND_DISPOSER_MEMBERS(dSndSmallEffectMgr_c)
|
||||
|
||||
public:
|
||||
dSndSmallEffectMgr_c();
|
||||
|
||||
void playSound(u32 soundId);
|
||||
void playSoundWithPitch(u32 soundId, f32 pitch);
|
||||
void playButtonPressSoundWhenAdvancingTextBoxes(f32);
|
||||
|
||||
private:
|
||||
/* 0x10 */ void *field_0x10;
|
||||
/* 0x14 */ void *field_0x14;
|
||||
/* 0x18 */ void *field_0x18;
|
||||
/* 0x1C */ nw4r::snd::SoundHandle mHandles[3];
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -136,14 +136,14 @@ public:
|
||||
dSndSound_c();
|
||||
~dSndSound_c();
|
||||
|
||||
virtual void cancel(); // 0x08
|
||||
virtual void executeCtrls(); // 0x0C
|
||||
virtual void fadeIn(u32 id, s32 fadeFrames); // 0x10
|
||||
virtual void cancel(); // 0x08
|
||||
virtual void calc(); // 0x0C
|
||||
virtual void fadeIn(u32 id, s32 fadeFrames); // 0x10
|
||||
virtual nw4r::snd::SoundStartable::StartResult prepareSound(u32 soundId, u32 startOffset); // 0x14
|
||||
virtual nw4r::snd::SoundStartable::StartResult prepareSound(const char *label, u32 startOffset); // 0x18
|
||||
virtual void onPreparing(u32 soundId, u32 startOffset); // 0x1C
|
||||
virtual void stop(s32 fadeFrames); // 0x20
|
||||
virtual void pause(bool pauseFlag, s32 fadeFrames); // 0x24
|
||||
virtual void onPreparing(u32 soundId, u32 startOffset); // 0x1C
|
||||
virtual void stop(s32 fadeFrames); // 0x20
|
||||
virtual void pause(bool pauseFlag, s32 fadeFrames); // 0x24
|
||||
|
||||
bool isStrmSound();
|
||||
bool isWaveSound();
|
||||
@@ -173,7 +173,7 @@ public:
|
||||
void linkCtrl(dSndControlSound_c *);
|
||||
void unlinkCtrl(dSndControlSound_c *);
|
||||
|
||||
private:
|
||||
protected:
|
||||
bool cannotStart() const {
|
||||
return mIsRunning && !mIsFadingOut && IsAttachedSound();
|
||||
}
|
||||
|
||||
@@ -39,4 +39,33 @@ void SndMgrDisposer<T>::remove() {
|
||||
T::sDisposer = nullptr;
|
||||
}
|
||||
|
||||
#define SND_DISPOSER_FORWARD_DECL(class_name) \
|
||||
class class_name; \
|
||||
extern template class SndMgrDisposer<class_name>;
|
||||
|
||||
#define SND_DISPOSER_DEFINE(class_name) \
|
||||
template class SndMgrDisposer<class_name>; \
|
||||
class_name *class_name::sInstance; \
|
||||
SndMgrDisposer<class_name> *class_name::sDisposer;
|
||||
|
||||
#define SND_DISPOSER_MEMBERS(class_name) \
|
||||
public: \
|
||||
SndMgrDisposer<class_name> *GetDisposer() { \
|
||||
return &mDisposer; \
|
||||
} \
|
||||
\
|
||||
static class_name *GetInstance() { \
|
||||
return sInstance; \
|
||||
} \
|
||||
\
|
||||
static void create() { \
|
||||
SndMgrDisposer<class_name>::create(); \
|
||||
} \
|
||||
\
|
||||
static class_name *sInstance; \
|
||||
static SndMgrDisposer<class_name> *sDisposer; \
|
||||
\
|
||||
private: \
|
||||
SndMgrDisposer<class_name> mDisposer;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
#ifndef SMALL_SOUND_MGR_H
|
||||
#define SMALL_SOUND_MGR_H
|
||||
#ifndef D_SND_WZSOUND_H
|
||||
#define D_SND_WZSOUND_H
|
||||
|
||||
// Thanks kiwi! https://gist.github.com/kiwi515/47bb17b07ed502bdfa7faa60bc48a3c7
|
||||
|
||||
#include "common.h"
|
||||
enum WZSound {
|
||||
/* 0x0000 */ SE_L_FLIPED,
|
||||
/* 0x0001 */ SE_L_FS_START,
|
||||
@@ -6469,18 +6468,4 @@ enum WZSound {
|
||||
/* 0x193D */ LABEL_SOUND_END
|
||||
};
|
||||
|
||||
class SmallSoundManager {
|
||||
public:
|
||||
void playSound(WZSound id);
|
||||
void playSoundWithPitch(WZSound id, f32 pitch);
|
||||
void playButtonPressSoundWhenAdvancingTextBoxes(f32);
|
||||
|
||||
static SmallSoundManager *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private:
|
||||
static SmallSoundManager *sInstance;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -64,6 +64,13 @@ namespace nw4r { namespace snd
|
||||
return IsAttachedSound() && mSound->IsPause();
|
||||
}
|
||||
|
||||
int GetRemainingFadeFrames() const {
|
||||
if (IsAttachedSound())
|
||||
return mSound->GetRemainingFadeFrames();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 GetId() const
|
||||
{
|
||||
if (IsAttachedSound())
|
||||
|
||||
Reference in New Issue
Block a user