Merge pull request #22 from foxtacles/isle-lego3dmanager

lego1/isle: Add Lego3DManager and related, fix a function signature
This commit is contained in:
MattKC 2023-06-18 09:00:59 -07:00 committed by GitHub
commit f9a93406a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 70 additions and 12 deletions

View file

@ -85,10 +85,7 @@ void Isle::close()
InputManager()->QueueEvent(KEYDOWN, 0, 0, 0, 0x20); InputManager()->QueueEvent(KEYDOWN, 0, 0, 0, 0x20);
} }
// FIXME: Untangle VideoManager()->Get3DManager()->GetLego3DView()->GetViewManager()->RemoveAll(NULL);
//VideoManager()->GetViewManager()->RemoveAll(NULL);
//ViewManager::RemoveAll
// (*(ViewManager **)(*(int *)(*(int *)(pLVar4 + 0x68) + 8) + 0x88), NULL);
long local_88 = 0; long local_88 = 0;
Lego()->RemoveWorld(ds.m_atomId, local_88); Lego()->RemoveWorld(ds.m_atomId, local_88);
@ -102,7 +99,7 @@ void Isle::close()
} while (lVar8 == 0); } while (lVar8 == 0);
while (Lego()) { while (Lego()) {
if (Lego()->vtable28(ds) != 0) { if (Lego()->vtable28(ds) != MX_FALSE) {
break; break;
} }

17
LEGO1/lego3dmanager.h Executable file
View file

@ -0,0 +1,17 @@
#ifndef LEGO3DMANAGER_H
#define LEGO3DMANAGER_H
#include "lego3dview.h"
class Lego3DManager
{
public:
inline Lego3DView *GetLego3DView() { return this->m_3dView; }
private:
int m_unk00;
int m_unk04;
Lego3DView *m_3dView;
};
#endif // LEGO3DMANAGER_H

16
LEGO1/lego3dview.h Executable file
View file

@ -0,0 +1,16 @@
#ifndef LEGO3DVIEW_H
#define LEGO3DVIEW_H
#include "viewmanager.h"
class Lego3DView
{
public:
inline ViewManager *GetViewManager() { return this->m_viewManager; }
private:
char unknown[0x88];
ViewManager *m_viewManager;
};
#endif // LEGO3DVIEW_H

View file

@ -11,3 +11,8 @@ LegoOmni *Lego()
{ {
return LegoOmni::GetInstance(); return LegoOmni::GetInstance();
} }
LegoVideoManager *VideoManager()
{
return LegoOmni::GetInstance()->GetVideoManager();
}

View file

@ -28,6 +28,7 @@ class MxMusicManager;
class MxNotificationManager; class MxNotificationManager;
class MxSoundManager; class MxSoundManager;
// class LegoOmni : public MxOmni
class LegoOmni class LegoOmni
{ {
public: public:
@ -48,7 +49,7 @@ public:
virtual void vtable1c(); virtual void vtable1c();
virtual void vtable20(); virtual void vtable20();
virtual void vtable24(MxDSAction &ds); virtual void vtable24(MxDSAction &ds);
virtual int vtable28(MxDSAction &ds); virtual MxBool vtable28(MxDSAction &ds);
virtual void vtable2c(); virtual void vtable2c();
virtual void vtable30(); virtual void vtable30();
virtual void vtable34(); virtual void vtable34();
@ -56,6 +57,7 @@ public:
virtual void vtable3c(); virtual void vtable3c();
virtual unsigned char vtable40(); virtual unsigned char vtable40();
LegoVideoManager *GetVideoManager() { return m_videoMgr; }
LegoInputManager *GetInputManager() { return m_inputMgr; } LegoInputManager *GetInputManager() { return m_inputMgr; }
private: private:
@ -69,7 +71,7 @@ private:
int m_unk20; int m_unk20;
int m_unk24; int m_unk24;
int m_unk28; int m_unk28;
int m_unk2c; LegoVideoManager *m_videoMgr;
int m_unk30; int m_unk30;
int m_unk34; int m_unk34;
int m_unk38; int m_unk38;

View file

@ -1,17 +1,19 @@
#ifndef LEGOVIDEOMANAGER_H #ifndef LEGOVIDEOMANAGER_H
#define LEGOVIDEOMANAGER_H #define LEGOVIDEOMANAGER_H
#include "lego3dmanager.h"
// class LegoVideoManager : public MxVideoManager
class LegoVideoManager class LegoVideoManager
{ {
public: public:
__declspec(dllexport) int EnableRMDevice(); __declspec(dllexport) int EnableRMDevice();
__declspec(dllexport) int DisableRMDevice(); __declspec(dllexport) int DisableRMDevice();
__declspec(dllexport) void EnableFullScreenMovie(unsigned char a, unsigned char b); __declspec(dllexport) void EnableFullScreenMovie(unsigned char a, unsigned char b);
__declspec(dllexport) void MoveCursor(int x, int y); __declspec(dllexport) void MoveCursor(int x, int y);
inline Lego3DManager *Get3DManager() { return this->m_3dManager; }
int m_unk00; int m_unk00;
int m_unk04; int m_unk04;
int m_unk08; int m_unk08;
@ -38,11 +40,10 @@ public:
int m_unk5c; int m_unk5c;
int m_unk60; int m_unk60;
int m_unk64; int m_unk64;
int m_unk68; Lego3DManager *m_3dManager;
int m_unk6c; int m_unk6c;
int m_unk70; int m_unk70;
int *m_unk74; int *m_unk74;
}; };
#endif // LEGOVIDEOMANAGER_H #endif // LEGOVIDEOMANAGER_H

View file

@ -1,6 +1,8 @@
#ifndef VIEWMANAGER_H #ifndef VIEWMANAGER_H
#define VIEWMANAGER_H #define VIEWMANAGER_H
class ViewROI;
class ViewManager class ViewManager
{ {
public: public:

View file

@ -485,6 +485,8 @@ SOURCE=.\LEGO1\dllmain.cpp
SOURCE=.\LEGO1\legoomni.cpp SOURCE=.\LEGO1\legoomni.cpp
DEP_CPP_LEGOO=\ DEP_CPP_LEGOO=\
".\LEGO1\lego3dmanager.h"\
".\LEGO1\lego3dview.h"\
".\LEGO1\legoanimationmanager.h"\ ".\LEGO1\legoanimationmanager.h"\
".\LEGO1\legobuildingmanager.h"\ ".\LEGO1\legobuildingmanager.h"\
".\LEGO1\legoentity.h"\ ".\LEGO1\legoentity.h"\
@ -518,6 +520,7 @@ DEP_CPP_LEGOO=\
".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvariabletable.h"\
".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparam.h"\
".\LEGO1\mxvideoparamflags.h"\ ".\LEGO1\mxvideoparamflags.h"\
".\LEGO1\viewmanager.h"\
"$(INTDIR)\legoomni.obj" : $(SOURCE) $(DEP_CPP_LEGOO) "$(INTDIR)" "$(INTDIR)\legoomni.obj" : $(SOURCE) $(DEP_CPP_LEGOO) "$(INTDIR)"
@ -578,10 +581,14 @@ DEP_CPP_MXOMN=\
".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateflags.h"\
".\LEGO1\mxomnicreateparam.h"\ ".\LEGO1\mxomnicreateparam.h"\
".\LEGO1\mxomnicreateparambase.h"\ ".\LEGO1\mxomnicreateparambase.h"\
".\LEGO1\mxpalette.h"\
".\LEGO1\mxrect32.h"\
".\LEGO1\mxresult.h"\ ".\LEGO1\mxresult.h"\
".\LEGO1\mxstring.h"\ ".\LEGO1\mxstring.h"\
".\LEGO1\mxtimer.h"\ ".\LEGO1\mxtimer.h"\
".\LEGO1\mxvariabletable.h"\
".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparam.h"\
".\LEGO1\mxvideoparamflags.h"\
"$(INTDIR)\mxomni.obj" : $(SOURCE) $(DEP_CPP_MXOMN) "$(INTDIR)" "$(INTDIR)\mxomni.obj" : $(SOURCE) $(DEP_CPP_MXOMN) "$(INTDIR)"
@ -625,8 +632,12 @@ DEP_CPP_MXOMNI=\
".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateflags.h"\
".\LEGO1\mxomnicreateparam.h"\ ".\LEGO1\mxomnicreateparam.h"\
".\LEGO1\mxomnicreateparambase.h"\ ".\LEGO1\mxomnicreateparambase.h"\
".\LEGO1\mxpalette.h"\
".\LEGO1\mxrect32.h"\
".\LEGO1\mxstring.h"\ ".\LEGO1\mxstring.h"\
".\LEGO1\mxvariabletable.h"\
".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparam.h"\
".\LEGO1\mxvideoparamflags.h"\
"$(INTDIR)\mxomnicreateparam.obj" : $(SOURCE) $(DEP_CPP_MXOMNI) "$(INTDIR)" "$(INTDIR)\mxomnicreateparam.obj" : $(SOURCE) $(DEP_CPP_MXOMNI) "$(INTDIR)"
@ -644,8 +655,12 @@ DEP_CPP_MXOMNIC=\
".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateflags.h"\
".\LEGO1\mxomnicreateparam.h"\ ".\LEGO1\mxomnicreateparam.h"\
".\LEGO1\mxomnicreateparambase.h"\ ".\LEGO1\mxomnicreateparambase.h"\
".\LEGO1\mxpalette.h"\
".\LEGO1\mxrect32.h"\
".\LEGO1\mxstring.h"\ ".\LEGO1\mxstring.h"\
".\LEGO1\mxvariabletable.h"\
".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparam.h"\
".\LEGO1\mxvideoparamflags.h"\
"$(INTDIR)\mxomnicreateparambase.obj" : $(SOURCE) $(DEP_CPP_MXOMNIC)\ "$(INTDIR)\mxomnicreateparambase.obj" : $(SOURCE) $(DEP_CPP_MXOMNIC)\
@ -732,6 +747,8 @@ DEP_CPP_ISLE_=\
".\ISLE\define.h"\ ".\ISLE\define.h"\
".\ISLE\isle.h"\ ".\ISLE\isle.h"\
".\ISLE\res\resource.h"\ ".\ISLE\res\resource.h"\
".\LEGO1\lego3dmanager.h"\
".\LEGO1\lego3dview.h"\
".\LEGO1\legoanimationmanager.h"\ ".\LEGO1\legoanimationmanager.h"\
".\LEGO1\legobuildingmanager.h"\ ".\LEGO1\legobuildingmanager.h"\
".\LEGO1\legoentity.h"\ ".\LEGO1\legoentity.h"\
@ -767,6 +784,7 @@ DEP_CPP_ISLE_=\
".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvariabletable.h"\
".\LEGO1\mxvideoparam.h"\ ".\LEGO1\mxvideoparam.h"\
".\LEGO1\mxvideoparamflags.h"\ ".\LEGO1\mxvideoparamflags.h"\
".\LEGO1\viewmanager.h"\
"$(INTDIR)\isle.obj" : $(SOURCE) $(DEP_CPP_ISLE_) "$(INTDIR)" "$(INTDIR)\isle.obj" : $(SOURCE) $(DEP_CPP_ISLE_) "$(INTDIR)"

BIN
isle.mdp

Binary file not shown.