From edd1ebb8204fbdfcfd65f00e182dc604e3c38998 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 2 Oct 2011 19:43:20 +1100 Subject: TSAGE: Implemented Blue Force scene 200 --- engines/tsage/blue_force/blueforce_logic.cpp | 3 + engines/tsage/blue_force/blueforce_scenes2.cpp | 140 +++++++++++++++++++++++++ engines/tsage/blue_force/blueforce_scenes2.h | 64 +++++++++++ engines/tsage/module.mk | 1 + 4 files changed, 208 insertions(+) create mode 100644 engines/tsage/blue_force/blueforce_scenes2.cpp create mode 100644 engines/tsage/blue_force/blueforce_scenes2.h (limited to 'engines') diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp index ef2c85c77c..80b379d5d5 100644 --- a/engines/tsage/blue_force/blueforce_logic.cpp +++ b/engines/tsage/blue_force/blueforce_logic.cpp @@ -24,6 +24,7 @@ #include "tsage/blue_force/blueforce_dialogs.h" #include "tsage/blue_force/blueforce_scenes0.h" #include "tsage/blue_force/blueforce_scenes1.h" +#include "tsage/blue_force/blueforce_scenes2.h" #include "tsage/blue_force/blueforce_scenes3.h" #include "tsage/blue_force/blueforce_scenes4.h" #include "tsage/blue_force/blueforce_scenes5.h" @@ -79,6 +80,8 @@ Scene *BlueForceGame::createScene(int sceneNumber) { // Front of Police Station return new Scene190(); case 200: + // Credits #2 + return new Scene200(); case 210: case 220: case 225: diff --git a/engines/tsage/blue_force/blueforce_scenes2.cpp b/engines/tsage/blue_force/blueforce_scenes2.cpp new file mode 100644 index 0000000000..1f45a8686b --- /dev/null +++ b/engines/tsage/blue_force/blueforce_scenes2.cpp @@ -0,0 +1,140 @@ +/* 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 "tsage/blue_force/blueforce_scenes2.h" +#include "tsage/scenes.h" +#include "tsage/tsage.h" + +namespace TsAGE { + +namespace BlueForce { + +/*-------------------------------------------------------------------------- + * Scene 200 - Credits #2 + * + *--------------------------------------------------------------------------*/ + +void Scene200::Action1::signal() { + Scene200 *scene = (Scene200 *)BF_GLOBALS._sceneManager._scene; + static const uint32 black = 0; + + switch (_actionIndex++) { + case 0: + setDelay(1); + break; + case 1: + BF_GLOBALS._scenePalette.loadPalette(235); + BF_GLOBALS._scenePalette.refresh(); + _state = 0; + setDelay(30); + break; + case 2: + assert(_owner); + static_cast(_owner)->animate(ANIM_MODE_5, this); + break; + case 3: + if (++_state < 2) { + scene->_action2.signal(); + static_cast(_owner)->setFrame(1); + _actionIndex = 2; + } + setDelay(2); + break; + case 4: { + PaletteRotation *rot; + rot = BF_GLOBALS._scenePalette.addRotation(64, 79, 1); + rot->setDelay(10); + rot = BF_GLOBALS._scenePalette.addRotation(96, 111, 1); + rot->setDelay(10); + + scene->setAction(&scene->_sequenceManager, this, 201, &scene->_object1, &scene->_object2, + &scene->_object3, &scene->_object4, &scene->_object5, &scene->_object6, NULL); + break; + } + case 5: + BF_GLOBALS._sceneManager.changeScene(210); + break; + default: + break; + } +} + +void Scene200::Action2::signal() { + SceneObject *owner = static_cast(this->_owner); + + switch (_actionIndex++) { + case 1: + owner->setPosition(owner->_position); + owner->animate(ANIM_MODE_5, this); + break; + case 2: + owner->setPosition(owner->_position); + owner->setFrame(1); + break; + default: + break; + } +} + + +/*--------------------------------------------------------------------------*/ + +void Scene200::postInit(SceneObjectList *OwnerList) { + SceneExt::postInit(); + loadScene(200); + setZoomPercents(0, 100, 200, 100); + BF_GLOBALS._sound1.play(3); + + _object10.postInit(); + _object10.setVisage(200); + _object10.setPosition(Common::Point(114, 102)); + _object10.setStrip(2); + _object10.setFrame(1); + _object10.changeZoom(100); + + _object1.postInit(); + _object1.hide(); + _object2.postInit(); + _object2.hide(); + _object3.postInit(); + _object3.hide(); + _object4.postInit(); + _object4.hide(); + _object5.postInit(); + _object5.hide(); + _object6.postInit(); + _object6.hide(); + + _object11.postInit(); + _object11.setVisage(200); + _object11.setPosition(Common::Point(96, 112), 1000); + _object11.setStrip(3); + _object11.setFrame(1); + _object11.changeZoom(100); + + _object10.setAction(&_action1); + _object11.setAction(&_action2); +} + +} // End of namespace BlueForce + +} // End of namespace TsAGE diff --git a/engines/tsage/blue_force/blueforce_scenes2.h b/engines/tsage/blue_force/blueforce_scenes2.h new file mode 100644 index 0000000000..c405d9e825 --- /dev/null +++ b/engines/tsage/blue_force/blueforce_scenes2.h @@ -0,0 +1,64 @@ +/* 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. + * + */ + +#ifndef TSAGE_BLUEFORCE_SCENES2_H +#define TSAGE_BLUEFORCE_SCENES2_H + +#include "common/scummsys.h" +#include "tsage/blue_force/blueforce_logic.h" +#include "tsage/events.h" +#include "tsage/core.h" +#include "tsage/scenes.h" +#include "tsage/globals.h" +#include "tsage/sound.h" + +namespace TsAGE { + +namespace BlueForce { + +using namespace TsAGE; + +class Scene200: public SceneExt { + /* Actions */ + class Action1: public ActionExt { + public: + virtual void signal(); + }; + class Action2: public Action { + public: + virtual void signal(); + }; +public: + SequenceManager _sequenceManager; + Action1 _action1; + Action2 _action2; + NamedObject _object1, _object2, _object3, _object4, _object5, _object6; + NamedObject _object7, _object8, _object9, _object10, _object11; + + virtual void postInit(SceneObjectList *OwnerList = NULL); +}; + +} // End of namespace BlueForce + +} // End of namespace TsAGE + +#endif diff --git a/engines/tsage/module.mk b/engines/tsage/module.mk index 7d15b66b93..50b269941e 100644 --- a/engines/tsage/module.mk +++ b/engines/tsage/module.mk @@ -5,6 +5,7 @@ MODULE_OBJS := \ blue_force/blueforce_logic.o \ blue_force/blueforce_scenes0.o \ blue_force/blueforce_scenes1.o \ + blue_force/blueforce_scenes2.o \ blue_force/blueforce_scenes3.o \ blue_force/blueforce_scenes4.o \ blue_force/blueforce_scenes5.o \ -- cgit v1.2.3