mirror of
https://github.com/isledecomp/isle-portable.git
synced 2025-03-10 15:07:49 -04:00
Implement/match LegoCharacterManager::SwitchColor (#996)
This commit is contained in:
parent
49c17c9c6a
commit
9b22642f0c
1 changed files with 55 additions and 3 deletions
|
@ -708,12 +708,64 @@ LegoROI* LegoCharacterManager::FindChildROI(LegoROI* p_roi, const char* p_name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10084d50
|
||||
// FUNCTION: LEGO1 0x10084d50
|
||||
// FUNCTION: BETA10 0x10076223
|
||||
MxBool LegoCharacterManager::SwitchColor(LegoROI* p_roi, LegoROI* p_targetROI)
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
MxS32 numParts = 10;
|
||||
const char* targetName = p_targetROI->GetName();
|
||||
|
||||
MxS32 partIndex;
|
||||
for (partIndex = 0; partIndex < numParts; partIndex++) {
|
||||
if (!strcmp(targetName, g_actorLODs[partIndex + 1].m_name)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
assert(partIndex < numParts);
|
||||
|
||||
MxBool findChild = TRUE;
|
||||
if (partIndex == 6) {
|
||||
partIndex = 4;
|
||||
}
|
||||
else if (partIndex == 7) {
|
||||
partIndex = 5;
|
||||
}
|
||||
else if (partIndex == 3) {
|
||||
partIndex = 1;
|
||||
}
|
||||
else if (partIndex == 0) {
|
||||
partIndex = 2;
|
||||
}
|
||||
else {
|
||||
findChild = FALSE;
|
||||
}
|
||||
|
||||
if (!(g_actorLODs[partIndex + 1].m_flags & LegoActorLOD::c_flag2)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
LegoActorInfo* info = GetActorInfo(p_roi->GetName());
|
||||
|
||||
if (info == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (findChild) {
|
||||
p_targetROI = FindChildROI(p_roi, g_actorLODs[partIndex + 1].m_name);
|
||||
}
|
||||
|
||||
LegoActorInfo::Part& part = info->m_parts[partIndex];
|
||||
|
||||
part.m_unk0x14++;
|
||||
if (part.m_unk0x0c[part.m_unk0x14] == 0xff) {
|
||||
part.m_unk0x14 = 0;
|
||||
}
|
||||
|
||||
LegoFloat red, green, blue, alpha;
|
||||
LegoROI::FUN_100a9bf0(part.m_unk0x10[part.m_unk0x0c[part.m_unk0x14]], red, green, blue, alpha);
|
||||
p_targetROI->FUN_100a9170(red, green, blue, alpha);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10084ec0
|
||||
|
|
Loading…
Reference in a new issue