Skip to content

Commit 42f91b9

Browse files
bgKsev-
authored andcommitted
MOHAWK: Simplify the stored movie script opcode
1 parent 23c597a commit 42f91b9

File tree

1 file changed

+7
-29
lines changed

1 file changed

+7
-29
lines changed

engines/mohawk/riven_scripts.cpp

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -561,38 +561,16 @@ void RivenSimpleCommand::storeMovieOpcode(uint16 op, uint16 argc, uint16 *argv)
561561
// time of a specified movie. However, every use in the game is for
562562
// delaying an activateSLST opcode.
563563

564-
uint32 scriptSize = 6 + (argc - 4) * 2;
565-
566-
// Create our dummy script
567-
byte *scriptBuf = (byte *)malloc(scriptSize);
568-
WRITE_BE_UINT16(scriptBuf, 1); // One command
569-
WRITE_BE_UINT16(scriptBuf + 2, argv[3]); // One opcode
570-
WRITE_BE_UINT16(scriptBuf + 4, argc - 4); // argc - 4 args
571-
572-
for (int i = 0; i < argc - 4; i++)
573-
WRITE_BE_UINT16(scriptBuf + 6 + (i * 2), argv[i + 4]);
574-
575-
// Build a script out of 'er
576-
Common::SeekableReadStream *scriptStream = new Common::MemoryReadStream(scriptBuf, scriptSize, DisposeAfterUse::YES);
577-
RivenScriptPtr script = _vm->_scriptMan->readScript(scriptStream);
578-
579564
uint32 delayTime = (argv[1] << 16) + argv[2];
580565

581-
if (delayTime > 0) {
582-
// Store the script
583-
RivenScriptManager::StoredMovieOpcode storedOp;
584-
storedOp.script = script;
585-
storedOp.time = delayTime;
586-
storedOp.id = argv[0];
587-
588-
// Store the opcode for later
589-
_vm->_scriptMan->setStoredMovieOpcode(storedOp);
590-
} else {
591-
// Run immediately if we have no delay
592-
_vm->_scriptMan->runScript(script, false);
593-
}
566+
// Store the script
567+
RivenScriptManager::StoredMovieOpcode storedOp;
568+
storedOp.script = _vm->_scriptMan->createScriptFromData(1, argv[3], 1, argv[4]);
569+
storedOp.time = delayTime;
570+
storedOp.id = argv[0];
594571

595-
delete scriptStream;
572+
// Store the opcode for later
573+
_vm->_scriptMan->setStoredMovieOpcode(storedOp);
596574
}
597575

598576
// Command 39: activate PLST record (card picture lists)

0 commit comments

Comments
 (0)