diff --git a/CMakeLists.txt b/CMakeLists.txt index cc660ede..00b4fdda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -321,11 +321,11 @@ add_library(lego1 SHARED LEGO1/lego/legoomni/src/build/legovehiclebuildstate.cpp LEGO1/lego/legoomni/src/common/animstate.cpp LEGO1/lego/legoomni/src/common/legoactioncontrolpresenter.cpp + LEGO1/lego/legoomni/src/common/legoactors.cpp LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp LEGO1/lego/legoomni/src/common/legoanimmmpresenter.cpp LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp LEGO1/lego/legoomni/src/common/legocharactermanager.cpp - LEGO1/lego/legoomni/src/common/legocharacters.cpp LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp LEGO1/lego/legoomni/src/common/legogamestate.cpp LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp diff --git a/LEGO1/lego/legoomni/include/legocharacters.h b/LEGO1/lego/legoomni/include/legoactors.h similarity index 81% rename from LEGO1/lego/legoomni/include/legocharacters.h rename to LEGO1/lego/legoomni/include/legoactors.h index c21d81c7..46f288b5 100644 --- a/LEGO1/lego/legoomni/include/legocharacters.h +++ b/LEGO1/lego/legoomni/include/legoactors.h @@ -1,5 +1,5 @@ -#ifndef LEGOCHARACTERS_H -#define LEGOCHARACTERS_H +#ifndef LEGOACTORS_H +#define LEGOACTORS_H #include "decomp.h" #include "mxtypes.h" @@ -8,7 +8,7 @@ class LegoExtraActor; class LegoROI; // SIZE 0x108 -struct LegoCharacterInfo { +struct LegoActorInfo { // SIZE 0x18 struct Part { MxU8* m_unk0x00; // 0x00 @@ -29,7 +29,7 @@ struct LegoCharacterInfo { }; // SIZE 0x58 -struct LegoCharacterLOD { +struct LegoActorLOD { enum { c_flag1 = 0x01, c_flag2 = 0x02 @@ -45,7 +45,7 @@ struct LegoCharacterLOD { float m_up[3]; // 0x4c }; -enum LegoCharacterLODs { +enum LegoActorLODs { c_topLOD, c_bodyLOD, c_infohatLOD, @@ -59,7 +59,7 @@ enum LegoCharacterLODs { c_legrtLOD }; -enum LegoCharacterParts { +enum LegoActorParts { c_bodyPart, c_infohatPart, c_infogronPart, @@ -72,7 +72,7 @@ enum LegoCharacterParts { c_legrtPart }; -extern LegoCharacterInfo g_characterInfoInit[66]; -extern LegoCharacterLOD g_characterLODs[11]; +extern LegoActorInfo g_actorInfoInit[66]; +extern LegoActorLOD g_actorLODs[11]; -#endif // LEGOCHARACTERS_H +#endif // LEGOACTORS_H diff --git a/LEGO1/lego/legoomni/include/legocharactermanager.h b/LEGO1/lego/legoomni/include/legocharactermanager.h index f92bdd76..1032f8b3 100644 --- a/LEGO1/lego/legoomni/include/legocharactermanager.h +++ b/LEGO1/lego/legoomni/include/legocharactermanager.h @@ -41,7 +41,7 @@ struct LegoCharacter { MxU32 m_refCount; // 0x04 }; -struct LegoCharacterInfo; +struct LegoActorInfo; typedef map<char*, LegoCharacter*, LegoCharacterComparator> LegoCharacterMap; @@ -53,32 +53,32 @@ public: MxResult Write(LegoStorage* p_storage); MxResult Read(LegoStorage* p_storage); - LegoROI* GetROI(const char* p_key, MxBool p_createEntity); + LegoROI* GetActorROI(const char* p_name, MxBool p_createEntity); void Init(); static void SetCustomizeAnimFile(const char* p_value); - static MxBool Exists(const char* p_key); + static MxBool IsActor(const char* p_name); - void FUN_100832a0(); - MxBool FUN_10083b20(const char* p_key); + void ReleaseAllActors(); + MxBool Exists(const char* p_name); MxU32 GetRefCount(LegoROI* p_roi); - void FUN_10083c30(const char* p_name); - void FUN_10083db0(LegoROI* p_roi); - void FUN_10083f10(LegoROI* p_roi); + void ReleaseActor(const char* p_name); + void ReleaseActor(LegoROI* p_roi); + void ReleaseAutoROI(LegoROI* p_roi); MxBool FUN_100849a0(LegoROI* p_roi, LegoTextureInfo* p_textureInfo); - LegoExtraActor* GetActor(const char* p_key); - LegoCharacterInfo* GetInfo(const char* p_key); - LegoCharacterInfo* GetInfo(LegoROI* p_roi); + LegoExtraActor* GetExtraActor(const char* p_name); + LegoActorInfo* GetActorInfo(const char* p_name); + LegoActorInfo* GetActorInfo(LegoROI* p_roi); MxBool SwitchHat(LegoROI* p_roi); MxU32 FUN_10085140(LegoROI* p_roi, MxBool p_und); MxU8 GetMood(LegoROI* p_roi); - LegoROI* FUN_10085210(const char* p_name, const char* p_lodName, MxBool p_createEntity); + LegoROI* CreateAutoROI(const char* p_name, const char* p_lodName, MxBool p_createEntity); LegoROI* FUN_10085a80(const char* p_name, const char* p_lodName, MxBool p_createEntity); static const char* GetCustomizeAnimFile() { return g_customizeAnimFile; } private: - LegoROI* CreateROI(const char* p_key); + LegoROI* CreateActorROI(const char* p_key); void RemoveROI(LegoROI* p_roi); LegoROI* FindChildROI(LegoROI* p_roi, const char* p_name); MxResult FUN_10085870(LegoROI* p_roi); diff --git a/LEGO1/lego/legoomni/include/legoentity.h b/LEGO1/lego/legoomni/include/legoentity.h index 034dc700..5fcced29 100644 --- a/LEGO1/lego/legoomni/include/legoentity.h +++ b/LEGO1/lego/legoomni/include/legoentity.h @@ -14,16 +14,16 @@ class Vector3; class LegoEntity : public MxEntity { public: enum Type { - e_character = 0, + e_actor = 0, e_unk1, e_plant, e_building, - e_unk4 + e_autoROI }; enum { c_bit1 = 0x01, - c_bit2 = 0x02 + c_managerOwned = 0x02 }; enum { diff --git a/LEGO1/lego/legoomni/src/audio/lego3dsound.cpp b/LEGO1/lego/legoomni/src/audio/lego3dsound.cpp index bc68915b..eef3aa86 100644 --- a/LEGO1/lego/legoomni/src/audio/lego3dsound.cpp +++ b/LEGO1/lego/legoomni/src/audio/lego3dsound.cpp @@ -53,8 +53,8 @@ MxResult Lego3DSound::Create(LPDIRECTSOUNDBUFFER p_directSoundBuffer, const char return SUCCESS; } - if (CharacterManager()->Exists(p_name)) { - m_roi = CharacterManager()->GetROI(p_name, TRUE); + if (CharacterManager()->IsActor(p_name)) { + m_roi = CharacterManager()->GetActorROI(p_name, TRUE); m_enabled = m_isActor = TRUE; } else { @@ -62,7 +62,7 @@ MxResult Lego3DSound::Create(LPDIRECTSOUNDBUFFER p_directSoundBuffer, const char } if (m_roi == NULL) { - m_roi = CharacterManager()->FUN_10085210(NULL, p_name, TRUE); + m_roi = CharacterManager()->CreateAutoROI(NULL, p_name, TRUE); if (m_roi != NULL) { m_enabled = TRUE; @@ -113,10 +113,10 @@ void Lego3DSound::Destroy() if (m_enabled && m_roi && CharacterManager()) { if (m_isActor) { - CharacterManager()->FUN_10083db0(m_roi); + CharacterManager()->ReleaseActor(m_roi); } else { - CharacterManager()->FUN_10083f10(m_roi); + CharacterManager()->ReleaseAutoROI(m_roi); } } diff --git a/LEGO1/lego/legoomni/src/common/legocharacters.cpp b/LEGO1/lego/legoomni/src/common/legoactors.cpp similarity index 98% rename from LEGO1/lego/legoomni/src/common/legocharacters.cpp rename to LEGO1/lego/legoomni/src/common/legoactors.cpp index d80b49c8..acab09e1 100644 --- a/LEGO1/lego/legoomni/src/common/legocharacters.cpp +++ b/LEGO1/lego/legoomni/src/common/legoactors.cpp @@ -1,16 +1,16 @@ -#include "legocharacters.h" +#include "legoactors.h" -DECOMP_SIZE_ASSERT(LegoCharacterInfo, 0x108) -DECOMP_SIZE_ASSERT(LegoCharacterInfo::Part, 0x18) -DECOMP_SIZE_ASSERT(LegoCharacterLOD, 0x58) +DECOMP_SIZE_ASSERT(LegoActorInfo, 0x108) +DECOMP_SIZE_ASSERT(LegoActorInfo::Part, 0x18) +DECOMP_SIZE_ASSERT(LegoActorLOD, 0x58) -// Unclear whether g_characterLODs[0] (top) is its own global, see: LegoCharacterManager::CreateROI +// Unclear whether g_actorLODs[0] (top) is its own global, see: LegoCharacterManager::CreateActorROI // GLOBAL: LEGO1 0x100da3b0 -LegoCharacterLOD g_characterLODs[] = { +LegoActorLOD g_actorLODs[] = { {"top", "top", 0, 0.000267, 0.780808, -0.01906, 0.951612, -0.461166, -0.002794, -0.299442, 0.4617, 1.56441, 0.261321, 0, 0, 0, 0, 0, 1, 0, 1, 0}, - {"body", "body", LegoCharacterLOD::c_flag1, + {"body", "body", LegoActorLOD::c_flag1, 0.00158332, 0.401828, -0.00048697, 0.408071, -0.287507, 0.150419, -0.147452, 0.289219, 0.649774, @@ -18,7 +18,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.007277, 0, 0, 1, 0, 1, 0}, - {"infohat", "infohat", LegoCharacterLOD::c_flag2, + {"infohat", "infohat", LegoActorLOD::c_flag2, 0, -0.00938, -0.01955, 0.35, -0.231822, -0.140237, -0.320954, 0.234149, 0.076968, @@ -26,7 +26,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.001767, 0, 0, 1, 0, 1, 0}, - {"infogron", "infogron", LegoCharacterLOD::c_flag2, + {"infogron", "infogron", LegoActorLOD::c_flag2, 0, 0.11477, 0.00042, 0.26, -0.285558, -0.134391, -0.142231, 0.285507, 0.152986, @@ -34,7 +34,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.007277, 0, 0, 1, 0, 1, 0}, - {"head", "head", LegoCharacterLOD::c_flag1, + {"head", "head", LegoActorLOD::c_flag1, 0, -0.03006, 0, 0.3, -0.189506, -0.209665, -0.189824, 0.189532, 0.228822, @@ -42,7 +42,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.001781, 0, 0, 1, 0, 1, 0}, - {"arm-lft", "arm-lft", LegoCharacterLOD::c_flag2, + {"arm-lft", "arm-lft", LegoActorLOD::c_flag2, -0.06815, -0.0973747, 0.0154655, 0.237, -0.137931, -0.282775, -0.105316, 0.000989, 0.100221, @@ -50,7 +50,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.023286, -0.003031, -0.017187, 0.999848, 0.173622, 0.984658, 0.017453}, - {"arm-rt", "arm-rt", LegoCharacterLOD::c_flag2, + {"arm-rt", "arm-rt", LegoActorLOD::c_flag2, 0.0680946, -0.097152, 0.0152722, 0.237, 0.00141, -0.289604, -0.100831, 0.138786, 0.09291, @@ -58,7 +58,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.018302, 0, 0, 1, -0.173648, 0.984808, 0}, - {"claw-lft", "claw-lft", LegoCharacterLOD::c_flag2, + {"claw-lft", "claw-lft", LegoActorLOD::c_flag2, 0.000773381, -0.101422, -0.0237761, 0.15, -0.089838, -0.246208, -0.117735, 0.091275, 0.000263, @@ -66,7 +66,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.092779, 0.000001, 0.000003, 1, 0.190812, 0.981627, -0.000003}, - {"claw-rt", "claw-lft", LegoCharacterLOD::c_flag2, + {"claw-rt", "claw-lft", LegoActorLOD::c_flag2, 0.000773381, -0.101422, -0.0237761, 0.15, -0.095016, -0.245349, -0.117979, 0.086528, 0.00067, @@ -74,7 +74,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.096123, 0.00606, -0.034369, 0.999391, -0.190704, 0.981027, 0.034894}, - {"leg-lft", "leg", LegoCharacterLOD::c_flag2, + {"leg-lft", "leg", LegoActorLOD::c_flag2, 0.00433584, -0.177404, -0.0313928, 0.33, -0.129782, -0.440428, -0.184207, 0.13817, 0.118415, @@ -82,7 +82,7 @@ LegoCharacterLOD g_characterLODs[] = { 0.006822, 0, 0, 1, 0, 1, 0}, - {"leg-rt", "leg", LegoCharacterLOD::c_flag2, + {"leg-rt", "leg", LegoActorLOD::c_flag2, 0.00433584, -0.177404, -0.0313928, 0.33, -0.132864, -0.437138, -0.183944, 0.134614, 0.12043, @@ -172,7 +172,7 @@ const char* g_unk0x100f80a0[] = {"lego white", "lego black", "lego yellow", "lego red", "lego blue", "lego brown", "lego lt grey", "lego green"}; // GLOBAL: LEGO1 0x100f80c0 -LegoCharacterInfo g_characterInfoInit[] = { +LegoActorInfo g_actorInfoInit[] = { {"pepper", NULL, NULL, diff --git a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp index 40afb7a3..3c358af4 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp @@ -344,14 +344,14 @@ LegoAnimationManager::~LegoAnimationManager() LegoROI* roi = m_extras[i].m_roi; if (roi != NULL) { - LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName()); + LegoPathActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor != NULL && actor->GetController() != NULL && CurrentWorld() != NULL) { CurrentWorld()->RemoveActor(actor); actor->SetController(NULL); } - CharacterManager()->FUN_10083db0(roi); + CharacterManager()->ReleaseActor(roi); } } @@ -430,14 +430,14 @@ void LegoAnimationManager::Suspend() LegoROI* roi = m_extras[i].m_roi; if (roi != NULL) { - LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName()); + LegoPathActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor != NULL && actor->GetController() != NULL) { actor->GetController()->RemoveActor(actor); actor->SetController(NULL); } - CharacterManager()->FUN_10083db0(roi); + CharacterManager()->ReleaseActor(roi); } if (m_extras[i].m_unk0x14) { @@ -1069,8 +1069,8 @@ MxResult LegoAnimationManager::StartEntityAction(MxDSAction& p_dsAction, LegoEnt MxResult result = FAILURE; LegoROI* roi = p_entity->GetROI(); - if (p_entity->GetType() == LegoEntity::e_character) { - LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName()); + if (p_entity->GetType() == LegoEntity::e_actor) { + LegoPathActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor) { LegoPathController* controller = actor->GetController(); @@ -1395,7 +1395,7 @@ MxLong LegoAnimationManager::Notify(MxParam& p_param) LegoROI* roi = m_extras[i].m_roi; if (roi != NULL) { - LegoExtraActor* actor = CharacterManager()->GetActor(roi->GetName()); + LegoExtraActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor != NULL) { actor->Restart(); } @@ -1444,14 +1444,14 @@ MxResult LegoAnimationManager::Tickle() LegoROI* roi = m_extras[i].m_roi; if (roi != NULL && m_extras[i].m_unk0x0d) { - LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName()); + LegoPathActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor != NULL && actor->GetController() != NULL) { actor->GetController()->RemoveActor(actor); actor->SetController(NULL); } - CharacterManager()->FUN_10083db0(roi); + CharacterManager()->ReleaseActor(roi); if (m_extras[i].m_unk0x14) { m_extras[i].m_unk0x14 = FALSE; @@ -1701,7 +1701,7 @@ void LegoAnimationManager::FUN_10062580(AnimInfo& p_info) if (models != NULL && modelCount) { for (MxU8 i = 0; i < modelCount; i++) { - LegoPathActor* actor = CharacterManager()->GetActor(models[i].m_name); + LegoPathActor* actor = CharacterManager()->GetExtraActor(models[i].m_name); if (actor) { LegoPathController* controller = actor->GetController(); @@ -1814,13 +1814,13 @@ void LegoAnimationManager::PurgeExtra(MxBool p_und) !viewManager->FUN_100a6150(roi->GetWorldBoundingBox()))) { m_unk0x414--; - LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName()); + LegoPathActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor != NULL && actor->GetController() != NULL) { actor->GetController()->RemoveActor(actor); actor->SetController(NULL); } - CharacterManager()->FUN_10083db0(roi); + CharacterManager()->ReleaseActor(roi); if (m_extras[i].m_unk0x14) { m_extras[i].m_unk0x14 = FALSE; @@ -1930,15 +1930,15 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und) g_characters[m_lastExtraCharacterId].m_unk0x08 && !g_characters[m_lastExtraCharacterId].m_inExtras && g_characters[m_lastExtraCharacterId].m_active == active) { - if (!CharacterManager()->FUN_10083b20(g_characters[m_lastExtraCharacterId].m_name - )) { - m_extras[i].m_roi = CharacterManager()->GetROI( + if (!CharacterManager()->Exists(g_characters[m_lastExtraCharacterId].m_name)) { + m_extras[i].m_roi = CharacterManager()->GetActorROI( g_characters[m_lastExtraCharacterId].m_name, TRUE ); - LegoExtraActor* actor = - CharacterManager()->GetActor(g_characters[m_lastExtraCharacterId].m_name); + LegoExtraActor* actor = CharacterManager()->GetExtraActor( + g_characters[m_lastExtraCharacterId].m_name + ); switch (g_unk0x100f7504++ % 4) { case 0: @@ -2002,7 +2002,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und) return; } else { - CharacterManager()->FUN_10083db0(m_extras[i].m_roi); + CharacterManager()->ReleaseActor(m_extras[i].m_roi); m_extras[i].m_roi = NULL; continue; } @@ -2042,7 +2042,7 @@ MxBool LegoAnimationManager::FUN_10062e20(LegoROI* p_roi, LegoAnimPresenter* p_p MxBool inExtras = FALSE; const char* name = p_roi->GetName(); - LegoExtraActor* actor = CharacterManager()->GetActor(name); + LegoExtraActor* actor = CharacterManager()->GetExtraActor(name); if (actor != NULL) { MxS32 characterId = -1; MxS32 i; @@ -2104,7 +2104,7 @@ MxBool LegoAnimationManager::FUN_10062e20(LegoROI* p_roi, LegoAnimPresenter* p_p return FALSE; } - CharacterManager()->FUN_10083db0(p_roi); + CharacterManager()->ReleaseActor(p_roi); } else { if (inExtras) { @@ -2216,7 +2216,7 @@ void LegoAnimationManager::FUN_10063270(LegoROIList* p_list, LegoAnimPresenter* FUN_10063950(roi); } else { - LegoExtraActor* actor = CharacterManager()->GetActor(roi->GetName()); + LegoExtraActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor != NULL) { for (MxS32 i = 0; i < (MxS32) sizeOfArray(m_extras); i++) { @@ -2277,7 +2277,7 @@ void LegoAnimationManager::FUN_10063780(LegoROIList* p_list) while (cursor.Next(roi)) { const char* name = roi->GetName(); - if (CharacterManager()->Exists(name)) { + if (CharacterManager()->IsActor(name)) { m_unk0x424->Append(roi); cursor.Detach(); } @@ -2292,7 +2292,7 @@ void LegoAnimationManager::FUN_10063950(LegoROI* p_roi) LegoROIListCursor cursor(m_unk0x424); if (cursor.Find(p_roi)) { - CharacterManager()->FUN_10083db0(p_roi); + CharacterManager()->ReleaseActor(p_roi); cursor.Detach(); } } @@ -2305,7 +2305,7 @@ void LegoAnimationManager::FUN_10063aa0() LegoROI* roi; while (cursor.Next(roi)) { - CharacterManager()->FUN_10083db0(roi); + CharacterManager()->ReleaseActor(roi); } } @@ -2388,7 +2388,7 @@ void LegoAnimationManager::FUN_10063d10() m_extras[i].m_unk0x0c = FALSE; - LegoExtraActor* actor = CharacterManager()->GetActor(roi->GetName()); + LegoExtraActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor != NULL) { float speed = m_extras[i].m_speed; @@ -2405,7 +2405,7 @@ void LegoAnimationManager::FUN_10063d10() } } else { - LegoExtraActor* actor = CharacterManager()->GetActor(roi->GetName()); + LegoExtraActor* actor = CharacterManager()->GetExtraActor(roi->GetName()); if (actor != NULL) { actor->Restart(); } @@ -2424,7 +2424,7 @@ void LegoAnimationManager::FUN_10063e40(LegoAnimPresenter* p_presenter) while (cursor.Next(roi)) { if (!FUN_10062e20(roi, p_presenter)) { - CharacterManager()->FUN_10083db0(roi); + CharacterManager()->ReleaseActor(roi); } cursor.Detach(); @@ -2594,7 +2594,7 @@ MxResult LegoAnimationManager::FUN_10064380( } if (roi != NULL && !strcmpi(roi->GetName(), p_name)) { - actor = CharacterManager()->GetActor(p_name); + actor = CharacterManager()->GetExtraActor(p_name); if (actor != NULL && actor->GetController() != NULL) { actor->GetController()->RemoveActor(actor); @@ -2620,11 +2620,11 @@ MxResult LegoAnimationManager::FUN_10064380( return FAILURE; } - m_extras[extraIndex].m_roi = CharacterManager()->GetROI(p_name, TRUE); + m_extras[extraIndex].m_roi = CharacterManager()->GetActorROI(p_name, TRUE); m_extras[extraIndex].m_characterId = characterId; m_extras[extraIndex].m_speed = p_speed; - actor = CharacterManager()->GetActor(p_name); + actor = CharacterManager()->GetExtraActor(p_name); m_unk0x414++; } @@ -2634,7 +2634,7 @@ MxResult LegoAnimationManager::FUN_10064380( actor->SetWorldSpeed(0.0f); if (world->PlaceActor(actor, p_boundaryName, p_src, p_srcScale, p_dest, p_destScale) != SUCCESS) { - CharacterManager()->FUN_10083db0(m_extras[i].m_roi); + CharacterManager()->ReleaseActor(m_extras[i].m_roi); m_extras[i].m_roi = NULL; m_unk0x414--; return FAILURE; diff --git a/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp b/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp index 9f409bfb..dc48d9b5 100644 --- a/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp @@ -1,8 +1,8 @@ #include "legocharactermanager.h" #include "3dmanager/lego3dmanager.h" +#include "legoactors.h" #include "legoanimactor.h" -#include "legocharacters.h" #include "legoextraactor.h" #include "legogamestate.h" #include "legovariables.h" @@ -40,7 +40,7 @@ MxU32 g_unk0x100fc4ec = 2; MxU32 g_unk0x100fc4f0 = 0; // GLOBAL: LEGO1 0x10104f20 -LegoCharacterInfo g_characterInfo[66]; +LegoActorInfo g_actorInfo[66]; // FUNCTION: LEGO1 0x10082a20 LegoCharacterManager::LegoCharacterManager() @@ -75,26 +75,26 @@ LegoCharacterManager::~LegoCharacterManager() // FUNCTION: LEGO1 0x10083270 void LegoCharacterManager::Init() { - for (MxS32 i = 0; i < sizeOfArray(g_characterInfo); i++) { - g_characterInfo[i] = g_characterInfoInit[i]; + for (MxS32 i = 0; i < sizeOfArray(g_actorInfo); i++) { + g_actorInfo[i] = g_actorInfoInit[i]; } } // FUNCTION: LEGO1 0x100832a0 -void LegoCharacterManager::FUN_100832a0() +void LegoCharacterManager::ReleaseAllActors() { - for (MxS32 i = 0; i < sizeOfArray(g_characterInfo); i++) { - LegoCharacterInfo* info = GetInfo(g_characterInfo[i].m_name); + for (MxS32 i = 0; i < sizeOfArray(g_actorInfo); i++) { + LegoActorInfo* info = GetActorInfo(g_actorInfo[i].m_name); if (info != NULL) { LegoExtraActor* actor = info->m_actor; if (actor != NULL && actor->IsA("LegoExtraActor")) { - LegoROI* roi = g_characterInfo[i].m_roi; + LegoROI* roi = g_actorInfo[i].m_roi; MxU32 refCount = GetRefCount(roi); while (refCount != 0) { - FUN_10083db0(roi); + ReleaseActor(roi); refCount = GetRefCount(roi); } } @@ -107,8 +107,8 @@ MxResult LegoCharacterManager::Write(LegoStorage* p_storage) { MxResult result = FAILURE; - for (MxS32 i = 0; i < sizeOfArray(g_characterInfo); i++) { - LegoCharacterInfo* info = &g_characterInfo[i]; + for (MxS32 i = 0; i < sizeOfArray(g_actorInfo); i++) { + LegoActorInfo* info = &g_actorInfo[i]; if (p_storage->Write(&info->m_unk0x0c, sizeof(info->m_unk0x0c)) != SUCCESS) { goto done; @@ -162,8 +162,8 @@ MxResult LegoCharacterManager::Read(LegoStorage* p_storage) { MxResult result = FAILURE; - for (MxS32 i = 0; i < sizeOfArray(g_characterInfo); i++) { - LegoCharacterInfo* info = &g_characterInfo[i]; + for (MxS32 i = 0; i < sizeOfArray(g_actorInfo); i++) { + LegoActorInfo* info = &g_actorInfo[i]; if (p_storage->Read(&info->m_unk0x0c, sizeof(info->m_unk0x0c)) != SUCCESS) { goto done; @@ -213,10 +213,10 @@ done: } // FUNCTION: LEGO1 0x10083500 -LegoROI* LegoCharacterManager::GetROI(const char* p_key, MxBool p_createEntity) +LegoROI* LegoCharacterManager::GetActorROI(const char* p_name, MxBool p_createEntity) { LegoCharacter* character = NULL; - LegoCharacterMap::iterator it = m_characters->find(const_cast<char*>(p_key)); + LegoCharacterMap::iterator it = m_characters->find(const_cast<char*>(p_name)); if (it != m_characters->end()) { character = (*it).second; @@ -224,7 +224,7 @@ LegoROI* LegoCharacterManager::GetROI(const char* p_key, MxBool p_createEntity) } if (character == NULL) { - LegoROI* roi = CreateROI(p_key); + LegoROI* roi = CreateActorROI(p_name); if (roi == NULL) { goto done; @@ -234,11 +234,11 @@ LegoROI* LegoCharacterManager::GetROI(const char* p_key, MxBool p_createEntity) if (roi != NULL) { character = new LegoCharacter(roi); - char* key = new char[strlen(p_key) + 1]; + char* name = new char[strlen(p_name) + 1]; - if (key != NULL) { - strcpy(key, p_key); - (*m_characters)[key] = character; + if (name != NULL) { + strcpy(name, p_name); + (*m_characters)[name] = character; VideoManager()->Get3DManager()->Add(*roi); } } @@ -254,9 +254,9 @@ done: LegoExtraActor* actor = new LegoExtraActor(); actor->SetROI(character->m_roi, FALSE, FALSE); - actor->SetType(LegoEntity::e_character); - actor->SetFlag(LegoActor::c_bit2); - GetInfo(p_key)->m_actor = actor; + actor->SetType(LegoEntity::e_actor); + actor->SetFlag(LegoEntity::c_managerOwned); + GetActorInfo(p_name)->m_actor = actor; } return character->m_roi; @@ -267,10 +267,10 @@ done: // FUNCTION: LEGO1 0x10083b20 // FUNCTION: BETA10 0x10074608 -MxBool LegoCharacterManager::FUN_10083b20(const char* p_key) +MxBool LegoCharacterManager::Exists(const char* p_name) { LegoCharacter* character = NULL; - LegoCharacterMap::iterator it = m_characters->find(const_cast<char*>(p_key)); + LegoCharacterMap::iterator it = m_characters->find(const_cast<char*>(p_name)); if (it != m_characters->end()) { return TRUE; @@ -298,7 +298,7 @@ MxU32 LegoCharacterManager::GetRefCount(LegoROI* p_roi) // FUNCTION: LEGO1 0x10083c30 // FUNCTION: BETA10 0x10074701 -void LegoCharacterManager::FUN_10083c30(const char* p_name) +void LegoCharacterManager::ReleaseActor(const char* p_name) { LegoCharacter* character = NULL; LegoCharacterMap::iterator it = m_characters->find(const_cast<char*>(p_name)); @@ -307,7 +307,7 @@ void LegoCharacterManager::FUN_10083c30(const char* p_name) character = (*it).second; if (character->RemoveRef() == 0) { - LegoCharacterInfo* info = GetInfo(p_name); + LegoActorInfo* info = GetActorInfo(p_name); LegoEntity* entity = character->m_roi->GetEntity(); if (entity != NULL) { @@ -323,11 +323,11 @@ void LegoCharacterManager::FUN_10083c30(const char* p_name) if (info != NULL) { if (info->m_actor != NULL) { - info->m_actor->ClearFlag(LegoEntity::c_bit2); + info->m_actor->ClearFlag(LegoEntity::c_managerOwned); delete info->m_actor; } - else if (entity != NULL && entity->GetFlagsIsSet(LegoEntity::c_bit2)) { - entity->ClearFlag(LegoEntity::c_bit2); + else if (entity != NULL && entity->GetFlagsIsSet(LegoEntity::c_managerOwned)) { + entity->ClearFlag(LegoEntity::c_managerOwned); delete entity; } @@ -339,7 +339,7 @@ void LegoCharacterManager::FUN_10083c30(const char* p_name) } // FUNCTION: LEGO1 0x10083db0 -void LegoCharacterManager::FUN_10083db0(LegoROI* p_roi) +void LegoCharacterManager::ReleaseActor(LegoROI* p_roi) { LegoCharacter* character = NULL; LegoCharacterMap::iterator it; @@ -349,7 +349,7 @@ void LegoCharacterManager::FUN_10083db0(LegoROI* p_roi) if (character->m_roi == p_roi) { if (character->RemoveRef() == 0) { - LegoCharacterInfo* info = GetInfo(character->m_roi->GetName()); + LegoActorInfo* info = GetActorInfo(character->m_roi->GetName()); LegoEntity* entity = character->m_roi->GetEntity(); if (entity != NULL) { @@ -365,11 +365,11 @@ void LegoCharacterManager::FUN_10083db0(LegoROI* p_roi) if (info != NULL) { if (info->m_actor != NULL) { - info->m_actor->ClearFlag(LegoEntity::c_bit2); + info->m_actor->ClearFlag(LegoEntity::c_managerOwned); delete info->m_actor; } - else if (entity != NULL && entity->GetFlagsIsSet(LegoEntity::c_bit2)) { - entity->ClearFlag(LegoEntity::c_bit2); + else if (entity != NULL && entity->GetFlagsIsSet(LegoEntity::c_managerOwned)) { + entity->ClearFlag(LegoEntity::c_managerOwned); delete entity; } @@ -384,7 +384,7 @@ void LegoCharacterManager::FUN_10083db0(LegoROI* p_roi) } // FUNCTION: LEGO1 0x10083f10 -void LegoCharacterManager::FUN_10083f10(LegoROI* p_roi) +void LegoCharacterManager::ReleaseAutoROI(LegoROI* p_roi) { LegoCharacter* character = NULL; LegoCharacterMap::iterator it; @@ -407,8 +407,8 @@ void LegoCharacterManager::FUN_10083f10(LegoROI* p_roi) m_characters->erase(it); - if (entity != NULL && entity->GetFlagsIsSet(LegoEntity::c_bit2)) { - entity->ClearFlag(LegoEntity::c_bit2); + if (entity != NULL && entity->GetFlagsIsSet(LegoEntity::c_managerOwned)) { + entity->ClearFlag(LegoEntity::c_managerOwned); delete entity; } } @@ -425,7 +425,7 @@ void LegoCharacterManager::RemoveROI(LegoROI* p_roi) } // FUNCTION: LEGO1 0x10084030 -LegoROI* LegoCharacterManager::CreateROI(const char* p_key) +LegoROI* LegoCharacterManager::CreateActorROI(const char* p_key) { MxBool success = FALSE; LegoROI* roi = NULL; @@ -438,14 +438,14 @@ LegoROI* LegoCharacterManager::CreateROI(const char* p_key) Tgl::Renderer* renderer = VideoManager()->GetRenderer(); ViewLODListManager* lodManager = GetViewLODListManager(); LegoTextureContainer* textureContainer = TextureContainer(); - LegoCharacterInfo* info = GetInfo(p_key); + LegoActorInfo* info = GetActorInfo(p_key); if (info == NULL) { goto done; } if (!strcmpi(p_key, "pep")) { - LegoCharacterInfo* pepper = GetInfo("pepper"); + LegoActorInfo* pepper = GetActorInfo("pepper"); info->m_unk0x0c = pepper->m_unk0x0c; info->m_unk0x10 = pepper->m_unk0x10; @@ -459,33 +459,33 @@ LegoROI* LegoCharacterManager::CreateROI(const char* p_key) roi = new LegoROI(renderer); roi->SetName(p_key); - boundingSphere.Center()[0] = g_characterLODs[c_topLOD].m_boundingSphere[0]; - boundingSphere.Center()[1] = g_characterLODs[c_topLOD].m_boundingSphere[1]; - boundingSphere.Center()[2] = g_characterLODs[c_topLOD].m_boundingSphere[2]; - boundingSphere.Radius() = g_characterLODs[c_topLOD].m_boundingSphere[3]; + boundingSphere.Center()[0] = g_actorLODs[c_topLOD].m_boundingSphere[0]; + boundingSphere.Center()[1] = g_actorLODs[c_topLOD].m_boundingSphere[1]; + boundingSphere.Center()[2] = g_actorLODs[c_topLOD].m_boundingSphere[2]; + boundingSphere.Radius() = g_actorLODs[c_topLOD].m_boundingSphere[3]; roi->SetBoundingSphere(boundingSphere); - boundingBox.Min()[0] = g_characterLODs[c_topLOD].m_boundingBox[0]; - boundingBox.Min()[1] = g_characterLODs[c_topLOD].m_boundingBox[1]; - boundingBox.Min()[2] = g_characterLODs[c_topLOD].m_boundingBox[2]; - boundingBox.Max()[0] = g_characterLODs[c_topLOD].m_boundingBox[3]; - boundingBox.Max()[1] = g_characterLODs[c_topLOD].m_boundingBox[4]; - boundingBox.Max()[2] = g_characterLODs[c_topLOD].m_boundingBox[5]; + boundingBox.Min()[0] = g_actorLODs[c_topLOD].m_boundingBox[0]; + boundingBox.Min()[1] = g_actorLODs[c_topLOD].m_boundingBox[1]; + boundingBox.Min()[2] = g_actorLODs[c_topLOD].m_boundingBox[2]; + boundingBox.Max()[0] = g_actorLODs[c_topLOD].m_boundingBox[3]; + boundingBox.Max()[1] = g_actorLODs[c_topLOD].m_boundingBox[4]; + boundingBox.Max()[2] = g_actorLODs[c_topLOD].m_boundingBox[5]; roi->SetUnknown0x80(boundingBox); comp = new CompoundObject(); roi->SetComp(comp); - for (i = 0; i < sizeOfArray(g_characterLODs) - 1; i++) { + for (i = 0; i < sizeOfArray(g_actorLODs) - 1; i++) { char lodName[256]; - LegoCharacterInfo::Part& part = info->m_parts[i]; + LegoActorInfo::Part& part = info->m_parts[i]; const char* parentName; if (i == 0 || i == 1) { parentName = part.m_unk0x04[part.m_unk0x00[part.m_unk0x08]]; } else { - parentName = g_characterLODs[i + 1].m_parentName; + parentName = g_actorLODs[i + 1].m_parentName; } ViewLODList* lodList = lodManager->Lookup(parentName); @@ -505,35 +505,34 @@ LegoROI* LegoCharacterManager::CreateROI(const char* p_key) LegoROI* childROI = new LegoROI(renderer, lodList); lodList->Release(); - childROI->SetName(g_characterLODs[i + 1].m_name); + childROI->SetName(g_actorLODs[i + 1].m_name); childROI->SetParentROI(roi); BoundingSphere childBoundingSphere; - childBoundingSphere.Center()[0] = g_characterLODs[i + 1].m_boundingSphere[0]; - childBoundingSphere.Center()[1] = g_characterLODs[i + 1].m_boundingSphere[1]; - childBoundingSphere.Center()[2] = g_characterLODs[i + 1].m_boundingSphere[2]; - childBoundingSphere.Radius() = g_characterLODs[i + 1].m_boundingSphere[3]; + childBoundingSphere.Center()[0] = g_actorLODs[i + 1].m_boundingSphere[0]; + childBoundingSphere.Center()[1] = g_actorLODs[i + 1].m_boundingSphere[1]; + childBoundingSphere.Center()[2] = g_actorLODs[i + 1].m_boundingSphere[2]; + childBoundingSphere.Radius() = g_actorLODs[i + 1].m_boundingSphere[3]; childROI->SetBoundingSphere(childBoundingSphere); BoundingBox childBoundingBox; - childBoundingBox.Min()[0] = g_characterLODs[i + 1].m_boundingBox[0]; - childBoundingBox.Min()[1] = g_characterLODs[i + 1].m_boundingBox[1]; - childBoundingBox.Min()[2] = g_characterLODs[i + 1].m_boundingBox[2]; - childBoundingBox.Max()[0] = g_characterLODs[i + 1].m_boundingBox[3]; - childBoundingBox.Max()[1] = g_characterLODs[i + 1].m_boundingBox[4]; - childBoundingBox.Max()[2] = g_characterLODs[i + 1].m_boundingBox[5]; + childBoundingBox.Min()[0] = g_actorLODs[i + 1].m_boundingBox[0]; + childBoundingBox.Min()[1] = g_actorLODs[i + 1].m_boundingBox[1]; + childBoundingBox.Min()[2] = g_actorLODs[i + 1].m_boundingBox[2]; + childBoundingBox.Max()[0] = g_actorLODs[i + 1].m_boundingBox[3]; + childBoundingBox.Max()[1] = g_actorLODs[i + 1].m_boundingBox[4]; + childBoundingBox.Max()[2] = g_actorLODs[i + 1].m_boundingBox[5]; childROI->SetUnknown0x80(childBoundingBox); CalcLocalTransform( - Mx3DPointFloat(g_characterLODs[i + 1].m_position), - Mx3DPointFloat(g_characterLODs[i + 1].m_direction), - Mx3DPointFloat(g_characterLODs[i + 1].m_up), + Mx3DPointFloat(g_actorLODs[i + 1].m_position), + Mx3DPointFloat(g_actorLODs[i + 1].m_direction), + Mx3DPointFloat(g_actorLODs[i + 1].m_up), mat ); childROI->WrappedSetLocalTransform(mat); - if (g_characterLODs[i + 1].m_flags & LegoCharacterLOD::c_flag1 && - (i != 0 || part.m_unk0x00[part.m_unk0x08] != 0)) { + if (g_actorLODs[i + 1].m_flags & LegoActorLOD::c_flag1 && (i != 0 || part.m_unk0x00[part.m_unk0x08] != 0)) { LegoTextureInfo* textureInfo = textureContainer->Get(part.m_unk0x10[part.m_unk0x0c[part.m_unk0x14]]); @@ -542,7 +541,7 @@ LegoROI* LegoCharacterManager::CreateROI(const char* p_key) childROI->FUN_100a9170(1.0F, 1.0F, 1.0F, 0.0F); } } - else if (g_characterLODs[i + 1].m_flags & LegoCharacterLOD::c_flag2 || (i == 0 && part.m_unk0x00[part.m_unk0x08] == 0)) { + else if (g_actorLODs[i + 1].m_flags & LegoActorLOD::c_flag2 || (i == 0 && part.m_unk0x00[part.m_unk0x08] == 0)) { LegoFloat red, green, blue, alpha; childROI->FUN_100a9bf0(part.m_unk0x10[part.m_unk0x0c[part.m_unk0x14]], red, green, blue, alpha); childROI->FUN_100a9170(red, green, blue, alpha); @@ -552,9 +551,9 @@ LegoROI* LegoCharacterManager::CreateROI(const char* p_key) } CalcLocalTransform( - Mx3DPointFloat(g_characterLODs[c_topLOD].m_position), - Mx3DPointFloat(g_characterLODs[c_topLOD].m_direction), - Mx3DPointFloat(g_characterLODs[c_topLOD].m_up), + Mx3DPointFloat(g_actorLODs[c_topLOD].m_position), + Mx3DPointFloat(g_actorLODs[c_topLOD].m_direction), + Mx3DPointFloat(g_actorLODs[c_topLOD].m_up), mat ); roi->WrappedSetLocalTransform(mat); @@ -576,12 +575,12 @@ done: MxBool LegoCharacterManager::FUN_100849a0(LegoROI* p_roi, LegoTextureInfo* p_textureInfo) { LegoResult result = SUCCESS; - LegoROI* head = FindChildROI(p_roi, g_characterLODs[c_headLOD].m_name); + LegoROI* head = FindChildROI(p_roi, g_actorLODs[c_headLOD].m_name); if (head != NULL) { char lodName[256]; - ViewLODList* lodList = GetViewLODListManager()->Lookup(g_characterLODs[c_headLOD].m_parentName); + ViewLODList* lodList = GetViewLODListManager()->Lookup(g_actorLODs[c_headLOD].m_parentName); MxS32 lodSize = lodList->Size(); sprintf(lodName, "%s%s%d", p_roi->GetName(), "head", g_unk0x100fc4e8++); ViewLODList* dupLodList = GetViewLODListManager()->Create(lodName, lodSize); @@ -589,8 +588,8 @@ MxBool LegoCharacterManager::FUN_100849a0(LegoROI* p_roi, LegoTextureInfo* p_tex Tgl::Renderer* renderer = VideoManager()->GetRenderer(); if (p_textureInfo == NULL) { - LegoCharacterInfo* info = GetInfo(p_roi->GetName()); - LegoCharacterInfo::Part& part = info->m_parts[c_headPart]; + LegoActorInfo* info = GetActorInfo(p_roi->GetName()); + LegoActorInfo::Part& part = info->m_parts[c_headPart]; p_textureInfo = TextureContainer()->Get(part.m_unk0x10[part.m_unk0x0c[part.m_unk0x14]]); } @@ -620,10 +619,10 @@ MxBool LegoCharacterManager::FUN_100849a0(LegoROI* p_roi, LegoTextureInfo* p_tex } // FUNCTION: LEGO1 0x10084c00 -MxBool LegoCharacterManager::Exists(const char* p_key) +MxBool LegoCharacterManager::IsActor(const char* p_name) { - for (MxU32 i = 0; i < sizeOfArray(g_characterInfo); i++) { - if (!strcmpi(g_characterInfo[i].m_name, p_key)) { + for (MxU32 i = 0; i < sizeOfArray(g_actorInfo); i++) { + if (!strcmpi(g_actorInfo[i].m_name, p_name)) { return TRUE; } } @@ -632,9 +631,9 @@ MxBool LegoCharacterManager::Exists(const char* p_key) } // FUNCTION: LEGO1 0x10084c40 -LegoExtraActor* LegoCharacterManager::GetActor(const char* p_key) +LegoExtraActor* LegoCharacterManager::GetExtraActor(const char* p_name) { - LegoCharacterInfo* info = GetInfo(p_key); + LegoActorInfo* info = GetActorInfo(p_name); if (info != NULL) { return info->m_actor; @@ -644,36 +643,36 @@ LegoExtraActor* LegoCharacterManager::GetActor(const char* p_key) } // FUNCTION: LEGO1 0x10084c60 -LegoCharacterInfo* LegoCharacterManager::GetInfo(const char* p_key) +LegoActorInfo* LegoCharacterManager::GetActorInfo(const char* p_name) { MxU32 i; - for (i = 0; i < sizeOfArray(g_characterInfo); i++) { - if (!strcmpi(g_characterInfo[i].m_name, p_key)) { + for (i = 0; i < sizeOfArray(g_actorInfo); i++) { + if (!strcmpi(g_actorInfo[i].m_name, p_name)) { break; } } - if (i < sizeOfArray(g_characterInfo)) { - return &g_characterInfo[i]; + if (i < sizeOfArray(g_actorInfo)) { + return &g_actorInfo[i]; } return NULL; } // FUNCTION: LEGO1 0x10084cb0 -LegoCharacterInfo* LegoCharacterManager::GetInfo(LegoROI* p_roi) +LegoActorInfo* LegoCharacterManager::GetActorInfo(LegoROI* p_roi) { MxU32 i; - for (i = 0; i < sizeOfArray(g_characterInfo); i++) { - if (g_characterInfo[i].m_roi == p_roi) { + for (i = 0; i < sizeOfArray(g_actorInfo); i++) { + if (g_actorInfo[i].m_roi == p_roi) { break; } } - if (i < sizeOfArray(g_characterInfo)) { - return &g_characterInfo[i]; + if (i < sizeOfArray(g_actorInfo)) { + return &g_actorInfo[i]; } return NULL; @@ -703,13 +702,13 @@ LegoROI* LegoCharacterManager::FindChildROI(LegoROI* p_roi, const char* p_name) // FUNCTION: LEGO1 0x10084ec0 MxBool LegoCharacterManager::SwitchHat(LegoROI* p_roi) { - LegoCharacterInfo* info = GetInfo(p_roi->GetName()); + LegoActorInfo* info = GetActorInfo(p_roi->GetName()); if (info == NULL) { return FALSE; } - LegoCharacterInfo::Part& part = info->m_parts[c_infohatPart]; + LegoActorInfo::Part& part = info->m_parts[c_infohatPart]; part.m_unk0x08++; MxU8 unk0x00 = part.m_unk0x00[part.m_unk0x08]; @@ -719,7 +718,7 @@ MxBool LegoCharacterManager::SwitchHat(LegoROI* p_roi) unk0x00 = part.m_unk0x00[part.m_unk0x08]; } - LegoROI* childROI = FindChildROI(p_roi, g_characterLODs[c_infohatLOD].m_name); + LegoROI* childROI = FindChildROI(p_roi, g_actorLODs[c_infohatLOD].m_name); if (childROI != NULL) { char lodName[256]; @@ -757,7 +756,7 @@ MxBool LegoCharacterManager::SwitchHat(LegoROI* p_roi) // FUNCTION: LEGO1 0x10085140 MxU32 LegoCharacterManager::FUN_10085140(LegoROI* p_roi, MxBool p_und) { - LegoCharacterInfo* info = GetInfo(p_roi); + LegoActorInfo* info = GetActorInfo(p_roi); if (p_und) { return info->m_mood + g_unk0x100fc4dc; @@ -774,7 +773,7 @@ MxU32 LegoCharacterManager::FUN_10085140(LegoROI* p_roi, MxBool p_und) // FUNCTION: BETA10 0x100768c5 MxU8 LegoCharacterManager::GetMood(LegoROI* p_roi) { - LegoCharacterInfo* info = GetInfo(p_roi); + LegoActorInfo* info = GetActorInfo(p_roi); if (info != NULL) { return info->m_mood; @@ -803,7 +802,7 @@ void LegoCharacterManager::SetCustomizeAnimFile(const char* p_value) } // FUNCTION: LEGO1 0x10085210 -LegoROI* LegoCharacterManager::FUN_10085210(const char* p_name, const char* p_lodName, MxBool p_createEntity) +LegoROI* LegoCharacterManager::CreateAutoROI(const char* p_name, const char* p_lodName, MxBool p_createEntity) { LegoROI* roi = NULL; @@ -853,8 +852,8 @@ LegoROI* LegoCharacterManager::FUN_10085210(const char* p_name, const char* p_lo LegoEntity* entity = new LegoEntity(); entity->SetROI(roi, FALSE, FALSE); - entity->SetType(LegoEntity::e_unk4); - entity->SetFlag(LegoActor::c_bit2); + entity->SetType(LegoEntity::e_autoROI); + entity->SetFlag(LegoEntity::c_managerOwned); } } } @@ -907,5 +906,5 @@ MxResult LegoCharacterManager::FUN_10085870(LegoROI* p_roi) // FUNCTION: LEGO1 0x10085a80 LegoROI* LegoCharacterManager::FUN_10085a80(const char* p_name, const char* p_lodName, MxBool p_createEntity) { - return FUN_10085210(p_name, p_lodName, p_createEntity); + return CreateAutoROI(p_name, p_lodName, p_createEntity); } diff --git a/LEGO1/lego/legoomni/src/common/legogamestate.cpp b/LEGO1/lego/legoomni/src/common/legogamestate.cpp index 64f4c494..be09e19b 100644 --- a/LEGO1/lego/legoomni/src/common/legogamestate.cpp +++ b/LEGO1/lego/legoomni/src/common/legogamestate.cpp @@ -177,7 +177,7 @@ void LegoGameState::SetActor(MxU8 p_actorId) IslePathActor* newActor = new IslePathActor(); const char* actorName = LegoActor::GetActorName(m_actorId); - LegoROI* roi = CharacterManager()->GetROI(actorName, FALSE); + LegoROI* roi = CharacterManager()->GetActorROI(actorName, FALSE); MxDSAction action; action.SetAtomId(*g_isleScript); diff --git a/LEGO1/lego/legoomni/src/entity/legoactor.cpp b/LEGO1/lego/legoomni/src/entity/legoactor.cpp index 79c6571e..6ab78b63 100644 --- a/LEGO1/lego/legoomni/src/entity/legoactor.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoactor.cpp @@ -129,7 +129,7 @@ void LegoActor::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) for (MxU32 i = 1; i <= sizeOfArray(g_actorNames) - 1; i++) { if (!strcmpi(name, g_actorNames[i])) { - m_type = e_character; + m_type = e_actor; m_actorId = i; break; } diff --git a/LEGO1/lego/legoomni/src/entity/legoentity.cpp b/LEGO1/lego/legoomni/src/entity/legoentity.cpp index 4d9324ad..de931cd2 100644 --- a/LEGO1/lego/legoomni/src/entity/legoentity.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoentity.cpp @@ -31,7 +31,7 @@ void LegoEntity::Init() m_flags = 0; m_actionType = Extra::ActionType::e_unknown; m_targetEntityId = -1; - m_type = e_unk4; + m_type = e_autoROI; } // FUNCTION: LEGO1 0x10010650 @@ -93,7 +93,7 @@ void LegoEntity::Destroy(MxBool p_fromDestructor) m_roi->SetEntity(NULL); } - CharacterManager()->FUN_10083db0(m_roi); + CharacterManager()->ReleaseActor(m_roi); } else { VideoManager()->Get3DManager()->GetLego3DView()->Remove(*m_roi); @@ -252,7 +252,7 @@ void LegoEntity::VTable0x34(MxBool p_und) const LegoChar* roiName = m_roi->GetName(); switch (m_type) { - case e_character: + case e_actor: objectId = CharacterManager()->FUN_10085140(m_roi, p_und); break; case e_unk1: @@ -285,7 +285,7 @@ void LegoEntity::VTable0x38() void LegoEntity::VTable0x3c() { switch (m_type) { - case e_character: + case e_actor: CharacterManager()->SwitchHat(m_roi); break; case e_unk1: @@ -366,7 +366,7 @@ MxLong LegoEntity::Notify(MxParam& p_param) break; case 6: switch (m_type) { - case e_character: + case e_actor: case e_unk1: break; case e_plant: @@ -375,7 +375,7 @@ MxLong LegoEntity::Notify(MxParam& p_param) case e_building: BuildingManager()->FUN_10030000(this); break; - case e_unk4: + case e_autoROI: break; } } diff --git a/LEGO1/lego/legoomni/src/entity/legoworld.cpp b/LEGO1/lego/legoomni/src/entity/legoworld.cpp index 71ffefae..9da873e0 100644 --- a/LEGO1/lego/legoomni/src/entity/legoworld.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoworld.cpp @@ -187,7 +187,7 @@ void LegoWorld::Destroy(MxBool p_fromDestructor) while (cursor.First(entity)) { cursor.Detach(); - if (!(entity->GetFlags() & LegoEntity::c_bit2)) { + if (!(entity->GetFlags() & LegoEntity::c_managerOwned)) { delete entity; } } diff --git a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp index 5f8662df..ffdb2b63 100644 --- a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp @@ -188,7 +188,7 @@ LegoChar* LegoAnimPresenter::FUN_10069150(const LegoChar* p_und1) { LegoChar* str; - if (LegoCharacterManager::Exists(p_und1 + 1)) { + if (LegoCharacterManager::IsActor(p_und1 + 1)) { str = new LegoChar[strlen(p_und1)]; if (str != NULL) { @@ -232,7 +232,7 @@ void LegoAnimPresenter::FUN_100692b0() src = str; } - roi = CharacterManager()->GetROI(src, TRUE); + roi = CharacterManager()->GetActorROI(src, TRUE); if (roi != NULL && str[0] == '*') { roi->SetVisibility(FALSE); @@ -268,7 +268,7 @@ void LegoAnimPresenter::FUN_100692b0() strlwr(lodName); LegoChar* und = FUN_10069150(str); - roi = CharacterManager()->FUN_10085210(und, lodName, TRUE); + roi = CharacterManager()->CreateAutoROI(und, lodName, TRUE); if (roi != NULL) { roi->SetVisibility(FALSE); @@ -313,7 +313,7 @@ void LegoAnimPresenter::FUN_100695c0() strlwr(lodName); - CharacterManager()->FUN_10085210(actorName, lodName, FALSE); + CharacterManager()->CreateAutoROI(actorName, lodName, FALSE); FUN_100698b0(rois, actorName); } } @@ -530,8 +530,8 @@ void LegoAnimPresenter::FUN_1006aa60() while (cursor.Next(roi)) { const char* name = roi->GetName(); - if (m_unk0x96 || !CharacterManager()->Exists(name)) { - CharacterManager()->FUN_10083c30(name); + if (m_unk0x96 || !CharacterManager()->IsActor(name)) { + CharacterManager()->ReleaseActor(name); } } } diff --git a/LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp b/LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp index ce448d71..4a2cf715 100644 --- a/LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp @@ -224,7 +224,7 @@ MxResult LegoModelPresenter::FUN_1007ff70( if (p_entity != NULL) { p_entity->SetROI(m_roi, TRUE, TRUE); - p_entity->ClearFlag(LegoEntity::c_bit2); + p_entity->ClearFlag(LegoEntity::c_managerOwned); } else { p_world->GetROIList().push_back(m_roi); @@ -249,9 +249,10 @@ void LegoModelPresenter::ReadyTickle() ((LegoEntityPresenter*) m_compositePresenter) ->GetInternalEntity() ->SetFlags( - ((LegoEntityPresenter*) m_compositePresenter)->GetInternalEntity()->GetFlags() & ~LegoEntity::c_bit2 + ((LegoEntityPresenter*) m_compositePresenter)->GetInternalEntity()->GetFlags() & + ~LegoEntity::c_managerOwned ); - ((LegoEntityPresenter*) m_compositePresenter)->GetInternalEntity()->SetType(LegoEntity::e_character); + ((LegoEntityPresenter*) m_compositePresenter)->GetInternalEntity()->SetType(LegoEntity::e_actor); } ParseExtra(); @@ -276,7 +277,7 @@ void LegoModelPresenter::ReadyTickle() ->GetInternalEntity() ->SetFlags( ((LegoEntityPresenter*) m_compositePresenter)->GetInternalEntity()->GetFlags() & - ~LegoEntity::c_bit2 + ~LegoEntity::c_managerOwned ); } @@ -306,7 +307,7 @@ void LegoModelPresenter::ParseExtra() char* token = strtok(output, g_parseExtraTokens); if (m_roi == NULL) { - m_roi = CharacterManager()->GetROI(token, FALSE); + m_roi = CharacterManager()->GetActorROI(token, FALSE); m_addedToView = FALSE; } } diff --git a/LEGO1/lego/legoomni/src/video/legophonemepresenter.cpp b/LEGO1/lego/legoomni/src/video/legophonemepresenter.cpp index 5fbbba21..824a4ce2 100644 --- a/LEGO1/lego/legoomni/src/video/legophonemepresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legophonemepresenter.cpp @@ -52,7 +52,7 @@ void LegoPhonemePresenter::StartingTickle() m_unk0x84 = TRUE; } else { - entityROI = CharacterManager()->GetROI(m_roiName.GetData(), TRUE); + entityROI = CharacterManager()->GetActorROI(m_roiName.GetData(), TRUE); } head = entityROI->FindChildROI("head", entityROI); @@ -143,7 +143,7 @@ void LegoPhonemePresenter::EndAction() roi = FindROI(m_roiName.GetData()); } else { - roi = CharacterManager()->GetROI(m_roiName.GetData(), TRUE); + roi = CharacterManager()->GetActorROI(m_roiName.GetData(), TRUE); } if (roi != NULL) { @@ -151,7 +151,7 @@ void LegoPhonemePresenter::EndAction() } if (!m_unk0x84) { - CharacterManager()->FUN_10083c30(m_roiName.GetData()); + CharacterManager()->ReleaseActor(m_roiName.GetData()); } TextureContainer()->EraseCached(phoneme->VTable0x10()); @@ -164,7 +164,7 @@ void LegoPhonemePresenter::EndAction() } if (!m_unk0x84) { - CharacterManager()->FUN_10083c30(m_roiName.GetData()); + CharacterManager()->ReleaseActor(m_roiName.GetData()); } } } diff --git a/LEGO1/lego/legoomni/src/worlds/infocenter.cpp b/LEGO1/lego/legoomni/src/worlds/infocenter.cpp index 8308cf11..af05132d 100644 --- a/LEGO1/lego/legoomni/src/worlds/infocenter.cpp +++ b/LEGO1/lego/legoomni/src/worlds/infocenter.cpp @@ -1308,7 +1308,7 @@ void Infocenter::Reset() PlantManager()->FUN_10027120(); BuildingManager()->FUN_10030590(); AnimationManager()->Reset(FALSE); - CharacterManager()->FUN_100832a0(); + CharacterManager()->ReleaseAllActors(); GameState()->SetCurrentAct(LegoGameState::e_act1); GameState()->SetPreviousArea(LegoGameState::e_undefined); GameState()->SetUnknown0x42c(LegoGameState::e_undefined);