Implement/match LegoPhonemePresenter::StartingTickle (#809)

* Implement/match LegoPhonemePresenter::StartingTickle

* Name vars

* Fix name
This commit is contained in:
Christian Semmler
2024-04-16 10:07:13 -04:00
committed by GitHub
parent 41281dcbec
commit 2600b1b421
17 changed files with 314 additions and 143 deletions

View File

@@ -394,10 +394,10 @@ void LegoAnimPresenter::FUN_1006a3c0(LegoAnimPresenterMap& p_map, LegoTreeNode*
}
}
else {
LegoROI* roi2 = p_roi->FUN_100a8ce0(name, p_roi);
LegoROI* child = p_roi->FindChildROI(name, p_roi);
if (roi2 != NULL) {
FUN_1006a4f0(p_map, data, und, roi2);
if (child != NULL) {
FUN_1006a4f0(p_map, data, und, child);
}
else {
if (FUN_100699e0(name) != NULL) {
@@ -473,9 +473,9 @@ MxBool LegoAnimPresenter::FUN_1006abb0(LegoTreeNode* p_node, LegoROI* p_roi)
}
}
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_1006abb0(p_node, NULL)) {
result = TRUE;

View File

@@ -1,5 +1,10 @@
#include "legophonemepresenter.h"
#include "legocharactermanager.h"
#include "misc.h"
#include "misc/legocontainer.h"
#include "mxcompositepresenter.h"
DECOMP_SIZE_ASSERT(LegoPhonemePresenter, 0x88)
// FUNCTION: LEGO1 0x1004e180
@@ -17,17 +22,66 @@ LegoPhonemePresenter::~LegoPhonemePresenter()
void LegoPhonemePresenter::Init()
{
m_unk0x68 = 0;
m_unk0x6c = 0;
m_unk0x70 = 0;
m_unk0x84 = 0;
m_textureInfo = NULL;
m_unk0x70 = FALSE;
m_unk0x84 = FALSE;
}
// STUB: LEGO1 0x1004e3d0
// FUNCTION: LEGO1 0x1004e3d0
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

View File

@@ -25,7 +25,7 @@ LegoVideoManager::LegoVideoManager()
m_unk0xe6 = FALSE;
memset(m_unk0x78, 0, sizeof(m_unk0x78));
m_unk0x78[0] = 0x6c;
m_unk0x100d9d00 = NULL;
m_phonemeRefList = NULL;
m_isFullscreenMovie = FALSE;
m_palette = NULL;
m_stopWatch = NULL;
@@ -194,7 +194,7 @@ MxResult LegoVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyM
m_3dManager->Add(*m_viewROI);
m_3dManager->SetPointOfView(*m_viewROI);
m_unk0x100d9d00 = new LegoUnknown100d9d00;
m_phonemeRefList = new LegoPhonemeList;
SetRender3D(FALSE);
m_stopWatch = new MxStopWatch;
m_stopWatch->Start();