@@ -260,14 +260,12 @@ void PackCutsceneFile(const char* foldername)
260
260
261
261
int numCutsceneReplays = 0 ;
262
262
int numChaseReplays = 0 ;
263
- bool hasChases = false ;
264
263
for (int i = 0 ; i < MAX_FILE_CUTSCENES; i++)
265
264
{
266
265
String folderPath = String::fromPrintf (" %s/%s_%d.D2RP" , foldername, foldername, i);
267
266
FILE* fp = fopen (String::fromPrintf (" %s/%s_%d.D2RP" , foldername, foldername, i), " rb" );
268
267
if (fp)
269
268
{
270
- if (i > 1 ) hasChases = true ;
271
269
if (i == 0 )
272
270
{
273
271
MsgAccept (" Got intro cutscene\n " );
@@ -368,7 +366,7 @@ void PackCutsceneFile(const char* foldername)
368
366
MsgWarning (" No chase replays\n " );
369
367
}
370
368
371
- String folderPath = String::fromPrintf (" %s.R" , foldername);
369
+ String folderPath = String::fromPrintf (replays[ 0 ] || replays[ 1 ] ? " %s.R " : " %s_N .R" , foldername);
372
370
373
371
FILE* wp = fopen (folderPath, " wb" );
374
372
@@ -387,7 +385,7 @@ void PackCutsceneFile(const char* foldername)
387
385
char * bufptr = buffer;
388
386
offset = 2048 ;
389
387
390
- for (int i = 0 ; i < (hasChases ? MAX_FILE_CUTSCENES : 2 ) ; i++)
388
+ for (int i = 0 ; i < MAX_FILE_CUTSCENES; i++)
391
389
{
392
390
int replayId = i;
393
391
@@ -400,27 +398,26 @@ void PackCutsceneFile(const char* foldername)
400
398
if (i == 0 || i == 1 )
401
399
continue ;
402
400
403
- if (numChaseReplays > 0 )
401
+ if (numChaseReplays < 1 ) break ;
402
+
403
+ do
404
404
{
405
- do
406
- {
407
- replayId = 2 + (rand () % (MAX_FILE_CUTSCENES - 2 ));
408
- } while (replayId == i || !replays[replayId]);
409
- MsgInfo (" Picked random replay %d for chase %d\n " , replayId, i);
410
- }
405
+ replayId = 2 + (rand () % (MAX_FILE_CUTSCENES - 2 ));
406
+ } while (replayId == i || !replays[replayId]);
407
+ MsgInfo (" Picked random replay %d for chase %d\n " , replayId, i);
411
408
}
412
-
409
+
413
410
// write to file
414
411
memcpy (bufptr, replays[replayId], repsizes[replayId]);
415
-
412
+
416
413
header.data [i].offset = offset / 4 ; // because it use shorts we have an multiplier
417
414
header.data [i].size = repsizes[replayId];
418
-
415
+
419
416
int sizeStep = ((repsizes[replayId] + 1024 ) / 2048 ) * 2048 ;
420
-
417
+
421
418
if (sizeStep < 2048 )
422
419
sizeStep = 2048 ;
423
-
420
+
424
421
bufptr += sizeStep;
425
422
offset += sizeStep;
426
423
}
0 commit comments