diff options
author | Nikolay Korolev <nickvnuk@gmail.com> | 2020-03-28 13:24:55 +0100 |
---|---|---|
committer | Nikolay Korolev <nickvnuk@gmail.com> | 2020-03-28 13:24:55 +0100 |
commit | 9fb101fdd96c82f73f8b09a75a2f248e1ccc0f18 (patch) | |
tree | 6e220fddfcabc63c477335fb1ddccefe7b6d5e0d /src/control/RoadBlocks.cpp | |
parent | garages part 1 (diff) | |
parent | remove include <new> from common.h (diff) | |
download | re3-9fb101fdd96c82f73f8b09a75a2f248e1ccc0f18.tar re3-9fb101fdd96c82f73f8b09a75a2f248e1ccc0f18.tar.gz re3-9fb101fdd96c82f73f8b09a75a2f248e1ccc0f18.tar.bz2 re3-9fb101fdd96c82f73f8b09a75a2f248e1ccc0f18.tar.lz re3-9fb101fdd96c82f73f8b09a75a2f248e1ccc0f18.tar.xz re3-9fb101fdd96c82f73f8b09a75a2f248e1ccc0f18.tar.zst re3-9fb101fdd96c82f73f8b09a75a2f248e1ccc0f18.zip |
Diffstat (limited to '')
-rw-r--r-- | src/control/RoadBlocks.cpp | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index ed092391..e39fe481 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -1,7 +1,37 @@ #include "common.h" #include "patcher.h" #include "RoadBlocks.h" +#include "PathFind.h" + +int16 &CRoadBlocks::NumRoadBlocks = *(int16*)0x95CC34; +int16 (&CRoadBlocks::RoadBlockObjects)[NUMROADBLOCKS] = *(int16(*)[NUMROADBLOCKS]) * (uintptr*)0x72B3A8; +bool (&CRoadBlocks::InOrOut)[NUMROADBLOCKS] = *(bool(*)[NUMROADBLOCKS]) * (uintptr*)0x733810; -WRAPPER void CRoadBlocks::Init(void) { EAXJMP(0x436F50); } WRAPPER void CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle*, int32, int16) { EAXJMP(0x4376A0); } -WRAPPER void CRoadBlocks::GenerateRoadBlocks(void) { EAXJMP(0x436FA0); }
\ No newline at end of file +WRAPPER void CRoadBlocks::GenerateRoadBlocks(void) { EAXJMP(0x436FA0); } + +void +CRoadBlocks::Init(void) +{ + NumRoadBlocks = 0; + for (int objId = 0; objId < ThePaths.m_numMapObjects; objId++) { + if (ThePaths.m_objectFlags[objId] & UseInRoadBlock) { + if (NumRoadBlocks < 600) { + InOrOut[NumRoadBlocks] = true; + RoadBlockObjects[NumRoadBlocks] = objId; + NumRoadBlocks++; + } else { +#ifndef MASTER + printf("Not enough room for the potential roadblocks\n"); +#endif + // FIX: Don't iterate loop after NUMROADBLOCKS + return; + } + } + } + +} + +STARTPATCHES + InjectHook(0x436F50, &CRoadBlocks::Init, PATCH_JUMP); +ENDPATCHES
\ No newline at end of file |