diff options
| author | Johannes Schickel | 2008-03-15 09:57:41 +0000 |
|---|---|---|
| committer | Johannes Schickel | 2008-03-15 09:57:41 +0000 |
| commit | 91adba9842b516cbe02966f0d140aa2d7f5dc79c (patch) | |
| tree | 09f7d2497ecf0e68fc3ae13a8196148edcf8aed3 | |
| parent | 8e3681dbe9fcc08ff3b74190bc8bf1d48d236564 (diff) | |
| download | scummvm-rg350-91adba9842b516cbe02966f0d140aa2d7f5dc79c.tar.gz scummvm-rg350-91adba9842b516cbe02966f0d140aa2d7f5dc79c.tar.bz2 scummvm-rg350-91adba9842b516cbe02966f0d140aa2d7f5dc79c.zip | |
Implement opcodes:
- 7: o2_getCharacterScene
- 54: o2_delaySecs
- 103: o2_fillRect
svn-id: r31125
| -rw-r--r-- | engines/kyra/kyra_v2.cpp | 6 | ||||
| -rw-r--r-- | engines/kyra/kyra_v2.h | 3 | ||||
| -rw-r--r-- | engines/kyra/script_v2.cpp | 17 |
3 files changed, 23 insertions, 3 deletions
diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index 69375a36f4..a0a68a5819 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -2074,7 +2074,7 @@ void KyraEngine_v2::setupOpcodeTable() { Opcode(o2_getCharacterX), Opcode(o2_getCharacterY), Opcode(o2_getCharacterFacing), - OpcodeUnImpl(), + Opcode(o2_getCharacterScene), // 0x08 Opcode(o2_setSceneComment), OpcodeUnImpl(), @@ -2133,7 +2133,7 @@ void KyraEngine_v2::setupOpcodeTable() { // 0x34 OpcodeUnImpl(), Opcode(o2_playSoundEffect), - OpcodeUnImpl(), + Opcode(o2_delaySecs), Opcode(o2_delay), // 0x38 Opcode(o2_dummy), @@ -2194,7 +2194,7 @@ void KyraEngine_v2::setupOpcodeTable() { OpcodeUnImpl(), OpcodeUnImpl(), OpcodeUnImpl(), - OpcodeUnImpl(), + Opcode(o2_fillRect), // 0x68 OpcodeUnImpl(), OpcodeUnImpl(), diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h index 243f0bd830..c145c79727 100644 --- a/engines/kyra/kyra_v2.h +++ b/engines/kyra/kyra_v2.h @@ -935,6 +935,7 @@ protected: int o2_getCharacterX(ScriptState *script); int o2_getCharacterY(ScriptState *script); int o2_getCharacterFacing(ScriptState *script); + int o2_getCharacterScene(ScriptState *script); int o2_setSceneComment(ScriptState *script); int o2_setCharacterAnimFrame(ScriptState *script); int o2_trySceneChange(ScriptState *script); @@ -957,6 +958,7 @@ protected: int o2_setMousePos(ScriptState *script); int o2_showMouse(ScriptState *script); //int o2_playSoundEffect(ScriptState *script); + int o2_delaySecs(ScriptState *script); int o2_delay(ScriptState *script); int o2_setScaleTableItem(ScriptState *script); int o2_setDrawLayerTableItem(ScriptState *script); @@ -975,6 +977,7 @@ protected: int o2_playWanderScoreViaMap(ScriptState *script); int o2_playSoundEffect(ScriptState *script); int o2_getRand(ScriptState *script); + int o2_fillRect(ScriptState *script); int o2_encodeShape(ScriptState *script); int o2_defineRoomEntrance(ScriptState *script); int o2_runTemporaryScript(ScriptState *script); diff --git a/engines/kyra/script_v2.cpp b/engines/kyra/script_v2.cpp index 923abd7133..6f8f2962e8 100644 --- a/engines/kyra/script_v2.cpp +++ b/engines/kyra/script_v2.cpp @@ -100,6 +100,11 @@ int KyraEngine_v2::o2_getCharacterFacing(ScriptState *script) { return _mainCharacter.facing; } +int KyraEngine_v2::o2_getCharacterScene(ScriptState *script) { + debugC(3, kDebugLevelScriptFuncs, "o2_getCharacterScene(%p) ()", (const void *)script); + return _mainCharacter.sceneId; +} + int KyraEngine_v2::o2_setSceneComment(ScriptState *script) { debugC(3, kDebugLevelScriptFuncs, "o2_setSceneComment(%p) ('%s')", (const void *)script, stackPosString(0)); _sceneCommentString = stackPosString(0); @@ -348,6 +353,12 @@ int KyraEngine_v2::o2_showMouse(ScriptState *script) { return 0; } +int KyraEngine_v2::o2_delaySecs(ScriptState *script) { + debugC(3, kDebugLevelScriptFuncs, "o2_delaySecs(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1)); + delay(stackPos(0) * 1000, true); + return 0; +} + int KyraEngine_v2::o2_delay(ScriptState *script) { debugC(3, kDebugLevelScriptFuncs, "o2_delay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1)); //if (stackPos(1)) @@ -532,6 +543,12 @@ int KyraEngine_v2::o2_getRand(ScriptState *script) { return _rnd.getRandomNumberRng(stackPos(0), stackPos(1)); } +int KyraEngine_v2::o2_fillRect(ScriptState *script) { + debugC(3, kDebugLevelScriptFuncs, "o2_fillRect(%p) (%d, %d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5)); + _screen->fillRect(stackPos(1), stackPos(2), stackPos(1)+stackPos(3), stackPos(2)+stackPos(4), stackPos(5), stackPos(0)); + return 0; +} + int KyraEngine_v2::o2_encodeShape(ScriptState *script) { debugC(3, kDebugLevelScriptFuncs, "o2_encodeShape(%p) (%d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4)); |
