mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-22 15:48:09 -05:00
MxAudioManager: Destructor, LockedReinitialize, Reinitialize (#125)
* MxAudioManager: Destructor, LockedReinitialize * MxAudioManager::Reinitialize, fix LockedReinitialize logic * MxAudioManager cleanup - fix param in LockedReinitialize, mark that function as private/give it a better param name * Match LockedReinitialize, fix function declarations, add/match InitPresenters --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
parent
c67e537508
commit
5617e0e044
6 changed files with 96 additions and 42 deletions
|
@ -93,6 +93,7 @@ add_library(lego1 SHARED
|
||||||
LEGO1/motorcycle.cpp
|
LEGO1/motorcycle.cpp
|
||||||
LEGO1/mxatomid.cpp
|
LEGO1/mxatomid.cpp
|
||||||
LEGO1/mxatomidcounter.cpp
|
LEGO1/mxatomidcounter.cpp
|
||||||
|
LEGO1/mxaudiomanager.cpp
|
||||||
LEGO1/mxaudiopresenter.cpp
|
LEGO1/mxaudiopresenter.cpp
|
||||||
LEGO1/mxautolocker.cpp
|
LEGO1/mxautolocker.cpp
|
||||||
LEGO1/mxbackgroundaudiomanager.cpp
|
LEGO1/mxbackgroundaudiomanager.cpp
|
||||||
|
@ -159,7 +160,6 @@ add_library(lego1 SHARED
|
||||||
LEGO1/mxticklemanager.cpp
|
LEGO1/mxticklemanager.cpp
|
||||||
LEGO1/mxtimer.cpp
|
LEGO1/mxtimer.cpp
|
||||||
LEGO1/mxtransitionmanager.cpp
|
LEGO1/mxtransitionmanager.cpp
|
||||||
LEGO1/mxunknown100dc6e0.cpp
|
|
||||||
LEGO1/mxvariable.cpp
|
LEGO1/mxvariable.cpp
|
||||||
LEGO1/mxvariabletable.cpp
|
LEGO1/mxvariabletable.cpp
|
||||||
LEGO1/mxvector.cpp
|
LEGO1/mxvector.cpp
|
||||||
|
|
64
LEGO1/mxaudiomanager.cpp
Normal file
64
LEGO1/mxaudiomanager.cpp
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#include "mxaudiomanager.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(MxAudioManager, 0x30);
|
||||||
|
|
||||||
|
// GLOBAL: LEGO1 0x10102108
|
||||||
|
MxS32 MxAudioManager::g_unkCount = 0;
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x100b8d00
|
||||||
|
MxAudioManager::MxAudioManager()
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x100b8d90
|
||||||
|
MxAudioManager::~MxAudioManager()
|
||||||
|
{
|
||||||
|
LockedReinitialize(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x100b8df0
|
||||||
|
void MxAudioManager::Init()
|
||||||
|
{
|
||||||
|
this->m_unk2c = 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x100b8e00
|
||||||
|
void MxAudioManager::LockedReinitialize(MxBool p_skipDestroy)
|
||||||
|
{
|
||||||
|
this->m_criticalSection.Enter();
|
||||||
|
g_unkCount--;
|
||||||
|
Init();
|
||||||
|
this->m_criticalSection.Leave();
|
||||||
|
|
||||||
|
if (!p_skipDestroy)
|
||||||
|
MxMediaManager::Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x100b8e40
|
||||||
|
MxResult MxAudioManager::InitPresenters()
|
||||||
|
{
|
||||||
|
MxResult result = FAILURE;
|
||||||
|
MxBool success = FALSE;
|
||||||
|
|
||||||
|
if (MxMediaManager::InitPresenters() == SUCCESS) {
|
||||||
|
this->m_criticalSection.Enter();
|
||||||
|
success = TRUE;
|
||||||
|
result = SUCCESS;
|
||||||
|
g_unkCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result)
|
||||||
|
Destroy();
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
this->m_criticalSection.Leave();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// OFFSET: LEGO1 0x100b8e90
|
||||||
|
void MxAudioManager::Destroy()
|
||||||
|
{
|
||||||
|
LockedReinitialize(FALSE);
|
||||||
|
}
|
28
LEGO1/mxaudiomanager.h
Normal file
28
LEGO1/mxaudiomanager.h
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef MXAUDIOMANAGER_H
|
||||||
|
#define MXAUDIOMANAGER_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
#include "mxmediamanager.h"
|
||||||
|
|
||||||
|
// VTABLE 0x100dc6e0
|
||||||
|
class MxAudioManager : public MxMediaManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MxAudioManager();
|
||||||
|
virtual ~MxAudioManager() override;
|
||||||
|
|
||||||
|
virtual MxResult InitPresenters(); // vtable+14
|
||||||
|
virtual void Destroy(); // vtable+18
|
||||||
|
|
||||||
|
private:
|
||||||
|
void LockedReinitialize(MxBool);
|
||||||
|
|
||||||
|
static MxS32 g_unkCount;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void Init();
|
||||||
|
|
||||||
|
undefined4 m_unk2c;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MXAUDIOMANAGER_H
|
|
@ -1,12 +1,12 @@
|
||||||
#ifndef MXSOUNDMANAGER_H
|
#ifndef MXSOUNDMANAGER_H
|
||||||
#define MXSOUNDMANAGER_H
|
#define MXSOUNDMANAGER_H
|
||||||
|
|
||||||
#include "mxunknown100dc6e0.h"
|
#include "mxaudiomanager.h"
|
||||||
|
|
||||||
// VTABLE 0x100dc128
|
// VTABLE 0x100dc128
|
||||||
// SIZE 0x3c
|
// SIZE 0x3c
|
||||||
// Base vtables are: MxCore -> 0x100dc6b0 -> 0x100dc6e0 -> MxSoundManager
|
// Base vtables are: MxCore -> 0x100dc6b0 -> MxAudioManager -> MxSoundManager
|
||||||
class MxSoundManager : public MxUnknown100dc6e0
|
class MxSoundManager : public MxAudioManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MxSoundManager();
|
MxSoundManager();
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
#include "mxunknown100dc6e0.h"
|
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100b8d00
|
|
||||||
MxUnknown100dc6e0::MxUnknown100dc6e0()
|
|
||||||
{
|
|
||||||
Init();
|
|
||||||
}
|
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100b8d90 STUB
|
|
||||||
MxUnknown100dc6e0::~MxUnknown100dc6e0()
|
|
||||||
{
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
// OFFSET: LEGO1 0x100b8df0
|
|
||||||
void MxUnknown100dc6e0::Init()
|
|
||||||
{
|
|
||||||
this->m_unk2c = 100;
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
#ifndef MXUNKNOWN100DC6E0_H
|
|
||||||
#define MXUNKNOWN100DC6E0_H
|
|
||||||
|
|
||||||
#include "mxmediamanager.h"
|
|
||||||
|
|
||||||
// VTABLE 0x100dc6e0
|
|
||||||
class MxUnknown100dc6e0 : public MxMediaManager
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
MxUnknown100dc6e0();
|
|
||||||
virtual ~MxUnknown100dc6e0() override;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void Init();
|
|
||||||
|
|
||||||
int m_unk2c;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // MXUNKNOWN100DC6E0_H
|
|
Loading…
Reference in a new issue