diff options
| author | Nicola Mettifogo | 2009-03-23 11:38:09 +0000 | 
|---|---|---|
| committer | Nicola Mettifogo | 2009-03-23 11:38:09 +0000 | 
| commit | d18274d0ee2bf8effcb36b726fc833503f7924aa (patch) | |
| tree | 33eb6cd429e8d86e0f923370661765f30086f55d /engines/parallaction/exec_ns.cpp | |
| parent | ca993d8b00e54c8523b5b9e708c94d3fc871e6db (diff) | |
| download | scummvm-rg350-d18274d0ee2bf8effcb36b726fc833503f7924aa.tar.gz scummvm-rg350-d18274d0ee2bf8effcb36b726fc833503f7924aa.tar.bz2 scummvm-rg350-d18274d0ee2bf8effcb36b726fc833503f7924aa.zip  | |
Implemented all variants of IF script instruction. Program class has been changed to store an Array of instruction instead of a List, so that references to instructions are integers.
svn-id: r39631
Diffstat (limited to 'engines/parallaction/exec_ns.cpp')
| -rw-r--r-- | engines/parallaction/exec_ns.cpp | 25 | 
1 files changed, 12 insertions, 13 deletions
diff --git a/engines/parallaction/exec_ns.cpp b/engines/parallaction/exec_ns.cpp index f50b3999ec..4c17f4910a 100644 --- a/engines/parallaction/exec_ns.cpp +++ b/engines/parallaction/exec_ns.cpp @@ -67,7 +67,7 @@ extern const char *_instructionNamesRes_ns[];  DECLARE_INSTRUCTION_OPCODE(on) { -	InstructionPtr inst = *ctxt._inst; +	InstructionPtr inst = ctxt._inst;  	inst->_a->_flags |= kFlagsActive;  	inst->_a->_flags &= ~kFlagsRemove; @@ -75,12 +75,12 @@ DECLARE_INSTRUCTION_OPCODE(on) {  DECLARE_INSTRUCTION_OPCODE(off) { -	(*ctxt._inst)->_a->_flags |= kFlagsRemove; +	ctxt._inst->_a->_flags |= kFlagsRemove;  }  DECLARE_INSTRUCTION_OPCODE(loop) { -	InstructionPtr inst = *ctxt._inst; +	InstructionPtr inst = ctxt._inst;  	ctxt._program->_loopCounter = inst->_opB.getValue();  	ctxt._program->_loopStart = ctxt._ip; @@ -94,7 +94,7 @@ DECLARE_INSTRUCTION_OPCODE(endloop) {  }  DECLARE_INSTRUCTION_OPCODE(inc) { -	InstructionPtr inst = *ctxt._inst; +	InstructionPtr inst = ctxt._inst;  	int16 _si = inst->_opB.getValue();  	if (inst->_flags & kInstMod) {	// mod @@ -118,13 +118,12 @@ DECLARE_INSTRUCTION_OPCODE(inc) {  DECLARE_INSTRUCTION_OPCODE(set) { -	InstructionPtr inst = *ctxt._inst; -	inst->_opA.setValue(inst->_opB.getValue()); +	ctxt._inst->_opA.setValue(ctxt._inst->_opB.getValue());  }  DECLARE_INSTRUCTION_OPCODE(put) { -	InstructionPtr inst = *ctxt._inst; +	InstructionPtr inst = ctxt._inst;  	Common::Rect r;  	inst->_a->getFrameRect(r); @@ -145,11 +144,11 @@ DECLARE_INSTRUCTION_OPCODE(show) {  }  DECLARE_INSTRUCTION_OPCODE(invalid) { -	error("Can't execute invalid opcode %i", (*ctxt._inst)->_index); +	error("Can't execute invalid opcode %i", ctxt._inst->_index);  }  DECLARE_INSTRUCTION_OPCODE(call) { -	_vm->callFunction((*ctxt._inst)->_immediate, 0); +	_vm->callFunction(ctxt._inst->_immediate, 0);  } @@ -162,17 +161,17 @@ DECLARE_INSTRUCTION_OPCODE(wait) {  DECLARE_INSTRUCTION_OPCODE(start) { -	(*ctxt._inst)->_a->_flags |= (kFlagsActing | kFlagsActive); +	ctxt._inst->_a->_flags |= (kFlagsActing | kFlagsActive);  }  DECLARE_INSTRUCTION_OPCODE(sound) { -	_vm->_activeZone = (*ctxt._inst)->_z; +	_vm->_activeZone = ctxt._inst->_z;  }  DECLARE_INSTRUCTION_OPCODE(move) { -	InstructionPtr inst = (*ctxt._inst); +	InstructionPtr inst = ctxt._inst;  	int16 x = inst->_opA.getValue();  	int16 y = inst->_opB.getValue(); @@ -187,7 +186,7 @@ DECLARE_INSTRUCTION_OPCODE(endscript) {  		ctxt._program->_status = kProgramDone;  	} -	ctxt._ip = ctxt._program->_instructions.begin(); +	ctxt._ip = 0;  	ctxt._suspend = true;  }  | 
