Implement/match LegoActor::Mute ()

This commit is contained in:
Christian Semmler 2024-06-04 12:19:59 -04:00 committed by GitHub
parent 4898a55508
commit 0c7c77aad3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 27 additions and 8 deletions
LEGO1/lego/legoomni

View file

@ -53,7 +53,7 @@ public:
static const char* GetActorName(MxU8 p_id);
protected:
void FUN_1002d6e0(MxBool);
void Mute(MxBool p_muted);
MxFloat m_frequencyFactor; // 0x68
LegoCacheSound* m_sound; // 0x6c

View file

@ -44,6 +44,7 @@ public:
void FUN_10006b80();
void FUN_10006be0();
void SetDistance(MxS32 p_min, MxS32 p_max);
void Mute(MxBool p_mute);
// SYNTHETIC: LEGO1 0x10006610
// LegoCacheSound::`scalar deleting destructor'
@ -66,7 +67,7 @@ private:
MxS32 m_volume; // 0x6c
MxBool m_unk0x70; // 0x70
MxString m_unk0x74; // 0x74
undefined m_unk0x84; // 0x84
MxBool m_muted; // 0x84
};
#endif // LEGOCACHSOUND_H

View file

@ -29,7 +29,7 @@ void LegoCacheSound::Init()
m_unk0x70 = FALSE;
m_looping = TRUE;
m_volume = 79;
m_unk0x84 = 0;
m_muted = FALSE;
}
// FUNCTION: LEGO1 0x10006710
@ -226,7 +226,7 @@ void LegoCacheSound::FUN_10006be0()
}
}
if (m_unk0x74.GetLength() != 0 && !m_unk0x84) {
if (m_unk0x74.GetLength() != 0 && !m_muted) {
if (!m_sound.UpdatePosition(m_dsBuffer)) {
if (m_unk0x6a) {
return;
@ -253,6 +253,22 @@ void LegoCacheSound::FUN_10006cd0(undefined4, undefined4)
{
}
// FUNCTION: LEGO1 0x10006d40
// FUNCTION: BETA10 0x10066ec8
void LegoCacheSound::Mute(MxBool p_muted)
{
if (m_muted != p_muted) {
m_muted = p_muted;
if (m_muted) {
m_dsBuffer->Stop();
}
else {
m_dsBuffer->Play(0, 0, m_looping);
}
}
}
// FUNCTION: LEGO1 0x10006d80
// FUNCTION: BETA10 0x100670e7
MxString LegoCacheSound::FUN_10006d80(const MxString& p_str)

View file

@ -107,7 +107,7 @@ void LegoActor::ParseAction(char* p_extra)
}
if (KeyValueStringParse(value, g_strMUTE, p_extra)) {
FUN_1002d6e0(TRUE);
Mute(TRUE);
}
if (KeyValueStringParse(value, g_strVISIBILITY, p_extra)) {
@ -139,8 +139,10 @@ void LegoActor::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2)
LegoEntity::SetROI(p_roi, p_bool1, p_bool2);
}
// STUB: LEGO1 0x1002d6e0
void LegoActor::FUN_1002d6e0(MxBool)
// FUNCTION: LEGO1 0x1002d6e0
void LegoActor::Mute(MxBool p_muted)
{
// TODO
if (m_sound != NULL) {
m_sound->Mute(p_muted);
}
}