[Scummvm-cvs-logs] scummvm master -> 81ba9b2ebccffa0677ff1526f6ef1b017f61f61b
dreammaster
dreammaster at scummvm.org
Sun Aug 14 04:29:31 CEST 2011
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3101dfab16 TSAGE: Added new global variables for Blue Force
fed3306b15 TSAGE: Removed recently added preloadVisage method
fd8fcc303d TSAGE: Implemented changes in SequenceManager introduced by Blue Force
81ba9b2ebc TSAGE: Further changes to Blue Force scenes, and started implementing scene 109
Commit: 3101dfab165e519c06d71f1b2a8fb653a8052aae
https://github.com/scummvm/scummvm/commit/3101dfab165e519c06d71f1b2a8fb653a8052aae
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-08-13T19:23:11-07:00
Commit Message:
TSAGE: Added new global variables for Blue Force
Changed paths:
engines/tsage/globals.h
diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h
index 9d12669..a3d02ec 100644
--- a/engines/tsage/globals.h
+++ b/engines/tsage/globals.h
@@ -100,6 +100,10 @@ class BlueForceGlobals: public Globals {
public:
ASound _sound1, _sound2, _sound3;
int _v4CEA2;
+ int _v4CF9E;
+ int _v4E238;
+ int _v501FC;
+ int _v51C42;
int _v51C44;
int _v51C24;
Commit: fed3306b15666fb989a08a6e62322577de1e9414
https://github.com/scummvm/scummvm/commit/fed3306b15666fb989a08a6e62322577de1e9414
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-08-13T19:24:23-07:00
Commit Message:
TSAGE: Removed recently added preloadVisage method
Method associated was actually the standard getVisage method
Changed paths:
engines/tsage/scenes.cpp
engines/tsage/scenes.h
diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp
index 954c63e..8db1a32 100644
--- a/engines/tsage/scenes.cpp
+++ b/engines/tsage/scenes.cpp
@@ -501,16 +501,6 @@ void Scene::setZoomPercents(int yStart, int minPercent, int yEnd, int maxPercent
_zoomPercents[yEnd++] = minPercent;
}
-byte *Scene::preloadVisage(int resNum) {
- // This isn't being used, since modern systems can load the data much quicker, and in any case
- // visage data is specially loaded into the Visage class, and the resources discarded from memory.
- return NULL;
-/*
- assert(!_v52C9F);
- return _resourceManager->getResource(RES_VISAGE, resNum, 9999, false);
-*/
-}
-
/*--------------------------------------------------------------------------*/
void Game::execute() {
diff --git a/engines/tsage/scenes.h b/engines/tsage/scenes.h
index 665da58..5845efa 100644
--- a/engines/tsage/scenes.h
+++ b/engines/tsage/scenes.h
@@ -67,7 +67,6 @@ public:
void loadBackground(int xAmount, int yAmount);
void refreshBackground(int xAmount, int yAmount);
void loadSceneData(int sceneNum);
- byte *preloadVisage(int resNum);
};
class SceneManager : public GameHandler, public SaveListener {
Commit: fd8fcc303dbca30383ac0651e36014079b2ffc88
https://github.com/scummvm/scummvm/commit/fd8fcc303dbca30383ac0651e36014079b2ffc88
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-08-13T19:25:02-07:00
Commit Message:
TSAGE: Implemented changes in SequenceManager introduced by Blue Force
Changed paths:
engines/tsage/converse.cpp
engines/tsage/converse.h
engines/tsage/core.cpp
engines/tsage/core.h
diff --git a/engines/tsage/converse.cpp b/engines/tsage/converse.cpp
index 0ae575c..cc1c596 100644
--- a/engines/tsage/converse.cpp
+++ b/engines/tsage/converse.cpp
@@ -34,7 +34,7 @@ namespace tSage {
SequenceManager::SequenceManager() : Action() {
Common::set_to(&_objectList[0], &_objectList[6], (SceneObject *)NULL);
_sequenceData.clear();
- _field24 = 0;
+ _fontNum = 0;
_sequenceOffset = 0;
_resNum = 0;
_field26 = 0;
@@ -56,7 +56,7 @@ void SequenceManager::synchronize(Serializer &s) {
s.syncAsSint32LE(_resNum);
s.syncAsSint32LE(_sequenceOffset);
s.syncAsByte(_keepActive);
- s.syncAsSint32LE(_field24);
+ s.syncAsSint32LE(_fontNum);
s.syncAsSint32LE(_field26);
s.syncAsSint32LE(_objectIndex);
@@ -284,6 +284,32 @@ void SequenceManager::signal() {
_objectList[objIndex3], _objectList[objIndex4], _objectList[objIndex5], _objectList[objIndex6], NULL);
break;
}
+ /* Following indexes were introduced for Blue Force */
+ case 35:
+ v1 = getNextValue();
+ _sceneObject->updateAngle(_objectList[v1]);
+ break;
+ case 36:
+ _sceneObject->animate(ANIM_MODE_9, NULL);
+ break;
+ case 37:
+ v1 = getNextValue();
+ v2 = getNextValue();
+ warning("TODO: dword_53030(%d,%d)", v1, v2);
+ break;
+ case 38: {
+ int resNum = getNextValue();
+ int lineNum = getNextValue();
+ int fontNum = getNextValue();
+ int color1 = getNextValue();
+ int color2 = getNextValue();
+ int color3 = getNextValue();
+ int xp = getNextValue();
+ int yp = getNextValue();
+ int width = getNextValue();
+ setMessage(resNum, lineNum, fontNum, color1, color2, color3, Common::Point(xp, yp), width);
+ break;
+ }
default:
error("SequenceManager::signal - Unknown action %d at offset %xh", idx, _sequenceOffset - 2);
break;
@@ -337,10 +363,15 @@ uint16 SequenceManager::getNextValue() {
}
void SequenceManager::setMessage(int resNum, int lineNum, int color, const Common::Point &pt, int width) {
- _sceneText._color1 = color;
- _sceneText._color2 = 0;
- _sceneText._color3 = 0;
- _sceneText._fontNumber = 2;
+ setMessage(resNum, lineNum, 2, color, 0, 0, pt, width);
+}
+
+void SequenceManager::setMessage(int resNum, int lineNum, int fontNum, int color1, int color2, int color3,
+ const Common::Point &pt, int width) {
+ _sceneText._color1 = color1;
+ _sceneText._color2 = color2;
+ _sceneText._color3 = color3;
+ _sceneText._fontNumber = fontNum;
_sceneText._width = width;
// Get the display message
diff --git a/engines/tsage/converse.h b/engines/tsage/converse.h
index 13c490e..5836b0b 100644
--- a/engines/tsage/converse.h
+++ b/engines/tsage/converse.h
@@ -39,13 +39,15 @@ private:
void setup();
uint16 getNextValue();
void setMessage(int resNum, int lineNum, int color, const Common::Point &pt, int width);
+ void setMessage(int resNum, int lineNum, int fontNum, int color1, int color2, int color3,
+ const Common::Point &pt, int width);
SequenceManager *globalManager();
public:
SceneText _sceneText;
int _resNum;
uint _sequenceOffset;
bool _keepActive;
- int _field24;
+ int _fontNum;
int _field26;
Common::Array<byte> _sequenceData;
int _objectIndex;
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 52c1a5c..492ecf7 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -1655,6 +1655,11 @@ void SceneObjectWrapper::remove() {
}
void SceneObjectWrapper::dispatch() {
+ if (_vm->getGameID() == GType_Ringworld)
+ check();
+}
+
+void SceneObjectWrapper::check() {
_visageImages.setVisage(_sceneObject->_visage);
int frameCount = _visageImages.getFrameCount();
int angle = _sceneObject->_angle;
@@ -2277,6 +2282,18 @@ void SceneObject::updateScreen() {
}
}
+void SceneObject::updateAngle(SceneObject *sceneObj) {
+ checkAngle(sceneObj);
+ if (_objectWrapper)
+ _objectWrapper->check();
+}
+
+void SceneObject::changeAngle(int angle) {
+ _angle = angle;
+ if (_objectWrapper)
+ _objectWrapper->check();
+}
+
void SceneObject::setup(int visage, int stripFrameNum, int frameNum, int posX, int posY, int priority) {
postInit();
setVisage(visage);
diff --git a/engines/tsage/core.h b/engines/tsage/core.h
index 959f96b..c4408e3 100644
--- a/engines/tsage/core.h
+++ b/engines/tsage/core.h
@@ -437,7 +437,10 @@ public:
};
enum AnimateMode {ANIM_MODE_NONE = 0, ANIM_MODE_1 = 1, ANIM_MODE_2 = 2, ANIM_MODE_3 = 3,
- ANIM_MODE_4 = 4, ANIM_MODE_5 = 5, ANIM_MODE_6 = 6, ANIM_MODE_7 = 7, ANIM_MODE_8 = 8};
+ ANIM_MODE_4 = 4, ANIM_MODE_5 = 5, ANIM_MODE_6 = 6, ANIM_MODE_7 = 7, ANIM_MODE_8 = 8,
+ // Introduced in Blue Force
+ ANIM_MODE_9 = 9
+};
class SceneObject;
@@ -468,6 +471,7 @@ public:
virtual ~SceneObjectWrapper() {}
void setSceneObject(SceneObject *so);
+ void check();
virtual void synchronize(Serializer &s);
virtual Common::String getClassName() { return "SceneObjectWrapper"; }
@@ -556,6 +560,10 @@ public:
virtual void draw();
virtual void proc19() {}
virtual void updateScreen();
+ // New methods introduced by Blue FOrce
+ virtual void updateAngle(SceneObject *sceneObj);
+ virtual void changeAngle(int angle);
+
void setup(int visage, int stripFrameNum, int frameNum, int posX, int posY, int priority);
};
Commit: 81ba9b2ebccffa0677ff1526f6ef1b017f61f61b
https://github.com/scummvm/scummvm/commit/81ba9b2ebccffa0677ff1526f6ef1b017f61f61b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-08-13T19:25:55-07:00
Commit Message:
TSAGE: Further changes to Blue Force scenes, and started implementing scene 109
Changed paths:
engines/tsage/blue_force/blueforce_logic.cpp
engines/tsage/blue_force/blueforce_logic.h
engines/tsage/blue_force/blueforce_scenes0.cpp
engines/tsage/blue_force/blueforce_scenes0.h
engines/tsage/blue_force/blueforce_scenes1.cpp
engines/tsage/blue_force/blueforce_scenes1.h
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index 87e1597..5f635da 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -31,7 +31,7 @@ namespace tSage {
void BlueForceGame::start() {
// Start the game
- _globals->_sceneManager.changeScene(20);
+ _globals->_sceneManager.changeScene(109);
_globals->_events.setCursor(CURSOR_WALK);
}
@@ -50,6 +50,8 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
// Tsnunami Title Screen #2
return new BF_Scene100();
case 109:
+ // Introduction Bar Room
+ return new BF_Scene109();
case 110:
case 114:
case 115:
@@ -125,4 +127,124 @@ Scene *BlueForceGame::createScene(int sceneNumber) {
}
}
+/*--------------------------------------------------------------------------*/
+
+ObjArray::ObjArray(): EventHandler() {
+ _inUse = false;
+ clear();
+}
+
+void ObjArray::clear() {
+ for (int i = 0; i < OBJ_ARRAY_SIZE; ++i)
+ _objList[i] = NULL;
+}
+
+void ObjArray::synchronize(Serializer &s) {
+ EventHandler::synchronize(s);
+ for (int i = 0; i < OBJ_ARRAY_SIZE; ++i)
+ SYNC_POINTER(_objList[i]);
+}
+
+void ObjArray::process(Event &event) {
+ if (_inUse)
+ error("Array error");
+ _inUse = true;
+
+ for (int i = 0; i < OBJ_ARRAY_SIZE; ++i) {
+ if (_objList[i])
+ _objList[i]->process(event);
+ }
+
+ _inUse = false;
+}
+
+void ObjArray::dispatch() {
+ if (_inUse)
+ error("Array error");
+ _inUse = true;
+
+ for (int i = 0; i < OBJ_ARRAY_SIZE; ++i) {
+ if (_objList[i])
+ _objList[i]->dispatch();
+ }
+
+ _inUse = false;
+}
+
+/*--------------------------------------------------------------------------*/
+
+SceneExt::SceneExt(): Scene() {
+ warning("TODO: dword_503AA/dword_503AE/dword_53030");
+
+ _field372 = 0;
+ _field37C = NULL;
+}
+
+void SceneExt::postInit(SceneObjectList *OwnerList) {
+ Scene::postInit(OwnerList);
+ if (BF_GLOBALS._v4CEA2) {
+ // Blank out the bottom portion of the screen
+ BF_GLOBALS._v51C24 = BF_INTERFACE_Y;
+
+ Rect r(0, BF_INTERFACE_Y, SCREEN_WIDTH, SCREEN_HEIGHT);
+ BF_GLOBALS.gfxManager().getSurface().fillRect(r, 0);
+ }
+}
+
+void SceneExt::process(Event &event) {
+ _objArray2.process(event);
+ if (!event.handled)
+ Scene::process(event);
+}
+
+void SceneExt::dispatch() {
+ _objArray1.dispatch();
+
+ if (_field37A) {
+ if ((--_field37A == 0) && BF_GLOBALS._v4CEA2) {
+ if (BF_GLOBALS._v4E238 && (BF_GLOBALS._v4CF9E == 1)) {
+ warning("sub_1B052");
+ }
+
+ _field37A = 0;
+ }
+ }
+
+ Scene::dispatch();
+}
+
+void SceneExt::loadScene(int sceneNum) {
+ Scene::loadScene(sceneNum);
+ warning("TODO: word_51C38/word_51C3C");
+}
+
+/*--------------------------------------------------------------------------*/
+
+GameScene::GameScene() {
+
+}
+
+void GameScene::postInit(SceneObjectList *OwnerList) {
+ _field794 = 0;
+ _field412 = 1;
+ SceneExt::postInit(OwnerList);
+}
+
+void GameScene::remove() {
+ SceneExt::remove();
+ if (_field794 == 1) {
+ for (SynchronizedList<SceneObject *>::iterator i = BF_GLOBALS._sceneObjects->begin();
+ i != BF_GLOBALS._sceneObjects->end(); ++i)
+ (*i)->remove();
+
+ BF_GLOBALS._sceneObjects->draw();
+ BF_GLOBALS._scenePalette.loadPalette(2);
+ BF_GLOBALS._v51C44 = 1;
+ BF_GLOBALS._v51C42 = 1;
+ }
+
+ BF_GLOBALS._scenePalette._field412 = 1;
+}
+
+
} // End of namespace tSage
diff --git a/engines/tsage/blue_force/blueforce_logic.h b/engines/tsage/blue_force/blueforce_logic.h
index 9237e50..6cfbe91 100644
--- a/engines/tsage/blue_force/blueforce_logic.h
+++ b/engines/tsage/blue_force/blueforce_logic.h
@@ -29,6 +29,8 @@
#include "tsage/scenes.h"
#include "tsage/globals.h"
+#define BF_INTERFACE_Y 168
+
namespace tSage {
class BlueForceGame: public Game {
@@ -37,6 +39,54 @@ public:
virtual Scene *createScene(int sceneNumber);
};
+#define OBJ_ARRAY_SIZE 10
+class ObjArray: public EventHandler {
+public:
+ EventHandler *_objList[OBJ_ARRAY_SIZE];
+ bool _inUse;
+public:
+ ObjArray();
+ void clear();
+
+ virtual Common::String getClassName() { return "ObjArray"; }
+ virtual void synchronize(Serializer &s);
+ virtual void process(Event &event);
+ virtual void dispatch();
+};
+
+class SceneExt: public Scene {
+public:
+ ObjArray _objArray1, _objArray2;
+ int _field372;
+ int _field37A;
+ EventHandler *_field37C;
+public:
+ SceneExt();
+
+ virtual Common::String getClassName() { return "SceneExt"; }
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+ virtual void process(Event &event);
+ virtual void dispatch();
+ virtual void loadScene(int sceneNum);
+ virtual void proc13() { warning("TODO: SceneExt::proc13"); }
+};
+
+class GameScene: public SceneExt {
+public:
+ int _field412;
+ int _field794;
+public:
+ GameScene();
+
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+ virtual void remove();
+};
+
+class BlueAnimatedSpeaker: public Speaker {
+public:
+};
+
+
} // End of namespace tSage
#endif
diff --git a/engines/tsage/blue_force/blueforce_scenes0.cpp b/engines/tsage/blue_force/blueforce_scenes0.cpp
index 3eaa2bf..5f271d4 100644
--- a/engines/tsage/blue_force/blueforce_scenes0.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes0.cpp
@@ -33,7 +33,7 @@ namespace tSage {
*--------------------------------------------------------------------------*/
void BF_Scene20::Action1::signal() {
- BF_Scene20 *scene = (BF_Scene20 *)_globals->_sceneManager._scene;
+ BF_Scene20 *scene = (BF_Scene20 *)BF_GLOBALS._sceneManager._scene;
static byte black[3] = { 0, 0, 0 };
switch (_actionIndex++) {
@@ -42,7 +42,7 @@ void BF_Scene20::Action1::signal() {
break;
case 1:
_sound.play(1);
- _globals->_scenePalette.addRotation(64, 127, -1, 1, this);
+ BF_GLOBALS._scenePalette.addRotation(64, 127, -1, 1, this);
break;
case 2:
scene->_object1.setVisage(22);
@@ -88,7 +88,7 @@ void BF_Scene20::Action1::signal() {
setDelay(1);
break;
case 3:
- _globals->_scenePalette.addFader(scene->_scenePalette._palette, 256, 8, this);
+ BF_GLOBALS._scenePalette.addFader(scene->_scenePalette._palette, 256, 8, this);
break;
case 4:
setDelay(60);
@@ -105,10 +105,10 @@ void BF_Scene20::Action1::signal() {
setDelay(120);
break;
case 7:
- _globals->_scenePalette.addFader(black, 1, 5, this);
+ BF_GLOBALS._scenePalette.addFader(black, 1, 5, this);
break;
case 8:
- _globals->_sceneManager.changeScene(100);
+ BF_GLOBALS._sceneManager.changeScene(100);
remove();
break;
}
@@ -121,8 +121,6 @@ void BF_Scene20::postInit(SceneObjectList *OwnerList) {
Scene::postInit();
setZoomPercents(60, 85, 200, 100);
- preloadVisage(21);
- preloadVisage(22);
_scenePalette.loadPalette(1);
_scenePalette.loadPalette(22);
diff --git a/engines/tsage/blue_force/blueforce_scenes0.h b/engines/tsage/blue_force/blueforce_scenes0.h
index c176a17..182a45f 100644
--- a/engines/tsage/blue_force/blueforce_scenes0.h
+++ b/engines/tsage/blue_force/blueforce_scenes0.h
@@ -34,7 +34,7 @@
namespace tSage {
-class BF_Scene20 : public Scene {
+class BF_Scene20 : public SceneExt {
/* Actions */
class Action1 : public Action {
private:
diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp
index 0f0ab6c..8e744a4 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes1.cpp
@@ -192,4 +192,221 @@ void BF_Scene100::signal() {
}
}
+/*--------------------------------------------------------------------------
+ * Scene 109 - Introduction Bar Room
+ *
+ *--------------------------------------------------------------------------*/
+
+void BF_Scene109::Action1::signal() {
+ BF_Scene109 *scene = (BF_Scene109 *)BF_GLOBALS._sceneManager._scene;
+
+ switch (_actionIndex++) {
+ case 0:
+ setDelay(30);
+ break;
+ case 1:
+ BF_GLOBALS._sound1.play(12);
+ BF_GLOBALS._sceneObjects->draw();
+ BF_GLOBALS._scenePalette.loadPalette(2);
+ BF_GLOBALS._scenePalette.refresh();
+ setDelay(10);
+ break;
+ case 2:
+ scene->_text.setup(BF_19840515, this);
+ break;
+ case 3:
+ BF_GLOBALS._v51C44 = 1;
+ scene->loadScene(115);
+
+ scene->_protaginist2.show();
+ scene->_protaginist2.setPriority(133);
+ scene->_protaginist1.show();
+ scene->_bartender.show();
+ scene->_object1.show();
+ scene->_object6.show();
+ scene->_object6.setAction(&scene->_action3);
+ scene->_object2.show();
+ scene->_object9.show();
+ scene->_object9.setAction(&scene->_action2);
+
+ BF_GLOBALS._v501FC = 170;
+ setDelay(60);
+ break;
+ case 4:
+ scene->_bartender.setAction(&scene->_sequenceManager4, NULL, 109, &scene->_bartender, &scene->_object2, NULL);
+ scene->_protaginist1.setAction(&scene->_sequenceManager5, NULL, 107, &scene->_protaginist1, NULL);
+ scene->_protaginist2.setAction(&scene->_sequenceManager6, this, 106, &scene->_protaginist2, NULL);
+ break;
+ case 5:
+ scene->setAction(&scene->_sequenceManager6, this, 105, &scene->_object10, NULL);
+ break;
+ case 6:
+ scene->_object10.remove();
+ scene->setAction(&scene->_sequenceManager6, this, 100, &scene->_object10, NULL);
+ break;
+ case 7:
+ scene->_object7.setAction(&scene->_sequenceManager7, NULL, 103, &scene->_object7, NULL);
+ scene->_object5.setAction(&scene->_sequenceManager8, this, 102, &scene->_object5, NULL);
+ scene->_protaginist2.setAction(&scene->_sequenceManager6, NULL, 104, &scene->_protaginist2, &scene->_bartender, NULL);
+ break;
+ case 8:
+ scene->setAction(&scene->_sequenceManager8, this, 101, &scene->_object5, &scene->_protaginist1, NULL);
+ break;
+ case 9:
+ scene->_protaginist1.setAction(&scene->_sequenceManager5, this, 98, &scene->_protaginist1, NULL);
+ scene->_object7.setAction(&scene->_sequenceManager7, NULL, 99, &scene->_object7, NULL);
+ break;
+ case 10:
+ scene->_sceneMode = 1;
+ remove();
+ break;
+ }
+}
+
+void BF_Scene109::Action2::signal() {
+ BF_Scene109 *scene = (BF_Scene109 *)BF_GLOBALS._sceneManager._scene;
+ scene->setAction(&scene->_sequenceManager2, this, 3117, &scene->_object9, NULL);
+}
+
+void BF_Scene109::Action3::signal() {
+ BF_Scene109 *scene = (BF_Scene109 *)BF_GLOBALS._sceneManager._scene;
+ scene->setAction(&scene->_sequenceManager3, this, 108, &scene->_object6, NULL);
+}
+
+/*--------------------------------------------------------------------------*/
+
+BF_Scene109::Text::Text(): SceneText() {
+ _action = NULL;
+ _frameNumber = 0;
+ _diff = 0;
+}
+
+void BF_Scene109::Text::setup(const Common::String &msg, Action *action) {
+ _frameNumber = BF_GLOBALS._events.getFrameNumber();
+ _diff = 180;
+ _action = action;
+ _fontNumber = 4;
+ _width = 300;
+ _textMode = ALIGN_CENTER;
+ _color1 = BF_GLOBALS._scenePalette._colors.background;
+ _color2 = _color3 = 0;
+
+ SceneText::setup(msg);
+
+ // Center the text on-screen
+ reposition();
+ _bounds.center(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
+
+ // Set the new position
+ _position.x = _bounds.left;
+ _position.y = _bounds.top;
+}
+
+void BF_Scene109::Text::synchronize(Serializer &s) {
+ SceneText::synchronize(s);
+ SYNC_POINTER(_action);
+ s.syncAsUint32LE(_frameNumber);
+ s.syncAsSint16LE(_diff);
+}
+
+void BF_Scene109::Text::dispatch() {
+ if (_diff) {
+ uint32 frameNumber = BF_GLOBALS._events.getFrameNumber();
+ if (_frameNumber < frameNumber) {
+ _diff -= frameNumber - _frameNumber;
+ _frameNumber = frameNumber;
+
+ if (_diff <= 0) {
+ // Time has expired, so remove the text and signal the designated action
+ remove();
+ if (_action)
+ _action->signal();
+ }
+ }
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+BF_Scene109::BF_Scene109(): GameScene() {
+}
+
+void BF_Scene109::postInit(SceneObjectList *OwnerList) {
+ GameScene::postInit(OwnerList);
+ loadScene(999);
+
+ _protaginist2.postInit();
+ _protaginist2.setVisage(119);
+ _protaginist2.setFrame(11);
+ _protaginist2.setFrame2(133);
+ _protaginist2.setPosition(Common::Point(165, 124));
+ _protaginist2.hide();
+
+ _protaginist1.postInit();
+ _protaginist1.setVisage(118);
+ _protaginist1.setStrip(1);
+ _protaginist1.setFrame(8);
+ _protaginist1.setFrame2(132);
+ _protaginist1.setPosition(Common::Point(143, 125));
+ _protaginist1.hide();
+
+ _bartender.postInit();
+ _bartender.setVisage(121);
+ _bartender.setStrip(2);
+ _bartender.setFrame(1);
+ _bartender.setPriority(-1);
+ _bartender.setPosition(Common::Point(92, 64));
+ _bartender.hide();
+
+ _object1.postInit();
+ _object1.setVisage(121);
+ _object1.setStrip(6);
+ _object1.setFrame(1);
+ _object1.setPriority(-1);
+ _object1.setPosition(Common::Point(110, 64));
+ _object1.hide();
+
+ _object6.postInit();
+ _object6.setVisage(120);
+ _object6.setStrip(2);
+ _object6.setFrame(5);
+ _object6.setPriority(-1);
+ _object6.setPosition(Common::Point(127, 97));
+ _object6.hide();
+
+ _object2.postInit();
+ _object2.setVisage(121);
+ _object2.setStrip(5);
+ _object2.setFrame(1);
+ _object2.setPriority(-1);
+ _object2.setPosition(Common::Point(104, 64));
+ _object2.hide();
+
+ _object9.postInit();
+ _object9.setVisage(115);
+ _object9.setStrip(4);
+ _object9.setFrame(1);
+ _object9.setPosition(Common::Point(262, 29));
+ _object9.hide();
+
+ _object5.postInit();
+ _object5.hide();
+
+ _object7.postInit();
+ _object7.hide();
+
+ _object10.postInit();
+ _object10.hide();
+
+ BF_GLOBALS._player.disableControl();
+ setAction(&_action1);
+}
+
+void BF_Scene109::signal() {
+ if (_sceneMode == 1) {
+ BF_GLOBALS._scenePalette.clearListeners();
+ BF_GLOBALS._sceneManager.changeScene(110);
+ }
+}
+
} // End of namespace tSage
diff --git a/engines/tsage/blue_force/blueforce_scenes1.h b/engines/tsage/blue_force/blueforce_scenes1.h
index 16d327f..b3d16ab 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.h
+++ b/engines/tsage/blue_force/blueforce_scenes1.h
@@ -52,7 +52,6 @@ class BF_Scene100: public Scene {
};
class Action2: public ActionExt {
public:
- virtual Common::String getClassName() { return "BF100Action2"; }
virtual void signal();
};
public:
@@ -68,6 +67,52 @@ public:
virtual void signal();
};
+class BF_Scene109: public GameScene {
+ /* Actions */
+ class Action1: public Action {
+ public:
+ virtual void signal();
+ };
+ class Action2: public Action {
+ public:
+ virtual void signal();
+ };
+ class Action3: public Action {
+ public:
+ virtual void signal();
+ };
+
+ /* Texts */
+ class Text: public SceneText {
+ public:
+ Action *_action;
+ uint32 _frameNumber;
+ int _diff;
+ public:
+ Text();
+ void setup(const Common::String &msg, Action *action);
+
+ virtual Common::String getClassName() { return "BF109Text"; }
+ virtual void synchronize(Serializer &s);
+ virtual void dispatch();
+ };
+public:
+ SequenceManager _sequenceManager1, _sequenceManager2, _sequenceManager3;
+ SequenceManager _sequenceManager4, _sequenceManager5, _sequenceManager6;
+ SequenceManager _sequenceManager7, _sequenceManager8;
+ SceneObject _object1, _object2, _protaginist2, _protaginist1, _object5;
+ SceneObject _object6, _object7, _bartender, _object9, _object10;
+ Text _text;
+ BlueAnimatedSpeaker _speaker;
+ Action1 _action1;
+ Action _action2, _action3;
+public:
+ BF_Scene109();
+
+ virtual void postInit(SceneObjectList *OwnerList = NULL);
+ virtual void signal();
+};
+
} // End of namespace tSage
#endif
More information about the Scummvm-git-logs
mailing list