diff options
Diffstat (limited to 'engines/mads/phantom/phantom_scenes1.cpp')
-rw-r--r-- | engines/mads/phantom/phantom_scenes1.cpp | 282 |
1 files changed, 282 insertions, 0 deletions
diff --git a/engines/mads/phantom/phantom_scenes1.cpp b/engines/mads/phantom/phantom_scenes1.cpp new file mode 100644 index 0000000000..2d991fd3bc --- /dev/null +++ b/engines/mads/phantom/phantom_scenes1.cpp @@ -0,0 +1,282 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/scummsys.h" +#include "mads/mads.h" +#include "mads/scene.h" +#include "mads/phantom/phantom_scenes.h" +#include "mads/phantom/phantom_scenes1.h" + +namespace MADS { + +namespace Phantom { + +void Scene1xx::setAAName() { + // TODO + //int idx = 0; + //_game._aaName = Resources::formatAAName(idx); +} + +void Scene1xx::sceneEntrySound() { + // TODO +} + +/*------------------------------------------------------------------------*/ + +Scene101::Scene101(MADSEngine *vm) : Scene1xx(vm) { + +} + +void Scene101::synchronize(Common::Serializer &s) { + Scene1xx::synchronize(s); + +} + +void Scene101::setup() { + //setPlayerSpritesPrefix(); + setAAName(); +} + +void Scene101::enter() { + // TODO + + if (_globals[kCurrentYear] == 1993) { + _globals._spriteIndexes[0] = _scene->_sprites.addSprites(formAnimName('z', -1)); + // TODO + //_scene->_sequences.setDepth(_globals._sequenceIndexes[0], 14); + } else { + // TODO + } + + // TODO +} + +void Scene101::step() { + // TODO +} + +void Scene101::preActions() { + if (_action.isAction(VERB_EXIT_TO, NOUN_ORCHESTRA_PIT)) { + // TODO: Handle Brie + _game._player._walkOffScreenSceneId = 102; + } else if (_action.isAction(VERB_EXIT_TO, NOUN_GRAND_FOYER)) { + // TODO: Handle Brie + _game._player._walkOffScreenSceneId = 202; + } else if (_action.isAction(VERB_TAKE, NOUN_MONSIEUR_BRIE)) { + _vm->_dialogs->show(10121); + } else if (_action.isAction(VERB_TALK_TO, NOUN_MONSIEUR_BRIE)) { + if (_globals[kBrieTalkStatus] == 2) + _game._player._needToWalk = false; + } + + // TODO +} + +void Scene101::actions() { + // TODO: Brie conversation + + // TODO: Look around + + if (_action.isAction(VERB_LOOK) || _action.isAction(VERB_LOOK_AT)) { + if (_action.isObject(NOUN_AISLE)) { + _vm->_dialogs->show(10112); + } else if (_action.isObject(NOUN_CHANDELIER)) { + _vm->_dialogs->show(10113); + } else if (_action.isObject(NOUN_BACK_WALL)) { + _vm->_dialogs->show(10114); + } else if (_action.isObject(NOUN_SIDE_WALL)) { + _vm->_dialogs->show(10115); + } else if (_action.isObject(NOUN_SEATS)) { + // TODO: Finish this + _vm->_dialogs->show(10116); + } else if (_action.isObject(NOUN_GRAND_FOYER)) { + _vm->_dialogs->show(10117); + } else if (_action.isObject(NOUN_ORCHESTRA_PIT)) { + _vm->_dialogs->show(10118); + } else if (_action.isObject(NOUN_MONSIEUR_BRIE)) { + _vm->_dialogs->show(10120); + } + + _game._player._stepEnabled = true; + } else if (_action.isAction(VERB_TALK_TO, NOUN_MONSIEUR_BRIE)) { + if (_globals[kBrieTalkStatus] == 2) + _vm->_dialogs->show(10122); + _game._player._stepEnabled = true; + } else if (_action.isAction(VERB_TAKE, NOUN_MONSIEUR_BRIE)) { + _game._player._stepEnabled = true; + } +} + +/*------------------------------------------------------------------------*/ + +Scene102::Scene102(MADSEngine *vm) : Scene1xx(vm) { + _animRunningFl = false; +} + +void Scene102::synchronize(Common::Serializer &s) { + Scene1xx::synchronize(s); + + s.syncAsByte(_animRunningFl); +} + +void Scene102::setup() { + //setPlayerSpritesPrefix(); + setAAName(); +} + +void Scene102::enter() { + _animRunningFl = false; + + _globals._spriteIndexes[2] = _scene->_sprites.addSprites(formAnimName('x', 0)); + _globals._spriteIndexes[3] = _scene->_sprites.addSprites("*RAL86"); + + if (_globals[kCurrentYear] == 1993) { + _globals._spriteIndexes[0] = _scene->_sprites.addSprites(formAnimName('z', -1)); + // TODO + //_scene->_sequences.setDepth(_globals._sequenceIndexes[0], 14); + } else { + // TODO + } + + if (_scene->_priorSceneId == 101) { + _game._player._playerPos = Common::Point(97, 79); + _game._player._facing = FACING_SOUTHEAST; + // TODO + _game._player.walk(Common::Point(83, 87), FACING_SOUTHEAST); + _scene->_sequences.setDepth(_globals._sequenceIndexes[2], 14); + } else if (_scene->_priorSceneId == 104) { + // Player fell from pit -> death + // TODO + } else if (_scene->_priorSceneId == 103 || _scene->_priorSceneId != -1) { + _game._player._playerPos = Common::Point(282, 145); + _game._player._facing = FACING_WEST; + _animRunningFl = true; + // TODO: Door closing animation + } else if (_scene->_priorSceneId == -1) { + // TODO + _scene->_sequences.setDepth(_globals._sequenceIndexes[2], 14); + } + + sceneEntrySound(); +} + +void Scene102::step() { + if (_game._trigger == 60) { // Door closes + // TODO + _animRunningFl = false; + } else if (_game._trigger == 65) { // Death + // TODO + _scene->_currentSceneId = 104; + } +} + +void Scene102::preActions() { + if (_action.isAction(VERB_OPEN, NOUN_ORCHESTRA_DOOR) || _action.isAction(VERB_PUSH, NOUN_ORCHESTRA_DOOR)) { + _game._player.walk(Common::Point(282, 145), FACING_EAST); + } +} + +void Scene102::actions() { + if (_action.isAction(VERB_WALK_DOWN, NOUN_AISLE)) { + _scene->_nextSceneId = 101; + _game._player._stepEnabled = true; + } + + if (_action.isAction(VERB_WALK_THROUGH, NOUN_ORCHESTRA_DOOR) || + _action.isAction(VERB_PUSH, NOUN_ORCHESTRA_DOOR) || + _action.isAction(VERB_OPEN, NOUN_ORCHESTRA_DOOR)) { + if (_animRunningFl) { + // TODO + } else { + _scene->_nextSceneId = 103; // FIXME: temporary HACK - remove! + + switch (_game._trigger) { + case 70: // try again + case 0: + // TODO + break; + case 1: + _scene->_nextSceneId = 103; + break; + } + } + + _game._player._stepEnabled = true; + } + + // TODO: Look around + + if (_action.isAction(VERB_LOOK) || _action.isAction(VERB_LOOK_AT)) { + if (_action.isObject(NOUN_PIT)) + _vm->_dialogs->show(10211); + else if (_action.isObject(NOUN_SEATS)) + if (_globals[kCurrentYear] == 1881) + _vm->_dialogs->show(10212); + else + _vm->_dialogs->show(10230); + else if (_action.isObject(NOUN_ORCHESTRA_DOOR)) + _vm->_dialogs->show(10213); + else if (_action.isObject(NOUN_CONDUCTORS_STAND)) + _vm->_dialogs->show(10214); + else if (_action.isObject(NOUN_MUSIC_STAND) || _action.isObject(NOUN_MUSIC_STANDS)) + _vm->_dialogs->show(10215); + else if (_action.isObject(NOUN_PROMPTERS_BOX)) + _vm->_dialogs->show(10217); + else if (_action.isObject(NOUN_STAGE)) + _vm->_dialogs->show(10218); + else if (_action.isObject(NOUN_APRON)) + _vm->_dialogs->show(10219); + else if (_action.isObject(NOUN_SIDE_WALL)) + _vm->_dialogs->show(10220); + else if (_action.isObject(NOUN_FOLDING_CHAIRS)) + _vm->_dialogs->show(10221); + else if (_action.isObject(NOUN_AISLE)) + _vm->_dialogs->show(10222); + else if (_action.isObject(NOUN_PROSCENIUM_ARCH)) + _vm->_dialogs->show(10223); + else if (_action.isObject(NOUN_ACT_CURTAIN)) + _vm->_dialogs->show(10224); + else if (_action.isObject(NOUN_IN_ONE)) + _vm->_dialogs->show(10225); + else if (_action.isObject(NOUN_IN_TWO)) + _vm->_dialogs->show(10226); + else if (_action.isObject(NOUN_LEG)) + _vm->_dialogs->show(10227); + else if (_action.isObject(NOUN_CHANDELIER)) + _vm->_dialogs->show(10231); + else + return; + + _game._player._stepEnabled = true; + } + + if (_action.isAction(VERB_CLOSE, NOUN_ORCHESTRA_DOOR)) { + _vm->_dialogs->show(10228); + _game._player._stepEnabled = true; + } +} + + +/*------------------------------------------------------------------------*/ + +} // End of namespace Phantom +} // End of namespace MADS |