CWorld: Make use of std::array where applicable

This commit is contained in:
Lioncash 2020-03-30 00:53:10 -04:00
parent 79b1e26052
commit 802ac13812
2 changed files with 16 additions and 10 deletions

View File

@ -233,15 +233,18 @@ TAreaId CWorld::IGetAreaId(CAssetId id) const {
} }
void CWorld::MoveToChain(CGameArea* area, EChain chain) { void CWorld::MoveToChain(CGameArea* area, EChain chain) {
if (area->x138_curChain == chain) if (area->x138_curChain == chain) {
return; return;
}
if (area->x138_curChain != EChain::Invalid) if (area->x138_curChain != EChain::Invalid) {
if (x4c_chainHeads[int(area->x138_curChain)] == area) if (x4c_chainHeads[size_t(area->x138_curChain)] == area) {
x4c_chainHeads[int(area->x138_curChain)] = area->x130_next; x4c_chainHeads[size_t(area->x138_curChain)] = area->x130_next;
}
}
area->SetChain(x4c_chainHeads[int(chain)], chain); area->SetChain(x4c_chainHeads[size_t(chain)], chain);
x4c_chainHeads[int(chain)] = area; x4c_chainHeads[size_t(chain)] = area;
} }
void CWorld::MoveAreaToAliveChain(TAreaId aid) { MoveToChain(x18_areas[aid].get(), EChain::Alive); } void CWorld::MoveAreaToAliveChain(TAreaId aid) { MoveToChain(x18_areas[aid].get(), EChain::Alive); }
@ -307,12 +310,14 @@ bool CWorld::CheckWorldComplete(CStateManager* mgr, TAreaId id, CAssetId mreaId)
r.readUint32Big(); r.readUint32Big();
x18_areas.reserve(areaCount); x18_areas.reserve(areaCount);
for (u32 i = 0; i < areaCount; ++i) for (u32 i = 0; i < areaCount; ++i) {
x18_areas.push_back(std::make_unique<CGameArea>(r, i, version)); x18_areas.push_back(std::make_unique<CGameArea>(r, i, version));
}
if (x48_chainCount < 5) { if (x48_chainCount < x4c_chainHeads.size()) {
for (int i = x48_chainCount; i < 5; ++i) for (size_t i = x48_chainCount; i < x4c_chainHeads.size(); ++i) {
x4c_chainHeads[i] = nullptr; x4c_chainHeads[i] = nullptr;
}
x48_chainCount = 5; x48_chainCount = 5;
} }

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <array>
#include <memory> #include <memory>
#include <string> #include <string>
#include <vector> #include <vector>
@ -123,7 +124,7 @@ private:
std::unique_ptr<uint8_t[]> x40_loadBuf; std::unique_ptr<uint8_t[]> x40_loadBuf;
u32 x44_bufSz; u32 x44_bufSz;
u32 x48_chainCount = 0; u32 x48_chainCount = 0;
CGameArea* x4c_chainHeads[5] = {}; std::array<CGameArea*, 5> x4c_chainHeads{};
IObjectStore& x60_objectStore; IObjectStore& x60_objectStore;
IFactory& x64_resFactory; IFactory& x64_resFactory;