2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 21:07:42 +00:00

Fix doors and various area streaming bugs

This commit is contained in:
2018-05-01 17:43:31 -07:00
parent 711c3e0d2c
commit 734b25cad3
35 changed files with 189 additions and 284 deletions

View File

@@ -474,8 +474,8 @@ void CWorld::TravelToArea(TAreaId aid, CStateManager& mgr, bool skipLoadOther)
return;
x70_24_currentAreaNeedsAllocation = false;
x68_curAreaId = aid;
while (CGameArea* toDeallocateAreas = x4c_chainHeads[0])
CGameArea* toDeallocateAreas = x4c_chainHeads[0];
while (toDeallocateAreas)
{
if (toDeallocateAreas->Invalidate(&mgr))
{
@@ -485,13 +485,14 @@ void CWorld::TravelToArea(TAreaId aid, CStateManager& mgr, bool skipLoadOther)
toDeallocateAreas = toDeallocateAreas->x130_next;
}
while (CGameArea* aliveAreas = x4c_chainHeads[3])
CGameArea* aliveAreas = x4c_chainHeads[3];
while (aliveAreas)
{
MoveToChain(aliveAreas, EChain::AliveJudgement);
aliveAreas = aliveAreas->x130_next;
}
while (CGameArea* loadingAreas = x4c_chainHeads[2])
CGameArea* loadingAreas = x4c_chainHeads[2];
while (loadingAreas)
{
MoveToChain(loadingAreas, EChain::ToDeallocate);
loadingAreas = loadingAreas->x130_next;
@@ -531,15 +532,16 @@ void CWorld::TravelToArea(TAreaId aid, CStateManager& mgr, bool skipLoadOther)
}
}
}
while (CGameArea* judgementArea = x4c_chainHeads[4])
CGameArea* judgementArea = x4c_chainHeads[4];
while (judgementArea)
{
MoveToChain(judgementArea, EChain::ToDeallocate);
judgementArea = judgementArea->x130_next;
}
size_t toStreamCount = 0;
while (CGameArea* toDeallocateAreas = x4c_chainHeads[0])
toDeallocateAreas = x4c_chainHeads[0];
while (toDeallocateAreas)
{
toDeallocateAreas->RemoveStaticGeometry();
toDeallocateAreas = toDeallocateAreas->x130_next;