mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-22 15:48:09 -05:00
Implement/match LegoPhonemePresenter::StartingTickle (#809)
* Implement/match LegoPhonemePresenter::StartingTickle * Name vars * Fix name
This commit is contained in:
parent
41281dcbec
commit
2600b1b421
17 changed files with 314 additions and 143 deletions
|
@ -328,6 +328,7 @@ add_library(lego1 SHARED
|
||||||
LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp
|
LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legogamestate.cpp
|
LEGO1/lego/legoomni/src/common/legogamestate.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp
|
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp
|
||||||
|
LEGO1/lego/legoomni/src/common/legophoneme.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legoplantmanager.cpp
|
LEGO1/lego/legoomni/src/common/legoplantmanager.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legostate.cpp
|
LEGO1/lego/legoomni/src/common/legostate.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legotextureinfo.cpp
|
LEGO1/lego/legoomni/src/common/legotextureinfo.cpp
|
||||||
|
@ -388,7 +389,6 @@ add_library(lego1 SHARED
|
||||||
LEGO1/lego/legoomni/src/race/raceskel.cpp
|
LEGO1/lego/legoomni/src/race/raceskel.cpp
|
||||||
LEGO1/lego/legoomni/src/race/racestate.cpp
|
LEGO1/lego/legoomni/src/race/racestate.cpp
|
||||||
LEGO1/lego/legoomni/src/towtrack/towtrackmissionstate.cpp
|
LEGO1/lego/legoomni/src/towtrack/towtrackmissionstate.cpp
|
||||||
LEGO1/lego/legoomni/src/unknown/legounknown100d7c88.cpp
|
|
||||||
LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp
|
LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp
|
||||||
LEGO1/lego/legoomni/src/video/legocarbuildanimpresenter.cpp
|
LEGO1/lego/legoomni/src/video/legocarbuildanimpresenter.cpp
|
||||||
LEGO1/lego/legoomni/src/video/legoflctexturepresenter.cpp
|
LEGO1/lego/legoomni/src/video/legoflctexturepresenter.cpp
|
||||||
|
|
|
@ -61,6 +61,7 @@ class LegoCharacterManager {
|
||||||
MxU32 GetRefCount(LegoROI* p_roi);
|
MxU32 GetRefCount(LegoROI* p_roi);
|
||||||
void FUN_10083db0(LegoROI* p_roi);
|
void FUN_10083db0(LegoROI* p_roi);
|
||||||
void FUN_10083f10(LegoROI* p_roi);
|
void FUN_10083f10(LegoROI* p_roi);
|
||||||
|
MxU32 FUN_100849a0(LegoROI* p_roi, LegoTextureInfo* p_textureInfo);
|
||||||
LegoExtraActor* GetActor(const char* p_key);
|
LegoExtraActor* GetActor(const char* p_key);
|
||||||
LegoCharacterData* GetData(const char* p_key);
|
LegoCharacterData* GetData(const char* p_key);
|
||||||
LegoCharacterData* GetData(LegoROI* p_roi);
|
LegoCharacterData* GetData(LegoROI* p_roi);
|
||||||
|
|
41
LEGO1/lego/legoomni/include/legophoneme.h
Normal file
41
LEGO1/lego/legoomni/include/legophoneme.h
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#ifndef LEGOPHONEME_H
|
||||||
|
#define LEGOPHONEME_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
#include "mxstring.h"
|
||||||
|
|
||||||
|
class LegoTextureInfo;
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d7c88
|
||||||
|
// SIZE 0x20
|
||||||
|
class LegoPhoneme {
|
||||||
|
public:
|
||||||
|
LegoPhoneme(const char* p_name, undefined4 p_unk0x14)
|
||||||
|
{
|
||||||
|
m_name = p_name;
|
||||||
|
m_name.ToUpperCase();
|
||||||
|
Init();
|
||||||
|
m_unk0x14 = p_unk0x14;
|
||||||
|
}
|
||||||
|
~LegoPhoneme();
|
||||||
|
|
||||||
|
virtual undefined4 VTable0x00(); // vtable+0x00
|
||||||
|
virtual void VTable0x04(undefined4 p_unk0x14); // vtable+0x04
|
||||||
|
virtual LegoTextureInfo* VTable0x08(); // vtable+0x08
|
||||||
|
virtual void VTable0x0c(LegoTextureInfo* p_unk0x18); // vtable+0x0c
|
||||||
|
virtual LegoTextureInfo* VTable0x10(); // vtable+0x10
|
||||||
|
virtual void VTable0x14(LegoTextureInfo* p_unk0x1c); // vtable+0x14
|
||||||
|
virtual void VTable0x18(); // vtable+0x18
|
||||||
|
virtual void Init(); // vtable+0x1c
|
||||||
|
virtual void VTable0x20(undefined4); // vtable+0x20
|
||||||
|
|
||||||
|
inline MxString& GetName() { return m_name; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
MxString m_name; // 0x04
|
||||||
|
undefined4 m_unk0x14; // 0x14
|
||||||
|
LegoTextureInfo* m_unk0x18; // 0x18
|
||||||
|
LegoTextureInfo* m_unk0x1c; // 0x1c
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // LEGOPHONEME_H
|
75
LEGO1/lego/legoomni/include/legophonemelist.h
Normal file
75
LEGO1/lego/legoomni/include/legophonemelist.h
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
#ifndef LEGOPHONEMELIST_H
|
||||||
|
#define LEGOPHONEMELIST_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
#include "legophoneme.h"
|
||||||
|
#include "mxlist.h"
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d9cd0
|
||||||
|
// class MxCollection<LegoPhoneme *>
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d9ce8
|
||||||
|
// class MxList<LegoPhoneme *>
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d9d00
|
||||||
|
// SIZE 0x18
|
||||||
|
class LegoPhonemeList : public MxList<LegoPhoneme*> {
|
||||||
|
public:
|
||||||
|
LegoPhonemeList() { SetDestroy(Destroy); }
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1007b210
|
||||||
|
MxS8 Compare(LegoPhoneme* p_a, LegoPhoneme* p_b) override
|
||||||
|
{
|
||||||
|
MxString a(p_a->GetName());
|
||||||
|
MxString b(p_b->GetName());
|
||||||
|
return a.Equal(b) ? 0 : p_a < p_b ? -1 : 1;
|
||||||
|
} // vtable+0x14
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1007b2e0
|
||||||
|
static void Destroy(LegoPhoneme* p_element) { delete p_element; }
|
||||||
|
};
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d80c8
|
||||||
|
// class MxListCursor<LegoPhoneme *>
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d80e0
|
||||||
|
// SIZE 0x10
|
||||||
|
class LegoPhonemeListCursor : public MxListCursor<LegoPhoneme*> {
|
||||||
|
public:
|
||||||
|
LegoPhonemeListCursor(LegoPhonemeList* p_list) : MxListCursor<LegoPhoneme*>(p_list) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1004e680
|
||||||
|
// LegoPhonemeListCursor::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1004e6f0
|
||||||
|
// MxListCursor<LegoPhoneme *>::~MxListCursor<LegoPhoneme *>
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1004e740
|
||||||
|
// MxListCursor<LegoPhoneme *>::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1004e7b0
|
||||||
|
// LegoPhonemeListCursor::~LegoPhonemeListCursor
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1007b300
|
||||||
|
// MxCollection<LegoPhoneme *>::Compare
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1007b310
|
||||||
|
// MxCollection<LegoPhoneme *>::~MxCollection<LegoPhoneme *>
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1007b360
|
||||||
|
// MxCollection<LegoPhoneme *>::Destroy
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1007b370
|
||||||
|
// MxList<LegoPhoneme *>::~MxList<LegoPhoneme *>
|
||||||
|
|
||||||
|
// SYNTHETIC: LEGO1 0x1007b400
|
||||||
|
// LegoPhonemeList::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// SYNTHETIC: LEGO1 0x1007b470
|
||||||
|
// MxCollection<LegoPhoneme *>::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// SYNTHETIC: LEGO1 0x1007b4e0
|
||||||
|
// MxList<LegoPhoneme *>::`scalar deleting destructor'
|
||||||
|
|
||||||
|
#endif // LEGOPHONEMELIST_H
|
|
@ -6,6 +6,8 @@
|
||||||
#include "mxstring.h"
|
#include "mxstring.h"
|
||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
|
|
||||||
|
class LegoTextureInfo;
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d8040
|
// VTABLE: LEGO1 0x100d8040
|
||||||
// SIZE 0x88
|
// SIZE 0x88
|
||||||
class LegoPhonemePresenter : public MxFlcPresenter {
|
class LegoPhonemePresenter : public MxFlcPresenter {
|
||||||
|
@ -31,11 +33,14 @@ class LegoPhonemePresenter : public MxFlcPresenter {
|
||||||
private:
|
private:
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
undefined4 m_unk0x68; // 0x68
|
undefined4 m_unk0x68; // 0x68
|
||||||
undefined4 m_unk0x6c; // 0x6c
|
LegoTextureInfo* m_textureInfo; // 0x6c
|
||||||
undefined m_unk0x70; // 0x70
|
MxBool m_unk0x70; // 0x70
|
||||||
MxString m_unk0x74; // 0x74
|
MxString m_roiName; // 0x74
|
||||||
undefined m_unk0x84; // 0x84
|
MxBool m_unk0x84; // 0x84
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x1004eb20
|
||||||
|
// MxListEntry<LegoPhoneme *>::MxListEntry<LegoPhoneme *>
|
||||||
|
|
||||||
#endif // LEGOPHONEMEPRESENTER_H
|
#endif // LEGOPHONEMEPRESENTER_H
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
#ifndef LEGOUNKNOWN100D7C88_H
|
|
||||||
#define LEGOUNKNOWN100D7C88_H
|
|
||||||
|
|
||||||
#include "decomp.h"
|
|
||||||
#include "mxstring.h"
|
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d7c88
|
|
||||||
// SIZE 0x18
|
|
||||||
class LegoUnknown100d7c88 {
|
|
||||||
public:
|
|
||||||
~LegoUnknown100d7c88();
|
|
||||||
|
|
||||||
virtual undefined4 VTable0x00(); // vtable+0x00
|
|
||||||
// More virtual functions
|
|
||||||
|
|
||||||
private:
|
|
||||||
MxString m_unk0x04; // 0x04
|
|
||||||
undefined4 m_unk0x14; // 0x14
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // LEGOUNKNOWN100D7C88_H
|
|
|
@ -1,48 +0,0 @@
|
||||||
#ifndef LEGOUNKNOWN100D9D00_H
|
|
||||||
#define LEGOUNKNOWN100D9D00_H
|
|
||||||
|
|
||||||
#include "decomp.h"
|
|
||||||
#include "legounknown100d7c88.h"
|
|
||||||
#include "mxlist.h"
|
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d9cd0
|
|
||||||
// class MxCollection<LegoUnknown100d7c88 *>
|
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d9ce8
|
|
||||||
// class MxList<LegoUnknown100d7c88 *>
|
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d9d00
|
|
||||||
// SIZE 0x18
|
|
||||||
class LegoUnknown100d9d00 : public MxList<LegoUnknown100d7c88*> {
|
|
||||||
public:
|
|
||||||
LegoUnknown100d9d00() { SetDestroy(Destroy); }
|
|
||||||
|
|
||||||
// STUB: LEGO1 0x1007b210
|
|
||||||
MxS8 Compare(LegoUnknown100d7c88* p_a, LegoUnknown100d7c88* p_b) override { return -1; } // vtable+0x14
|
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1007b2e0
|
|
||||||
static void Destroy(LegoUnknown100d7c88* p_element) { delete p_element; }
|
|
||||||
};
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1007b300
|
|
||||||
// MxCollection<LegoUnknown100d7c88 *>::Compare
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1007b310
|
|
||||||
// MxCollection<LegoUnknown100d7c88 *>::~MxCollection<LegoUnknown100d7c88 *>
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1007b360
|
|
||||||
// MxCollection<LegoUnknown100d7c88 *>::Destroy
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1007b370
|
|
||||||
// MxList<LegoUnknown100d7c88 *>::~MxList<LegoUnknown100d7c88 *>
|
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1007b400
|
|
||||||
// LegoUnknown100d9d00::`scalar deleting destructor'
|
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1007b470
|
|
||||||
// MxCollection<LegoUnknown100d7c88 *>::`scalar deleting destructor'
|
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1007b4e0
|
|
||||||
// MxList<LegoUnknown100d7c88 *>::`scalar deleting destructor'
|
|
||||||
|
|
||||||
#endif // LEGOUNKNOWN100D9D00_H
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include "3dmanager/lego3dmanager.h"
|
#include "3dmanager/lego3dmanager.h"
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
#include "legounknown100d9d00.h"
|
#include "legophonemelist.h"
|
||||||
#include "mxdirectx/mxdirect3d.h"
|
#include "mxdirectx/mxdirect3d.h"
|
||||||
#include "mxdirectx/mxstopwatch.h"
|
#include "mxdirectx/mxstopwatch.h"
|
||||||
#include "mxvideomanager.h"
|
#include "mxvideomanager.h"
|
||||||
|
@ -34,7 +34,7 @@ class LegoVideoManager : public MxVideoManager {
|
||||||
virtual MxPresenter* GetPresenterAt(MxS32 p_x, MxS32 p_y); // vtable+0x38
|
virtual MxPresenter* GetPresenterAt(MxS32 p_x, MxS32 p_y); // vtable+0x38
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1007ab10
|
// FUNCTION: LEGO1 0x1007ab10
|
||||||
virtual LegoUnknown100d9d00* VTable0x3c() { return m_unk0x100d9d00; } // vtable+0x3c
|
virtual LegoPhonemeList* GetPhonemeList() { return m_phonemeRefList; } // vtable+0x3c
|
||||||
|
|
||||||
void SetSkyColor(float p_red, float p_green, float p_blue);
|
void SetSkyColor(float p_red, float p_green, float p_blue);
|
||||||
void OverrideSkyColor(MxBool p_shouldOverride);
|
void OverrideSkyColor(MxBool p_shouldOverride);
|
||||||
|
@ -57,40 +57,40 @@ class LegoVideoManager : public MxVideoManager {
|
||||||
|
|
||||||
inline void DrawCursor();
|
inline void DrawCursor();
|
||||||
|
|
||||||
Tgl::Renderer* m_renderer; // 0x64
|
Tgl::Renderer* m_renderer; // 0x64
|
||||||
Lego3DManager* m_3dManager; // 0x68
|
Lego3DManager* m_3dManager; // 0x68
|
||||||
LegoROI* m_viewROI; // 0x6c
|
LegoROI* m_viewROI; // 0x6c
|
||||||
undefined4 m_unk0x70; // 0x70
|
undefined4 m_unk0x70; // 0x70
|
||||||
MxDirect3D* m_direct3d; // 0x74
|
MxDirect3D* m_direct3d; // 0x74
|
||||||
undefined4 m_unk0x78[27]; // 0x78
|
undefined4 m_unk0x78[27]; // 0x78
|
||||||
MxBool m_render3d; // 0xe4
|
MxBool m_render3d; // 0xe4
|
||||||
MxBool m_unk0xe5; // 0xe5
|
MxBool m_unk0xe5; // 0xe5
|
||||||
MxBool m_unk0xe6; // 0xe6
|
MxBool m_unk0xe6; // 0xe6
|
||||||
PALETTEENTRY m_paletteEntries[256]; // 0xe7
|
PALETTEENTRY m_paletteEntries[256]; // 0xe7
|
||||||
undefined m_padding0x4e7; // 0x4e7
|
undefined m_padding0x4e7; // 0x4e7
|
||||||
LegoUnknown100d9d00* m_unk0x100d9d00; // 0x4e8
|
LegoPhonemeList* m_phonemeRefList; // 0x4e8
|
||||||
MxBool m_isFullscreenMovie; // 0x4ec
|
MxBool m_isFullscreenMovie; // 0x4ec
|
||||||
MxPalette* m_palette; // 0x4f0
|
MxPalette* m_palette; // 0x4f0
|
||||||
MxStopWatch* m_stopWatch; // 0x4f4
|
MxStopWatch* m_stopWatch; // 0x4f4
|
||||||
double m_elapsedSeconds; // 0x4f8
|
double m_elapsedSeconds; // 0x4f8
|
||||||
MxBool m_fullScreenMovie; // 0x500
|
MxBool m_fullScreenMovie; // 0x500
|
||||||
MxBool m_drawCursor; // 0x501
|
MxBool m_drawCursor; // 0x501
|
||||||
MxS32 m_cursorXCopy; // 0x504
|
MxS32 m_cursorXCopy; // 0x504
|
||||||
MxS32 m_cursorYCopy; // 0x508
|
MxS32 m_cursorYCopy; // 0x508
|
||||||
MxS32 m_cursorX; // 0x50c
|
MxS32 m_cursorX; // 0x50c
|
||||||
MxS32 m_cursorY; // 0x510
|
MxS32 m_cursorY; // 0x510
|
||||||
LPDIRECTDRAWSURFACE m_cursorSurface; // 0x514
|
LPDIRECTDRAWSURFACE m_cursorSurface; // 0x514
|
||||||
RECT m_cursorRect; // 0x518
|
RECT m_cursorRect; // 0x518
|
||||||
undefined4 m_unk0x528; // 0x528
|
undefined4 m_unk0x528; // 0x528
|
||||||
MxBool m_drawFPS; // 0x52c
|
MxBool m_drawFPS; // 0x52c
|
||||||
RECT m_fpsRect; // 0x530
|
RECT m_fpsRect; // 0x530
|
||||||
HFONT m_arialFont; // 0x540
|
HFONT m_arialFont; // 0x540
|
||||||
SIZE m_fpsSize; // 0x544
|
SIZE m_fpsSize; // 0x544
|
||||||
MxFloat m_unk0x54c; // 0x54c
|
MxFloat m_unk0x54c; // 0x54c
|
||||||
MxFloat m_unk0x550; // 0x550
|
MxFloat m_unk0x550; // 0x550
|
||||||
MxBool m_unk0x554; // 0x554
|
MxBool m_unk0x554; // 0x554
|
||||||
MxBool m_paused; // 0x555
|
MxBool m_paused; // 0x555
|
||||||
undefined m_pad0x556[0x39]; // 0x556
|
undefined m_pad0x556[0x39]; // 0x556
|
||||||
};
|
};
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1007ab20
|
// SYNTHETIC: LEGO1 0x1007ab20
|
||||||
|
|
|
@ -469,6 +469,13 @@ LegoROI* LegoCharacterManager::CreateROI(const char* p_key)
|
||||||
return roi;
|
return roi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100849a0
|
||||||
|
MxU32 LegoCharacterManager::FUN_100849a0(LegoROI* p_roi, LegoTextureInfo* p_textureInfo)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10084c00
|
// FUNCTION: LEGO1 0x10084c00
|
||||||
MxBool LegoCharacterManager::Exists(const char* p_key)
|
MxBool LegoCharacterManager::Exists(const char* p_key)
|
||||||
{
|
{
|
||||||
|
|
62
LEGO1/lego/legoomni/src/common/legophoneme.cpp
Normal file
62
LEGO1/lego/legoomni/src/common/legophoneme.cpp
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
#include "legophoneme.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(LegoPhoneme, 0x20)
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044e50
|
||||||
|
LegoPhoneme::~LegoPhoneme()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044eb0
|
||||||
|
undefined4 LegoPhoneme::VTable0x00()
|
||||||
|
{
|
||||||
|
return m_unk0x14;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044ec0
|
||||||
|
void LegoPhoneme::VTable0x04(undefined4 p_unk0x14)
|
||||||
|
{
|
||||||
|
m_unk0x14 = p_unk0x14;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044ed0
|
||||||
|
LegoTextureInfo* LegoPhoneme::VTable0x08()
|
||||||
|
{
|
||||||
|
return m_unk0x18;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044ee0
|
||||||
|
void LegoPhoneme::VTable0x0c(LegoTextureInfo* p_unk0x18)
|
||||||
|
{
|
||||||
|
m_unk0x18 = p_unk0x18;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044ef0
|
||||||
|
LegoTextureInfo* LegoPhoneme::VTable0x10()
|
||||||
|
{
|
||||||
|
return m_unk0x1c;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044f00
|
||||||
|
void LegoPhoneme::VTable0x14(LegoTextureInfo* p_unk0x1c)
|
||||||
|
{
|
||||||
|
m_unk0x1c = p_unk0x1c;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044f10
|
||||||
|
void LegoPhoneme::VTable0x18()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044f20
|
||||||
|
void LegoPhoneme::Init()
|
||||||
|
{
|
||||||
|
m_unk0x14 = 0;
|
||||||
|
m_unk0x18 = NULL;
|
||||||
|
m_unk0x1c = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10044f30
|
||||||
|
void LegoPhoneme::VTable0x20(undefined4)
|
||||||
|
{
|
||||||
|
}
|
|
@ -1,14 +0,0 @@
|
||||||
#include "legounknown100d7c88.h"
|
|
||||||
|
|
||||||
DECOMP_SIZE_ASSERT(LegoUnknown100d7c88, 0x18)
|
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10044e50
|
|
||||||
LegoUnknown100d7c88::~LegoUnknown100d7c88()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10044eb0
|
|
||||||
MxU32 LegoUnknown100d7c88::VTable0x00()
|
|
||||||
{
|
|
||||||
return m_unk0x14;
|
|
||||||
}
|
|
|
@ -394,10 +394,10 @@ void LegoAnimPresenter::FUN_1006a3c0(LegoAnimPresenterMap& p_map, LegoTreeNode*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LegoROI* roi2 = p_roi->FUN_100a8ce0(name, p_roi);
|
LegoROI* child = p_roi->FindChildROI(name, p_roi);
|
||||||
|
|
||||||
if (roi2 != NULL) {
|
if (child != NULL) {
|
||||||
FUN_1006a4f0(p_map, data, und, roi2);
|
FUN_1006a4f0(p_map, data, und, child);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (FUN_100699e0(name) != NULL) {
|
if (FUN_100699e0(name) != NULL) {
|
||||||
|
@ -473,9 +473,9 @@ MxBool LegoAnimPresenter::FUN_1006abb0(LegoTreeNode* p_node, LegoROI* p_roi)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LegoROI* roi2 = p_roi->FUN_100a8ce0(name, p_roi);
|
LegoROI* child = p_roi->FindChildROI(name, p_roi);
|
||||||
|
|
||||||
if (roi2 == NULL) {
|
if (child == NULL) {
|
||||||
if (FUN_100699e0(name) != NULL) {
|
if (FUN_100699e0(name) != NULL) {
|
||||||
if (FUN_1006abb0(p_node, NULL)) {
|
if (FUN_1006abb0(p_node, NULL)) {
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
#include "legophonemepresenter.h"
|
#include "legophonemepresenter.h"
|
||||||
|
|
||||||
|
#include "legocharactermanager.h"
|
||||||
|
#include "misc.h"
|
||||||
|
#include "misc/legocontainer.h"
|
||||||
|
#include "mxcompositepresenter.h"
|
||||||
|
|
||||||
DECOMP_SIZE_ASSERT(LegoPhonemePresenter, 0x88)
|
DECOMP_SIZE_ASSERT(LegoPhonemePresenter, 0x88)
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1004e180
|
// FUNCTION: LEGO1 0x1004e180
|
||||||
|
@ -17,17 +22,66 @@ LegoPhonemePresenter::~LegoPhonemePresenter()
|
||||||
void LegoPhonemePresenter::Init()
|
void LegoPhonemePresenter::Init()
|
||||||
{
|
{
|
||||||
m_unk0x68 = 0;
|
m_unk0x68 = 0;
|
||||||
m_unk0x6c = 0;
|
m_textureInfo = NULL;
|
||||||
m_unk0x70 = 0;
|
m_unk0x70 = FALSE;
|
||||||
m_unk0x84 = 0;
|
m_unk0x84 = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1004e3d0
|
// FUNCTION: LEGO1 0x1004e3d0
|
||||||
void LegoPhonemePresenter::StartingTickle()
|
void LegoPhonemePresenter::StartingTickle()
|
||||||
{
|
{
|
||||||
// TODO
|
MxFlcPresenter::StartingTickle();
|
||||||
|
|
||||||
EndAction();
|
if (m_textureInfo == NULL) {
|
||||||
|
MxU16 extraLength;
|
||||||
|
char* extraData;
|
||||||
|
|
||||||
|
m_action->GetExtra(extraLength, extraData);
|
||||||
|
|
||||||
|
if (extraData != NULL) {
|
||||||
|
m_roiName = extraData;
|
||||||
|
m_roiName.ToUpperCase();
|
||||||
|
|
||||||
|
LegoROI *entityROI, *head;
|
||||||
|
|
||||||
|
if (m_compositePresenter != NULL && m_compositePresenter->IsA("LegoAnimMMPresenter")) {
|
||||||
|
entityROI = FindROI(m_roiName.GetData());
|
||||||
|
m_unk0x84 = TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
entityROI = CharacterManager()->GetROI(m_roiName.GetData(), TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
head = entityROI->FindChildROI("head", entityROI);
|
||||||
|
head->GetTexture(m_textureInfo);
|
||||||
|
|
||||||
|
LegoPhonemeList* phonemeList = VideoManager()->GetPhonemeList();
|
||||||
|
LegoPhoneme* phoneme = new LegoPhoneme(m_roiName.GetData(), 1);
|
||||||
|
|
||||||
|
LegoPhonemeListCursor cursor(phonemeList);
|
||||||
|
|
||||||
|
if (!cursor.Find(phoneme)) {
|
||||||
|
LegoTextureInfo* textureInfo = TextureContainer()->AddToList(m_textureInfo);
|
||||||
|
|
||||||
|
CharacterManager()->FUN_100849a0(entityROI, textureInfo);
|
||||||
|
|
||||||
|
phoneme->VTable0x0c(m_textureInfo);
|
||||||
|
phoneme->VTable0x14(textureInfo);
|
||||||
|
phonemeList->Append(phoneme);
|
||||||
|
m_textureInfo = textureInfo;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
LegoPhoneme* newPhoneme = phoneme;
|
||||||
|
cursor.Current(phoneme);
|
||||||
|
delete newPhoneme;
|
||||||
|
|
||||||
|
phoneme->VTable0x04(phoneme->VTable0x00() + 1);
|
||||||
|
cursor.SetValue(phoneme);
|
||||||
|
|
||||||
|
m_unk0x70 = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1004e800
|
// STUB: LEGO1 0x1004e800
|
||||||
|
|
|
@ -25,7 +25,7 @@ LegoVideoManager::LegoVideoManager()
|
||||||
m_unk0xe6 = FALSE;
|
m_unk0xe6 = FALSE;
|
||||||
memset(m_unk0x78, 0, sizeof(m_unk0x78));
|
memset(m_unk0x78, 0, sizeof(m_unk0x78));
|
||||||
m_unk0x78[0] = 0x6c;
|
m_unk0x78[0] = 0x6c;
|
||||||
m_unk0x100d9d00 = NULL;
|
m_phonemeRefList = NULL;
|
||||||
m_isFullscreenMovie = FALSE;
|
m_isFullscreenMovie = FALSE;
|
||||||
m_palette = NULL;
|
m_palette = NULL;
|
||||||
m_stopWatch = NULL;
|
m_stopWatch = NULL;
|
||||||
|
@ -194,7 +194,7 @@ MxResult LegoVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyM
|
||||||
m_3dManager->Add(*m_viewROI);
|
m_3dManager->Add(*m_viewROI);
|
||||||
m_3dManager->SetPointOfView(*m_viewROI);
|
m_3dManager->SetPointOfView(*m_viewROI);
|
||||||
|
|
||||||
m_unk0x100d9d00 = new LegoUnknown100d9d00;
|
m_phonemeRefList = new LegoPhonemeList;
|
||||||
SetRender3D(FALSE);
|
SetRender3D(FALSE);
|
||||||
m_stopWatch = new MxStopWatch;
|
m_stopWatch = new MxStopWatch;
|
||||||
m_stopWatch->Start();
|
m_stopWatch->Start();
|
||||||
|
|
|
@ -341,7 +341,7 @@ LegoResult LegoROI::FUN_100a8cb0(LegoAnimNodeData* p_data, LegoTime p_time, Matr
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100a8ce0
|
// FUNCTION: LEGO1 0x100a8ce0
|
||||||
LegoROI* LegoROI::FUN_100a8ce0(const LegoChar* p_name, LegoROI* p_roi)
|
LegoROI* LegoROI::FindChildROI(const LegoChar* p_name, LegoROI* p_roi)
|
||||||
{
|
{
|
||||||
CompoundObject::iterator it;
|
CompoundObject::iterator it;
|
||||||
const LegoChar* name = p_roi->GetName();
|
const LegoChar* name = p_roi->GetName();
|
||||||
|
@ -362,7 +362,7 @@ LegoROI* LegoROI::FUN_100a8ce0(const LegoChar* p_name, LegoROI* p_roi)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (it = comp->begin(); it != comp->end(); it++) {
|
for (it = comp->begin(); it != comp->end(); it++) {
|
||||||
LegoROI* roi = FUN_100a8ce0(p_name, (LegoROI*) *it);
|
LegoROI* roi = FindChildROI(p_name, (LegoROI*) *it);
|
||||||
|
|
||||||
if (roi != NULL) {
|
if (roi != NULL) {
|
||||||
return roi;
|
return roi;
|
||||||
|
@ -379,10 +379,10 @@ LegoResult LegoROI::FUN_100a8da0(LegoTreeNode* p_node, const Matrix4& p_matrix,
|
||||||
MxMatrix mat;
|
MxMatrix mat;
|
||||||
LegoAnimNodeData* data = (LegoAnimNodeData*) p_node->GetData();
|
LegoAnimNodeData* data = (LegoAnimNodeData*) p_node->GetData();
|
||||||
const LegoChar* name = data->GetName();
|
const LegoChar* name = data->GetName();
|
||||||
LegoROI* roi = FUN_100a8ce0(name, p_roi);
|
LegoROI* roi = FindChildROI(name, p_roi);
|
||||||
|
|
||||||
if (roi == NULL) {
|
if (roi == NULL) {
|
||||||
roi = FUN_100a8ce0(name, this);
|
roi = FindChildROI(name, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (roi != NULL) {
|
if (roi != NULL) {
|
||||||
|
@ -498,6 +498,13 @@ LegoResult LegoROI::FUN_100a9210(LegoTextureInfo* p_textureInfo)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100a92a0
|
||||||
|
LegoResult LegoROI::GetTexture(LegoTextureInfo*&)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100a9a50
|
// FUNCTION: LEGO1 0x100a9a50
|
||||||
TimeROI::TimeROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, LegoTime p_time) : LegoROI(p_renderer, p_lodList)
|
TimeROI::TimeROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, LegoTime p_time) : LegoROI(p_renderer, p_lodList)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,12 +30,13 @@ class LegoROI : public ViewROI {
|
||||||
LegoTextureContainer* p_textureContainer,
|
LegoTextureContainer* p_textureContainer,
|
||||||
LegoStorage* p_storage
|
LegoStorage* p_storage
|
||||||
);
|
);
|
||||||
LegoROI* FUN_100a8ce0(const LegoChar* p_name, LegoROI* p_roi);
|
LegoROI* FindChildROI(const LegoChar* p_name, LegoROI* p_roi);
|
||||||
LegoResult FUN_100a8da0(LegoTreeNode* p_node, const Matrix4& p_matrix, LegoTime p_time, LegoROI* p_roi);
|
LegoResult FUN_100a8da0(LegoTreeNode* p_node, const Matrix4& p_matrix, LegoTime p_time, LegoROI* p_roi);
|
||||||
static void FUN_100a8e80(LegoTreeNode* p_node, Matrix4& p_matrix, LegoTime p_time, LegoROI** p_rois);
|
static void FUN_100a8e80(LegoTreeNode* p_node, Matrix4& p_matrix, LegoTime p_time, LegoROI** p_rois);
|
||||||
LegoResult SetFrame(LegoAnim* p_anim, LegoTime p_time);
|
LegoResult SetFrame(LegoAnim* p_anim, LegoTime p_time);
|
||||||
LegoResult FUN_100a9170(LegoFloat p_red, LegoFloat p_green, LegoFloat p_blue, LegoFloat p_alpha);
|
LegoResult FUN_100a9170(LegoFloat p_red, LegoFloat p_green, LegoFloat p_blue, LegoFloat p_alpha);
|
||||||
LegoResult FUN_100a9210(LegoTextureInfo* p_textureInfo);
|
LegoResult FUN_100a9210(LegoTextureInfo* p_textureInfo);
|
||||||
|
LegoResult GetTexture(LegoTextureInfo*&);
|
||||||
void SetName(const LegoChar* p_name);
|
void SetName(const LegoChar* p_name);
|
||||||
|
|
||||||
float IntrinsicImportance() const override; // vtable+0x04
|
float IntrinsicImportance() const override; // vtable+0x04
|
||||||
|
|
|
@ -20,6 +20,7 @@ class MxString : public MxCore {
|
||||||
MxString& operator+=(const char* p_str);
|
MxString& operator+=(const char* p_str);
|
||||||
|
|
||||||
inline MxS8 Compare(const MxString& p_str) const { return strcmp(m_data, p_str.m_data); }
|
inline MxS8 Compare(const MxString& p_str) const { return strcmp(m_data, p_str.m_data); }
|
||||||
|
inline MxBool Equal(const MxString& p_str) const { return strcmp(m_data, p_str.m_data) == 0; }
|
||||||
inline const char* GetData() const { return m_data; }
|
inline const char* GetData() const { return m_data; }
|
||||||
inline char* GetDataPtr() const { return m_data; }
|
inline char* GetDataPtr() const { return m_data; }
|
||||||
inline const MxU16 GetLength() const { return m_length; }
|
inline const MxU16 GetLength() const { return m_length; }
|
||||||
|
|
Loading…
Reference in a new issue