isle/LEGO1/legoomni.cpp
Anonymous Maarten 302b3f66f0
Get Isle building on MinGW32 (#63)
* Add MxUnknown100dc6b0::~MxUnknown100dc6b0 stub

* Declare destructor of MxOmni and MxTransitionManager in class

* inline attribute must go first

* Stub LegoState::Vtable0x14 for Act3State

* MxStreamer::VTable0x14 is not an override

* Stub MxEntity::Destroy for LegoState::Destroy

* Stub MxUnknown100dc6e0 for MxSoundManager

* ::ClassName and ::IsA are const methods

* methods in the class body don't need a namespace

* MxSoundManager subclasses MxUnknown100dc6e0

* LegoInputManager subclasses MxPresenter

* NotificationId is an enum, and does not need __declspec(dllexport)

* Fix final #endif of legoomni.h and mxobjectfactory.h

* Add const alternative for LegoOmni::Create and MxVideoParam, only available for MinGW

* Alternative approach to MinGW compatibility

* MinGW on Linux is case sensitve

* Don't delete a member variable. C++ automatically destructs member variables

---------

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>
2023-07-01 23:53:54 -07:00

235 lines
3.6 KiB
C++

#include "legoomni.h"
// 0x100f4588
char *g_nocdSourceName = NULL;
// 0x101020e8
void (*g_omniUserMessage)(const char *,int);
// OFFSET: LEGO1 0x10058a00
LegoOmni::LegoOmni()
{
Init();
}
// OFFSET: LEGO1 0x10058b50
LegoOmni::~LegoOmni()
{
Destroy();
}
// OFFSET: LEGO1 0x1005b560 STUB
void LegoOmni::CreateBackgroundAudio()
{
// TODO
}
// OFFSET: LEGO1 0x1005af10 STUB
void LegoOmni::RemoveWorld(const MxAtomId &p1, long p2)
{
// TODO
}
// OFFSET: LEGO1 0x1005b400 STUB
int LegoOmni::GetCurrPathInfo(LegoPathBoundary **,int &)
{
// TODO
return 0;
}
// OFFSET: LEGO1 0x100b6ff0 STUB
void MakeSourceName(char *, const char *)
{
// TODO
}
// OFFSET: LEGO1 0x100b7210
void SetOmniUserMessage(void (*p_userMsg)(const char *,int))
{
g_omniUserMessage = p_userMsg;
}
// OFFSET: LEGO1 0x100acf50 STUB
long Start(MxDSAction *)
{
// TODO
return 0;
}
// OFFSET: LEGO1 0x1005ad10
LegoOmni *LegoOmni::GetInstance()
{
return (LegoOmni *)MxOmni::GetInstance();
}
// OFFSET: LEGO1 0x1005ac90
void LegoOmni::CreateInstance()
{
MxOmni::DestroyInstance();
MxOmni::SetInstance(new LegoOmni());
}
// OFFSET: LEGO1 0x10015700
LegoOmni *Lego()
{
return (LegoOmni *)MxOmni::GetInstance();
}
// OFFSET: LEGO1 0x10015710
LegoSoundManager *SoundManager()
{
return LegoOmni::GetInstance()->GetSoundManager();
}
// OFFSET: LEGO1 0x10015720
LegoVideoManager *VideoManager()
{
return LegoOmni::GetInstance()->GetVideoManager();
}
// OFFSET: LEGO1 0x100157f0
LegoBuildingManager *BuildingManager()
{
return LegoOmni::GetInstance()->GetLegoBuildingManager();
}
// OFFSET: LEGO1 0x10015790
Isle *GetIsle()
{
return LegoOmni::GetInstance()->GetIsle();
}
// OFFSET: LEGO1 0x100157e0
LegoPlantManager *PlantManager()
{
return LegoOmni::GetInstance()->GetLegoPlantManager();
}
// OFFSET: LEGO1 0x10015730
MxBackgroundAudioManager *BackgroundAudioManager()
{
return LegoOmni::GetInstance()->GetBackgroundAudioManager();
}
// OFFSET: LEGO1 0x100c0280 STUB
MxDSObject *CreateStreamObject(MxDSFile *,short)
{
// TODO
return NULL;
}
// OFFSET: LEGO1 0x10015740
LegoInputManager *InputManager()
{
return LegoOmni::GetInstance()->GetInputManager();
}
// OFFSET: LEGO1 0x10015760
LegoGameState *GameState()
{
return LegoOmni::GetInstance()->GetGameState();
}
// OFFSET: LEGO1 0x10015780
LegoNavController *NavController()
{
return LegoOmni::GetInstance()->GetNavController();
}
// OFFSET: LEGO1 0x10015900
MxTransitionManager *TransitionManager()
{
return LegoOmni::GetInstance()->GetTransitionManager();
}
// OFFSET: LEGO1 0x10053430
const char *GetNoCD_SourceName()
{
return g_nocdSourceName;
}
// OFFSET: LEGO1 0x1005b5f0
long LegoOmni::Notify(MxParam &p)
{
// FIXME: Stub
return 0;
}
// OFFSET: LEGO1 0x1003dd70 STUB
LegoROI *PickROI(long,long)
{
// TODO
return NULL;
}
// OFFSET: LEGO1 0x1003ddc0 STUB
LegoEntity *PickEntity(long,long)
{
// TODO
return NULL;
}
// OFFSET: LEGO1 0x10058bd0
void LegoOmni::Init()
{
// FIXME: Stub
}
// OFFSET: LEGO1 0x10058e70
MxResult LegoOmni::Create(COMPAT_CONST MxOmniCreateParam &p)
{
// FIXME: Stub
return SUCCESS;
}
void LegoOmni::Destroy()
{
// FIXME: Stub
}
void LegoOmni::vtable20()
{
// FIXME: Stub
}
void LegoOmni::vtable24(MxDSAction &ds)
{
// FIXME: Stub
}
MxBool LegoOmni::vtable28(MxDSAction &ds)
{
// FIXME: Stub
return TRUE;
}
void LegoOmni::vtable2c()
{
// FIXME: Stub
}
void LegoOmni::vtable30()
{
// FIXME: Stub
}
void LegoOmni::vtable34()
{
// FIXME: Stub
}
void LegoOmni::vtable38()
{
// FIXME: Stub
}
void LegoOmni::vtable3c()
{
// FIXME: Stub
}
unsigned char LegoOmni::vtable40()
{
// FIXME: Stub
return 0;
}