Implement/match Act2Brick (#1169)

* Implement/match Act2Brick

* Rename functions

* Naming
This commit is contained in:
Christian Semmler
2024-11-25 14:08:57 -07:00
committed by GitHub
parent 816bfe842d
commit b9a1da6a7a
7 changed files with 132 additions and 30 deletions

View File

@@ -14,14 +14,14 @@ LegoCacheSoundManager::~LegoCacheSoundManager()
while (!m_set.empty()) {
sound = (*m_set.begin()).GetSound();
m_set.erase(m_set.begin());
sound->FUN_10006b80();
sound->Stop();
delete sound;
}
while (!m_list.empty()) {
sound = (*m_list.begin()).GetSound();
m_list.erase(m_list.begin());
sound->FUN_10006b80();
sound->Stop();
// DECOMP: delete should not be inlined here
delete sound;
}
@@ -51,7 +51,7 @@ MxResult LegoCacheSoundManager::Tickle()
listIter++;
}
else {
sound->FUN_10006b80();
sound->Stop();
m_list.erase(listIter++);
delete sound;
}
@@ -132,6 +132,40 @@ LegoCacheSound* LegoCacheSoundManager::Play(LegoCacheSound* p_sound, const char*
return NULL;
}
// FUNCTION: LEGO1 0x1003db80
// FUNCTION: BETA10 0x100656a7
void LegoCacheSoundManager::Stop(LegoCacheSound*& p_sound)
{
#ifdef COMPAT_MODE
Set100d6b4c::iterator setIter;
for (setIter = m_set.begin(); setIter != m_set.end(); setIter++) {
#else
for (Set100d6b4c::iterator setIter = m_set.begin(); setIter != m_set.end(); setIter++) {
#endif
if ((*setIter).GetSound() == p_sound) {
p_sound->Stop();
return;
}
}
#ifdef COMPAT_MODE
List100d6b4c::iterator listIter;
for (listIter = m_list.begin();; listIter++) {
#else
for (List100d6b4c::iterator listIter = m_list.begin();; listIter++) {
#endif
if (listIter == m_list.end()) {
return;
}
LegoCacheSound* sound = (*listIter).GetSound();
if (sound == p_sound) {
p_sound->Stop();
return;
}
}
}
// FUNCTION: LEGO1 0x1003dc40
void LegoCacheSoundManager::Destroy(LegoCacheSound*& p_sound)
{
@@ -142,7 +176,7 @@ void LegoCacheSoundManager::Destroy(LegoCacheSound*& p_sound)
for (Set100d6b4c::iterator setIter = m_set.begin(); setIter != m_set.end(); setIter++) {
#endif
if ((*setIter).GetSound() == p_sound) {
p_sound->FUN_10006b80();
p_sound->Stop();
delete p_sound;
m_set.erase(setIter);
@@ -162,7 +196,7 @@ void LegoCacheSoundManager::Destroy(LegoCacheSound*& p_sound)
LegoCacheSound* sound = (*listIter).GetSound();
if (sound == p_sound) {
p_sound->FUN_10006b80();
p_sound->Stop();
delete sound;
m_list.erase(listIter);

View File

@@ -181,7 +181,7 @@ MxResult LegoCacheSound::Play(const char* p_name, MxBool p_looping)
}
// FUNCTION: LEGO1 0x10006b80
void LegoCacheSound::FUN_10006b80()
void LegoCacheSound::Stop()
{
DWORD dwStatus;
m_dsBuffer->GetStatus(&dwStatus);