Implement/match LegoCharacterManager::FUN_10083b20 and FUN_10085180 (#902)

This commit is contained in:
Christian Semmler 2024-05-11 08:13:27 -04:00 committed by GitHub
parent d9a82323ca
commit c77dd44105
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 19 additions and 9 deletions

View file

@ -59,7 +59,7 @@ class LegoCharacterManager {
static MxBool Exists(const char* p_key); static MxBool Exists(const char* p_key);
void FUN_100832a0(); void FUN_100832a0();
MxBool FUN_10083b20(const char* p_name); MxBool FUN_10083b20(const char* p_key);
MxU32 GetRefCount(LegoROI* p_roi); MxU32 GetRefCount(LegoROI* p_roi);
void FUN_10083c30(const char* p_name); void FUN_10083c30(const char* p_name);
void FUN_10083db0(LegoROI* p_roi); void FUN_10083db0(LegoROI* p_roi);

View file

@ -1669,7 +1669,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
active = rand() % 100 < 50; active = rand() % 100 < 50;
} }
nextCharacter: tryNextCharacter:
if (g_characters[m_lastExtraCharacterId].m_unk0x09 && if (g_characters[m_lastExtraCharacterId].m_unk0x09 &&
g_characters[m_lastExtraCharacterId].m_unk0x08 && g_characters[m_lastExtraCharacterId].m_unk0x08 &&
!g_characters[m_lastExtraCharacterId].m_unk0x04 && !g_characters[m_lastExtraCharacterId].m_unk0x04 &&
@ -1708,7 +1708,6 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
boundary->m_dest, boundary->m_dest,
boundary->m_destScale boundary->m_destScale
) == SUCCESS) { ) == SUCCESS) {
MxS32 vehicleId = g_characters[m_lastExtraCharacterId].m_vehicleId; MxS32 vehicleId = g_characters[m_lastExtraCharacterId].m_vehicleId;
if (vehicleId >= 0) { if (vehicleId >= 0) {
g_vehicles[vehicleId].m_unk0x04 = g_vehicles[vehicleId].m_unk0x04 =
@ -1764,7 +1763,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
return; return;
} }
goto nextCharacter; goto tryNextCharacter;
} }
} }
} }

View file

@ -245,11 +245,17 @@ LegoROI* LegoCharacterManager::GetROI(const char* p_key, MxBool p_createEntity)
return NULL; return NULL;
} }
// STUB: LEGO1 0x10083b20 // FUNCTION: LEGO1 0x10083b20
// FUNCTION: BETA10 0x10074608 // FUNCTION: BETA10 0x10074608
MxBool LegoCharacterManager::FUN_10083b20(const char* p_name) MxBool LegoCharacterManager::FUN_10083b20(const char* p_key)
{ {
// TODO LegoCharacter* character = NULL;
LegoCharacterMap::iterator it = m_characters->find(const_cast<char*>(p_key));
if (it != m_characters->end()) {
return TRUE;
}
return FALSE; return FALSE;
} }
@ -744,11 +750,16 @@ MxU32 LegoCharacterManager::FUN_10085140(LegoROI* p_roi, MxBool p_und)
return 0; return 0;
} }
// STUB: LEGO1 0x10085180 // FUNCTION: LEGO1 0x10085180
// FUNCTION: BETA10 0x100768c5 // FUNCTION: BETA10 0x100768c5
MxU8 LegoCharacterManager::FUN_10085180(LegoROI* p_roi) MxU8 LegoCharacterManager::FUN_10085180(LegoROI* p_roi)
{ {
// TODO LegoCharacterInfo* info = GetInfo(p_roi);
if (info != NULL) {
return info->m_unk0x14;
}
return 0; return 0;
} }