aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage
diff options
context:
space:
mode:
authorPaul Gilbert2011-10-02 20:40:32 +1100
committerPaul Gilbert2011-10-02 20:40:32 +1100
commit1838fed419940dd6bed95414b05ca8ee6c6abbe9 (patch)
tree261ad5bc7331a175de2b217e4a4cf60ea4a2dd40 /engines/tsage
parentf99e904f9a85c4a6876b2b68285c1a32fe80835c (diff)
downloadscummvm-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.cpp4
-rw-r--r--engines/tsage/blue_force/blueforce_scenes2.cpp87
-rw-r--r--engines/tsage/blue_force/blueforce_scenes2.h22
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