diff options
author | Paul Gilbert | 2011-10-02 20:40:32 +1100 |
---|---|---|
committer | Paul Gilbert | 2011-10-02 20:40:32 +1100 |
commit | 1838fed419940dd6bed95414b05ca8ee6c6abbe9 (patch) | |
tree | 261ad5bc7331a175de2b217e4a4cf60ea4a2dd40 /engines/tsage | |
parent | f99e904f9a85c4a6876b2b68285c1a32fe80835c (diff) | |
download | scummvm-rg350-1838fed419940dd6bed95414b05ca8ee6c6abbe9.tar.gz scummvm-rg350-1838fed419940dd6bed95414b05ca8ee6c6abbe9.tar.bz2 scummvm-rg350-1838fed419940dd6bed95414b05ca8ee6c6abbe9.zip |
TSAGE: Implemented Blue Force scene 210 - Car Training
Diffstat (limited to 'engines/tsage')
-rw-r--r-- | engines/tsage/blue_force/blueforce_logic.cpp | 4 | ||||
-rw-r--r-- | engines/tsage/blue_force/blueforce_scenes2.cpp | 87 | ||||
-rw-r--r-- | engines/tsage/blue_force/blueforce_scenes2.h | 22 |
3 files changed, 108 insertions, 5 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp index 15d68ae4f0..22c1c4edbf 100644 --- a/engines/tsage/blue_force/blueforce_logic.cpp +++ b/engines/tsage/blue_force/blueforce_logic.cpp @@ -80,9 +80,11 @@ Scene *BlueForceGame::createScene(int sceneNumber) { // Front of Police Station return new Scene190(); case 200: - // Credits #2 + // Credits - Motorcycle Training return new Scene200(); case 210: + // Credits - Car Training + return new Scene210(); case 220: case 225: case 265: diff --git a/engines/tsage/blue_force/blueforce_scenes2.cpp b/engines/tsage/blue_force/blueforce_scenes2.cpp index 1f45a8686b..04e452f2f6 100644 --- a/engines/tsage/blue_force/blueforce_scenes2.cpp +++ b/engines/tsage/blue_force/blueforce_scenes2.cpp @@ -35,7 +35,9 @@ namespace BlueForce { void Scene200::Action1::signal() { Scene200 *scene = (Scene200 *)BF_GLOBALS._sceneManager._scene; + SceneObject *owner = static_cast<SceneObject *>(this->_owner); static const uint32 black = 0; + assert(owner); switch (_actionIndex++) { case 0: @@ -49,12 +51,12 @@ void Scene200::Action1::signal() { break; case 2: assert(_owner); - static_cast<SceneObject *>(_owner)->animate(ANIM_MODE_5, this); + owner->animate(ANIM_MODE_5, this); break; case 3: if (++_state < 2) { scene->_action2.signal(); - static_cast<SceneObject *>(_owner)->setFrame(1); + owner->setFrame(1); _actionIndex = 2; } setDelay(2); @@ -80,7 +82,8 @@ void Scene200::Action1::signal() { void Scene200::Action2::signal() { SceneObject *owner = static_cast<SceneObject *>(this->_owner); - + assert(owner); + switch (_actionIndex++) { case 1: owner->setPosition(owner->_position); @@ -128,13 +131,89 @@ void Scene200::postInit(SceneObjectList *OwnerList) { _object11.setVisage(200); _object11.setPosition(Common::Point(96, 112), 1000); _object11.setStrip(3); - _object11.setFrame(1); + _object11.setFrame(1); _object11.changeZoom(100); _object10.setAction(&_action1); _object11.setAction(&_action2); } +void Scene200::remove() { + BF_GLOBALS._scenePalette.clearListeners(); + SceneExt::remove(); +} + +/*-------------------------------------------------------------------------- + * Scene 200 - Credits - Car Training + * + *--------------------------------------------------------------------------*/ + +void Scene210::Action1::signal() { + Scene210 *scene = (Scene210 *)BF_GLOBALS._sceneManager._scene; + SceneObject *owner = static_cast<SceneObject *>(_owner); + assert(owner); + + switch (_actionIndex++) { + case 0: + setDelay(1); + break; + case 1: + owner->animate(ANIM_MODE_5, this); + break; + case 2: { + 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, 210, &scene->_object10, &scene->_object11, + &scene->_object12, &scene->_object13, &scene->_object14, &scene->_object15, NULL); + break; + } + case 3: + BF_GLOBALS._sceneManager.changeScene(220); + break; + default: + break; + } +} + +/*--------------------------------------------------------------------------*/ + +void Scene210::postInit(SceneObjectList *OwnerList) { + SceneExt::postInit(); + loadScene(210); + BF_GLOBALS._scenePalette.loadPalette(235); + BF_GLOBALS._scenePalette.refresh(); + + _object9.postInit(); + _object9.setVisage(210); + _object9.setPosition(Common::Point(146, 151)); + _object9.setStrip(1); + _object9.setFrame(1); + _object9.changeZoom(100); + _object9.setAction(&_action1); + + _object10.postInit(); + _object10.hide(); + _object11.postInit(); + _object11.hide(); + _object12.postInit(); + _object12.hide(); + _object13.postInit(); + _object13.hide(); + _object14.postInit(); + _object14.hide(); + _object15.postInit(); + _object15.hide(); +} + +void Scene210::remove() { + BF_GLOBALS._scenePalette.clearListeners(); + SceneExt::remove(); +} + } // 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 index c405d9e825..29ced6709f 100644 --- a/engines/tsage/blue_force/blueforce_scenes2.h +++ b/engines/tsage/blue_force/blueforce_scenes2.h @@ -55,6 +55,28 @@ public: NamedObject _object7, _object8, _object9, _object10, _object11; virtual void postInit(SceneObjectList *OwnerList = NULL); + virtual void remove(); +}; + +class Scene210: public SceneExt { + /* Actions */ + class Action1: public ActionExt { + public: + virtual void signal(); + }; + class Action2: public Action { + public: + virtual void signal(); + }; +public: + SequenceManager _sequenceManager; + Action1 _action1; + NamedObject _object1, _object2, _object3, _object4, _object5, _object6; + NamedObject _object7, _object8, _object9, _object10, _object11; + NamedObject _object12, _object13, _object14, _object15; + + virtual void postInit(SceneObjectList *OwnerList = NULL); + virtual void remove(); }; } // End of namespace BlueForce |