diff options
author | Strangerke | 2014-03-19 08:45:42 +0100 |
---|---|---|
committer | Strangerke | 2014-03-19 08:45:42 +0100 |
commit | c43f8347922b808458f5114ae0bdfd2f1752f696 (patch) | |
tree | 89c34cce69e9bbc1cc8d5b76c20454eba09041dd /engines | |
parent | cfe2257d00af3d608b907f940729138503366760 (diff) | |
download | scummvm-rg350-c43f8347922b808458f5114ae0bdfd2f1752f696.tar.gz scummvm-rg350-c43f8347922b808458f5114ae0bdfd2f1752f696.tar.bz2 scummvm-rg350-c43f8347922b808458f5114ae0bdfd2f1752f696.zip |
MADS: More work on scene 202
Diffstat (limited to 'engines')
-rw-r--r-- | engines/mads/nebular/nebular_scenes.h | 5 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes2.cpp | 45 |
2 files changed, 50 insertions, 0 deletions
diff --git a/engines/mads/nebular/nebular_scenes.h b/engines/mads/nebular/nebular_scenes.h index 6021e6715a..13e3597335 100644 --- a/engines/mads/nebular/nebular_scenes.h +++ b/engines/mads/nebular/nebular_scenes.h @@ -41,8 +41,10 @@ enum { enum Noun { NOUN_D = 0xD, NOUN_BLOWGUN = 0x29, + NOUN_2C = 0x2C, NOUN_BURGER = 0x35, NOUN_CHAIR = 0x47, + NOUN_4E = 0x4E, NOUN_DEAD_FISH = 0x65, NOUN_DOOR = 0x6E, NOUN_EAT = 0x75, @@ -58,6 +60,7 @@ enum Noun { NOUN_INSERT = 0x0B6, NOUN_INSPECT = 0x0B7, NOUN_JUNGLE = 0x0B8, + NOUN_C7 = 0x0C7, NOUN_LIFE_SUPPORT_SECTION = 0x0CC, NOUN_LOG = 0x0D0, NOUN_LOOK_AT = 0x0D1, @@ -75,6 +78,8 @@ enum Noun { NOUN_SHIELD_MODULATOR = 0x137, NOUN_SHOOT = 0x13A, NOUN_SIT_IN = 0x13F, + NOUN_140 = 0x140, + NOUN_1C9 = 0x1C9, NOUN_SMELL = 0x147, NOUN_STUFFED_FISH = 0x157, NOUN_15F = 0x15F, diff --git a/engines/mads/nebular/nebular_scenes2.cpp b/engines/mads/nebular/nebular_scenes2.cpp index 9294378c60..f03bf00e01 100644 --- a/engines/mads/nebular/nebular_scenes2.cpp +++ b/engines/mads/nebular/nebular_scenes2.cpp @@ -335,6 +335,16 @@ void Scene201::actions() { /*------------------------------------------------------------------------*/ void Scene202::setup() { + setPlayerSpritesPrefix(); + setAAName(); + + Scene &scene = _vm->_game->_scene; + scene.addActiveVocab(NOUN_C7); + scene.addActiveVocab(NOUN_4E); + scene.addActiveVocab(NOUN_D); + scene.addActiveVocab(NOUN_2C); + scene.addActiveVocab(NOUN_140); + scene.addActiveVocab(NOUN_1C9); } void Scene202::enter() { @@ -344,6 +354,41 @@ void Scene202::step() { } void Scene202::preActions() { + MADSAction *action = _game._player._action; + if (action->_walkFlag) + _scene->_kernelMessages.reset(); + + if ((_globals._v4 == 0) && (action->isAction(0x4E, 0xC7, 0) || !action->_walkFlag)) { + if (_game._abortTimers == 0) { + _vm->_sound->command(29); + action->_walkFlag = false; + _game._player._stepEnabled = false; + _scene->_sequences.remove(_globals._spriteIndexes[24]); + _globals._spriteIndexes[23] = _scene->_sequences.addReverseSpriteCycle(_globals._spriteIndexes[8], false, 6, 1, 0, 0); + _scene->_sequences.setDepth(_globals._spriteIndexes[23], 1); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[23], SM_0, 0, 1); + } else if (_game._abortTimers == 1) { + warning("TODO: TimerList_getTimeout(-1, _globals._spriteIndexes[23]);"); + warning("CHECKME: _scene->_dynamicHotspots.remove(_globals._frameTime);"); + _scene->_dynamicHotspots.remove(_globals._frameTime); + _game._player._visible = true; + action->_walkFlag = true; + _game._player._stepEnabled = true; + _globals._v4 = 0; + } else { + // nothing + } + } + + if (action->isAction(0x3, 0x27, 0) && action->_activeAction._indirectObjectId > 0) { + if (!action->_walkFlag || (_globals._v4 != 0)) + action->_startWalkFlag = false; + else + action->_startWalkFlag = true; + + if (_globals._v4 == 0) + _game._player.startWalking(Common::Point(171, 122), 8); + } } void Scene202::actions() { |