Implement/match LegoWorld::FUN_10021790

This commit is contained in:
Christian Semmler 2024-01-26 09:45:19 -05:00
parent 5f413165cc
commit 33192c6683
4 changed files with 54 additions and 18 deletions

View File

@ -89,4 +89,7 @@ class LegoEntityListCursor : public MxPtrListCursor<LegoEntity> {
// FUNCTION: LEGO1 0x1001edc6
// LegoEntityListCursor::~LegoEntityListCursor
// TEMPLATE: LEGO1 0x100207d0
// MxListCursor<LegoEntity *>::MxListCursor<LegoEntity *>
#endif // LEGOENTITYLIST_H

View File

@ -66,7 +66,7 @@ class LegoWorld : public LegoEntity {
void FUN_10073430();
MxS32 GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
MxPresenter* FindPresenter(const char* p_presenter, const char* p_name);
MxPresenter* FUN_10021790(MxAtomId& p_atom, MxS32 p_entityId);
MxCore* FUN_10021790(MxAtomId& p_atom, MxS32 p_entityId);
// SYNTHETIC: LEGO1 0x1001dee0
// LegoWorld::`scalar deleting destructor'

View File

@ -168,9 +168,42 @@ MxPresenter* LegoWorld::FindPresenter(const char* p_presenter, const char* p_nam
return NULL;
}
// STUB: LEGO1 0x10021790
MxPresenter* LegoWorld::FUN_10021790(MxAtomId& p_atom, MxS32 p_entityId)
// FUNCTION: LEGO1 0x10021790
MxCore* LegoWorld::FUN_10021790(MxAtomId& p_atom, MxS32 p_entityId)
{
LegoEntityListCursor entityCursor(m_entityList);
LegoEntity* entity;
while (entityCursor.Next(entity)) {
if (entity->GetAtom() == p_atom && entity->GetEntityId() == p_entityId)
return entity;
}
MxPresenterListCursor presenterCursor0xb8(&m_list0xb8);
MxPresenter* presenter;
while (presenterCursor0xb8.Next(presenter)) {
if (presenter->GetAction()->GetAtomId() == p_atom && presenter->GetAction()->GetObjectId() == p_entityId)
return presenter;
}
MxPresenterListCursor presenterCursor0x80(&m_list0x80);
while (presenterCursor0x80.Next(presenter)) {
if (presenter->GetAction() && presenter->GetAction()->GetAtomId() == p_atom &&
presenter->GetAction()->GetObjectId() == p_entityId)
return presenter;
}
for (MxPresenterSet::iterator it = m_set0xa8.begin(); it != m_set0xa8.end(); it++) {
MxCore* core = *it;
if (core->IsA("MxPresenter")) {
presenter = (MxPresenter*) *it;
if (presenter->GetAction()->GetAtomId() == p_atom && presenter->GetAction()->GetObjectId() == p_entityId)
return presenter;
}
}
return NULL;
}

View File

@ -365,22 +365,22 @@ void Infocenter::InitializeBitmaps()
{
m_radio.Initialize(TRUE);
FUN_10021790(m_atom, c_leftArrowCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_rightArrowCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_infoCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_boatCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_raceCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_pizzaCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_gasCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_medCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_copCtl)->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_leftArrowCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_rightArrowCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_infoCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_boatCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_raceCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_pizzaCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_gasCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_medCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_copCtl))->Enable(TRUE);
FUN_10021790(m_atom, c_mamaCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_papaCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_pepperCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_nickCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_lauraCtl)->Enable(TRUE);
FUN_10021790(m_atom, c_radioCtl)->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_mamaCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_papaCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_pepperCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_nickCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_lauraCtl))->Enable(TRUE);
((MxPresenter*) FUN_10021790(m_atom, c_radioCtl))->Enable(TRUE);
m_mapAreas[0].m_presenter = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Info_A_Bitmap");
m_mapAreas[0].m_unk0x08 = 391;