MOHAWK: Use movie slots instead of movie ids for stored opcodes
Fixes Trac#9873.
This commit is contained in:
parent
afe27c6de8
commit
31d428fd02
3 changed files with 8 additions and 8 deletions
|
@ -47,7 +47,7 @@ RivenScriptManager::RivenScriptManager(MohawkEngine_Riven *vm) :
|
||||||
_stoppingAllScripts(false) {
|
_stoppingAllScripts(false) {
|
||||||
|
|
||||||
_storedMovieOpcode.time = 0;
|
_storedMovieOpcode.time = 0;
|
||||||
_storedMovieOpcode.id = 0;
|
_storedMovieOpcode.slot = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RivenScriptManager::~RivenScriptManager() {
|
RivenScriptManager::~RivenScriptManager() {
|
||||||
|
@ -101,7 +101,7 @@ void RivenScriptManager::stopAllScripts() {
|
||||||
void RivenScriptManager::setStoredMovieOpcode(const StoredMovieOpcode &op) {
|
void RivenScriptManager::setStoredMovieOpcode(const StoredMovieOpcode &op) {
|
||||||
clearStoredMovieOpcode();
|
clearStoredMovieOpcode();
|
||||||
_storedMovieOpcode.script = op.script;
|
_storedMovieOpcode.script = op.script;
|
||||||
_storedMovieOpcode.id = op.id;
|
_storedMovieOpcode.slot = op.slot;
|
||||||
_storedMovieOpcode.time = op.time;
|
_storedMovieOpcode.time = op.time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ void RivenScriptManager::runStoredMovieOpcode() {
|
||||||
void RivenScriptManager::clearStoredMovieOpcode() {
|
void RivenScriptManager::clearStoredMovieOpcode() {
|
||||||
_storedMovieOpcode.script = RivenScriptPtr();
|
_storedMovieOpcode.script = RivenScriptPtr();
|
||||||
_storedMovieOpcode.time = 0;
|
_storedMovieOpcode.time = 0;
|
||||||
_storedMovieOpcode.id = 0;
|
_storedMovieOpcode.slot = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RivenScriptManager::runScript(const RivenScriptPtr &script, bool queue) {
|
void RivenScriptManager::runScript(const RivenScriptPtr &script, bool queue) {
|
||||||
|
@ -573,7 +573,7 @@ void RivenSimpleCommand::storeMovieOpcode(uint16 op, const ArgumentArray &args)
|
||||||
RivenScriptManager::StoredMovieOpcode storedOp;
|
RivenScriptManager::StoredMovieOpcode storedOp;
|
||||||
storedOp.script = _vm->_scriptMan->createScriptFromData(1, args[3], 1, args[4]);
|
storedOp.script = _vm->_scriptMan->createScriptFromData(1, args[3], 1, args[4]);
|
||||||
storedOp.time = delayTime;
|
storedOp.time = delayTime;
|
||||||
storedOp.id = args[0];
|
storedOp.slot = args[0];
|
||||||
|
|
||||||
// Store the opcode for later
|
// Store the opcode for later
|
||||||
_vm->_scriptMan->setStoredMovieOpcode(storedOp);
|
_vm->_scriptMan->setStoredMovieOpcode(storedOp);
|
||||||
|
|
|
@ -212,10 +212,10 @@ public:
|
||||||
struct StoredMovieOpcode {
|
struct StoredMovieOpcode {
|
||||||
RivenScriptPtr script;
|
RivenScriptPtr script;
|
||||||
uint32 time;
|
uint32 time;
|
||||||
uint16 id;
|
uint16 slot;
|
||||||
};
|
};
|
||||||
|
|
||||||
uint16 getStoredMovieOpcodeID() { return _storedMovieOpcode.id; }
|
uint16 getStoredMovieOpcodeSlot() { return _storedMovieOpcode.slot; }
|
||||||
uint32 getStoredMovieOpcodeTime() { return _storedMovieOpcode.time; }
|
uint32 getStoredMovieOpcodeTime() { return _storedMovieOpcode.time; }
|
||||||
void setStoredMovieOpcode(const StoredMovieOpcode &op);
|
void setStoredMovieOpcode(const StoredMovieOpcode &op);
|
||||||
void runStoredMovieOpcode();
|
void runStoredMovieOpcode();
|
||||||
|
|
|
@ -257,9 +257,9 @@ void RivenVideo::playBlocking(int32 endTime) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute the stored opcode
|
// Execute the stored opcode
|
||||||
uint16 storedOpcodeId = _vm->_scriptMan->getStoredMovieOpcodeID();
|
uint16 storedOpcodeMovieSlot = _vm->_scriptMan->getStoredMovieOpcodeSlot();
|
||||||
uint32 storedOpcodeTime = _vm->_scriptMan->getStoredMovieOpcodeTime();
|
uint32 storedOpcodeTime = _vm->_scriptMan->getStoredMovieOpcodeTime();
|
||||||
if (_id == storedOpcodeId && getTime() >= storedOpcodeTime) { // CHECKME: Suspicious use of time units
|
if (_slot == storedOpcodeMovieSlot && getTime() >= storedOpcodeTime) { // CHECKME: Suspicious use of time units
|
||||||
_vm->_scriptMan->runStoredMovieOpcode();
|
_vm->_scriptMan->runStoredMovieOpcode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue