MYST3: Implement opcodes 27 and 28 - remove movie

This commit is contained in:
Bastien Bouclet 2012-01-16 12:26:07 +01:00
parent 044fe33b1d
commit aa1b799904
4 changed files with 39 additions and 4 deletions

View file

@ -66,6 +66,8 @@ Script::Script(Myst3Engine *vm):
OP_2( 24, movieInitFrameVarPreload, kEvalValue, kVar );
OP_4( 25, movieInitOverrridePosition, kEvalValue, kCondition, kValue, kValue );
OP_3( 26, movieInitScriptedPosition, kEvalValue, kVar, kVar );
OP_1( 27, movieRemove, kEvalValue );
OP_0( 28, movieRemoveAll );
OP_1( 29, movieSetLooping, kValue );
OP_1( 30, movieSetNotLooping, kValue );
OP_2( 35, sunspotAdd, kValue, kValue );
@ -513,6 +515,21 @@ void Script::movieInitScriptedPosition(Context &c, const Opcode &cmd) {
_vm->loadMovie(movieid, 1, false, true);
}
void Script::movieRemove(Context &c, const Opcode &cmd) {
debugC(kDebugScript, "Opcode %d: Remove movie %d ",
cmd.op, cmd.args[0]);
uint16 movieid = _vm->_state->valueOrVarValue(cmd.args[0]);
_vm->removeMovie(movieid);
}
void Script::movieRemoveAll(Context &c, const Opcode &cmd) {
debugC(kDebugScript, "Opcode %d: Remove all movies",
cmd.op);
_vm->removeMovie(0);
}
void Script::movieSetLooping(Context &c, const Opcode &cmd) {
debugC(kDebugScript, "Opcode %d: Set movie % to loop",
cmd.op, cmd.args[0]);