Skip to content

Commit 078024a

Browse files
committed
- Hardcoded bugfix for Vegas junction
1 parent bcba884 commit 078024a

3 files changed

Lines changed: 30 additions & 3 deletions

File tree

src_rebuild/DebugOverlay.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,18 @@ void DrawDebugOverlays()
186186
);
187187

188188
PrintString(tempBuf, 10, 195);
189+
190+
sprintf(tempBuf, "c %d %d %d %d",
191+
(int)(*roadInfo.ConnectIdx)[0], (int)(*roadInfo.ConnectIdx)[1], (int)(*roadInfo.ConnectIdx)[2], (int)(*roadInfo.ConnectIdx)[3]);
192+
193+
PrintString(tempBuf, 10, 205);
189194
}
190195
else if(IS_JUNCTION_SURFACE(roadInfo.surfId))
191196
{
192197
DRIVER2_JUNCTION* junc = GET_JUNCTION(roadInfo.surfId);
193198

194-
sprintf(tempBuf, "JUN %d flg %d",roadInfo.surfId, junc->flags);
199+
sprintf(tempBuf, "JUN %d flg %d - c %d %d %d %d",roadInfo.surfId, junc->flags,
200+
(int)(*roadInfo.ConnectIdx)[0], (int)(*roadInfo.ConnectIdx)[1], (int)(*roadInfo.ConnectIdx)[2], (int)(*roadInfo.ConnectIdx)[3]);
195201

196202
PrintString(tempBuf, 10, 180);
197203
}

src_rebuild/Game/C/civ_ai.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ int GetNextRoadInfo(CAR_DATA* cp, int randomExit, int* turnAngle, int* startDist
535535
exitCnt++;
536536
} while (exitCnt < 3);
537537

538-
if (leftLane != rightLane && numExits != 1)
538+
if (leftLane != rightLane && numExits != 1 && ROAD_LANES_COUNT(&currentRoadInfo) > 1)
539539
{
540540
if (cp->ai.c.currentLane == leftLane)
541541
{

src_rebuild/Game/C/dr2roads.c

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ int GetSurfaceRoadInfo(DRIVER2_ROAD_INFO* outRoadInfo, int surfId)
9494
{
9595
DRIVER2_CURVE* curve;
9696
DRIVER2_STRAIGHT* straight;
97+
DRIVER2_JUNCTION* junction;
9798

9899
ClearMem((char*)outRoadInfo, sizeof(DRIVER2_ROAD_INFO));
99100
outRoadInfo->surfId = surfId;
@@ -116,6 +117,11 @@ int GetSurfaceRoadInfo(DRIVER2_ROAD_INFO* outRoadInfo, int surfId)
116117
outRoadInfo->AILanes = straight->AILanes;
117118
return 1;
118119
}
120+
else if (IS_JUNCTION_SURFACE(surfId))
121+
{
122+
junction = GET_JUNCTION(surfId);
123+
outRoadInfo->ConnectIdx = &junction->ExitIdx;
124+
}
119125

120126
return 0;
121127
}
@@ -166,7 +172,7 @@ void ProcessStraightsDriver2Lump(char *lump_file, int lump_size)
166172
Getlong((char *)&NumDriver2Straights, lump_file);
167173
Driver2StraightsPtr = (DRIVER2_STRAIGHT *)(lump_file + 4);
168174

169-
// [A] patch chicago roads
175+
// [A] patch Chicago & Vegas roads
170176
if (GameLevel == 0 && gDisableChicagoBridges)
171177
{
172178
DRIVER2_STRAIGHT* str;
@@ -196,6 +202,14 @@ void ProcessStraightsDriver2Lump(char *lump_file, int lump_size)
196202
}
197203
}
198204
}
205+
else if (GameLevel == 2)
206+
{
207+
int i;
208+
DRIVER2_STRAIGHT* str;
209+
210+
Driver2StraightsPtr[348].ConnectIdx[2] = 8244;
211+
Driver2StraightsPtr[348].ConnectIdx[3] = 351;
212+
}
199213
}
200214

201215
// [D] [T]
@@ -233,6 +247,13 @@ void ProcessJunctionsDriver2Lump(char *lump_file, int lump_size, int fix)
233247
old++;
234248
}
235249
}
250+
251+
// [A] patch Vegas roads
252+
if (GameLevel == 2)
253+
{
254+
Driver2JunctionsPtr[8244 & 0x1fff].ExitIdx[1] = 348;
255+
Driver2JunctionsPtr[8244 & 0x1fff].ExitIdx[3] = 347;
256+
}
236257
}
237258

238259
// [D] [T]

0 commit comments

Comments
 (0)