aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage')
-rw-r--r--engines/tsage/ringworld2/ringworld2_logic.cpp31
-rw-r--r--engines/tsage/ringworld2/ringworld2_logic.h28
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes0.cpp16
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes1.cpp167
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes1.h2
5 files changed, 116 insertions, 128 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index e2114fbfe5..cb28d6d60b 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -108,7 +108,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
/* Scene group #1 */
//
case 1000:
- // Cutscene: Ship moving
+ // Cutscene scene
return new Scene1000();
case 1010:
// Cutscene - trip in space
@@ -570,6 +570,13 @@ void SceneExt::scalePalette(int RFactor, int GFactor, int BFactor) {
}
}
+void SceneExt::loadBlankScene() {
+ _backSurface.create(SCREEN_WIDTH, SCREEN_HEIGHT * 3 / 2);
+ _backSurface.fillRect(_backSurface.getBounds(), 0);
+
+ R2_GLOBALS._screenSurface.fillRect(R2_GLOBALS._screenSurface.getBounds(), 0);
+}
+
/*--------------------------------------------------------------------------*/
void SceneHandlerExt::postInit(SceneObjectList *OwnerList) {
@@ -1750,7 +1757,7 @@ AnimationPlayer::~AnimationPlayer() {
void AnimationPlayer::synchronize(Serializer &s) {
EventHandler::synchronize(s);
- warning("TODO AnimationPlayer::load");
+ warning("TODO AnimationPlayer::synchronize");
}
void AnimationPlayer::remove() {
@@ -2457,26 +2464,6 @@ void ScannerDialog::proc12(int visage, int stripFrameNum, int frameNum, int posX
/*--------------------------------------------------------------------------*/
-DataManager::DataManager(): EventHandler() {
-
-}
-
-void DataManager::synchronize(Serializer &s) {
- EventHandler::synchronize(s);
-
-}
-
-void DataManager::load(int v) {
- warning("TODO");
-}
-
-void DataManager::remove() {
- if (_endHandler)
- _endHandler->signal();
-
- _endHandler = NULL;
-}
-
} // End of namespace Ringworld2
} // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 9ea2494124..1b4b7fca1f 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -108,6 +108,7 @@ public:
void fadeOut();
void clearScreen();
void scalePalette(int RFactor, int GFactor, int BFactor);
+ void loadBlankScene();
};
class SceneHandlerExt: public SceneHandler {
@@ -392,6 +393,8 @@ public:
enum AnimationPaletteMode { ANIMPALMODE_REPLACE_PALETTE = 0, ANIMPALMODE_CURR_PALETTE = 1,
ANIMPALMODE_NONE = 2 };
+enum AnimationObjectMode { ANIMOBJMODE_1 = 1, ANIMOBJMODE_2 = 2, ANIMOBJMODE_42 = 42 };
+
class AnimationPlayer: public EventHandler {
private:
void rleDecode(const byte *pSrc, byte *pDest, int size);
@@ -406,8 +409,9 @@ public:
Common::File _resourceFile;
Rect _rect1, _screenBounds;
int _field38;
- int _field3A, _paletteMode;
- int _objectMode;
+ int _field3A;
+ AnimationPaletteMode _paletteMode;
+ AnimationObjectMode _objectMode;
int _field58, _sliceHeight;
byte _palIndexes[256];
ScenePalette _palette;
@@ -432,6 +436,7 @@ public:
virtual void changePane() {}
virtual void closing() {}
+
bool load(int animId, Action *endAction = NULL);
bool isCompleted();
void close();
@@ -514,25 +519,6 @@ public:
void proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY);
};
-class DataManager: public EventHandler {
-public:
- int _field3C;
- int _field56;
-
- int _palStart;
- int _palLength;
- byte _palData[256 * 3];
- EventHandler *_endHandler;
-public:
- DataManager();
-
- virtual Common::String getClassName() { return "DataManager"; }
- virtual void synchronize(Serializer &s);
- virtual void remove();
-
- void load(int v);
-};
-
} // End of namespace Ringworld2
} // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
index a20d949cd5..ead4f5c770 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
@@ -1554,7 +1554,7 @@ void Scene180::signal() {
R2_GLOBALS._sceneManager._hasPalette = true;
_animationPlayer._paletteMode = ANIMPALMODE_NONE;
_animationPlayer._v = 1;
- _animationPlayer._objectMode = 1;
+ _animationPlayer._objectMode = ANIMOBJMODE_1;
R2_GLOBALS._scene180Mode = 1;
_animationPlayer.load(1);
@@ -1597,7 +1597,7 @@ void Scene180::signal() {
case 5:
_animationPlayer._paletteMode = ANIMPALMODE_NONE;
_animationPlayer._v = 1;
- _animationPlayer._objectMode = 1;
+ _animationPlayer._objectMode = ANIMOBJMODE_1;
R2_GLOBALS._scene180Mode = 2;
_animationPlayer.load(2);
@@ -1702,7 +1702,7 @@ void Scene180::signal() {
_field412 = 1;
_animationPlayer._paletteMode = ANIMPALMODE_REPLACE_PALETTE;
_animationPlayer._v = 1;
- _animationPlayer._objectMode = 42;
+ _animationPlayer._objectMode = ANIMOBJMODE_42;
R2_GLOBALS._scene180Mode = 3;
_animationPlayer.load(3);
break;
@@ -1801,7 +1801,7 @@ void Scene180::signal() {
case 40:
_animationPlayer._paletteMode = ANIMPALMODE_NONE;
- _animationPlayer._objectMode = 1;
+ _animationPlayer._objectMode = ANIMOBJMODE_1;
R2_GLOBALS._scene180Mode = 4;
if (_animationPlayer.load(4)) {
_animationPlayer.dispatch();
@@ -1840,7 +1840,7 @@ void Scene180::signal() {
_field412 = 1;
_animationPlayer._paletteMode = ANIMPALMODE_NONE;
_animationPlayer._v = 1;
- _animationPlayer._objectMode = 1;
+ _animationPlayer._objectMode = ANIMOBJMODE_1;
R2_GLOBALS._scene180Mode = 15;
_animationPlayer.load(15, NULL);
@@ -3080,10 +3080,10 @@ bool Scene300::Seeker::startAction(CursorType action, Event &event) {
} else {
R2_GLOBALS._player.disableControl();
scene->_stripId = 171;
- }
- scene->_sceneMode = 310;
- scene->setAction(&scene->_sequenceManager1, scene, 310, &R2_GLOBALS._player, NULL);
+ scene->_sceneMode = 310;
+ scene->setAction(&scene->_sequenceManager1, scene, 310, &R2_GLOBALS._player, NULL);
+ }
return true;
case R2_READER:
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index ffc491725e..8d165fba07 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -30,7 +30,7 @@ namespace TsAGE {
namespace Ringworld2 {
/*--------------------------------------------------------------------------
- * Scene 1000 - Cutscene: Ship moving
+ * Scene 1000 - Cutscene scene
*
*--------------------------------------------------------------------------*/
@@ -42,6 +42,7 @@ Scene1000::Scene1000(): SceneExt() {
}
void Scene1000::postInit(SceneObjectList *OwnerList) {
+ loadBlankScene();
SceneExt::postInit();
_stripManager.addSpeaker(&_gameTextSpeaker);
@@ -85,6 +86,7 @@ void Scene1000::postInit(SceneObjectList *OwnerList) {
break;
}
+ R2_GLOBALS._uiElements._active = false;
setAction(&_sequenceManager1, this, 1, &R2_GLOBALS._player, NULL);
}
@@ -98,7 +100,7 @@ void Scene1000::signal() {
ScenePalette scenePalette1, scenePalette2;
uint32 black = 0;
- switch (R2_GLOBALS._sceneManager._previousScene) {
+ switch (_sceneMode++) {
case 0:
// TODO: Sort out values
R2_GLOBALS._gfxColors.foreground = 191;
@@ -106,13 +108,13 @@ void Scene1000::signal() {
R2_GLOBALS._fontColors.background = 224;
R2_GLOBALS._fontColors.foreground = 119;
- _dataManager._field56 = 2;
- _dataManager._field3C = 2;
- _dataManager.load(5);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer.load(5, this);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, true, 0);
@@ -144,12 +146,12 @@ void Scene1000::signal() {
case 2:
if (R2_GLOBALS._speechSubtitles & SPEECH_TEXT) {
- setAction(&_sequenceManager1, this, &R2_GLOBALS._player, NULL);
+ setAction(&_sequenceManager1, this, 1, &R2_GLOBALS._player, NULL);
} else {
if (++_field412 < 3)
_sceneMode = 2;
- setAction(&_sequenceManager1, this, &R2_GLOBALS._player, NULL);
+ setAction(&_sequenceManager1, this, 2, &R2_GLOBALS._player, NULL);
}
break;
@@ -160,16 +162,16 @@ void Scene1000::signal() {
R2_GLOBALS._fontColors.background = 224;
R2_GLOBALS._fontColors.foreground = 119;
- for (int percent = 100; percent >= 0; percent += 5)
+ for (int percent = 100; percent >= 0; percent -= 5)
R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(7);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(7, this);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -193,13 +195,13 @@ void Scene1000::signal() {
break;
case 10:
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(6);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(6, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -210,18 +212,18 @@ void Scene1000::signal() {
break;
case 11:
- R2_GLOBALS._scenePalette.loadPalette(NULL);
+ R2_GLOBALS._scenePalette.loadPalette(0);
R2_GLOBALS._sceneManager.changeScene(300);
break;
case 20:
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(8);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(8, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -230,18 +232,18 @@ void Scene1000::signal() {
break;
case 21:
- R2_GLOBALS._scenePalette.loadPalette(NULL);
+ R2_GLOBALS._scenePalette.loadPalette(0);
R2_GLOBALS._sceneManager.changeScene(1530);
break;
case 30:
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(17);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(17, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -260,13 +262,13 @@ void Scene1000::signal() {
break;
case 40:
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(18);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(18, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -283,16 +285,16 @@ void Scene1000::signal() {
case 50:
R2_GLOBALS._sound2.play(306);
- for (int percent = 100; percent >= 0; percent += 5)
+ for (int percent = 100; percent >= 0; percent -= 5)
R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(13);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(13, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -305,16 +307,16 @@ void Scene1000::signal() {
R2_GLOBALS._sound2.play(307);
R2_GLOBALS._sound1.play(308);
- for (int percent = 100; percent >= 0; percent += 5)
+ for (int percent = 100; percent >= 0; percent -= 5)
R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(14);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(14, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -332,16 +334,16 @@ void Scene1000::signal() {
case 60:
R2_GLOBALS._sound1.play(333);
- for (int percent = 100; percent >= 0; percent += 5)
+ for (int percent = 100; percent >= 0; percent -= 5)
R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(12);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(12, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -357,16 +359,16 @@ void Scene1000::signal() {
case 70:
R2_GLOBALS._sound2.play(113);
- for (int percent = 100; percent >= 0; percent += 5)
+ for (int percent = 100; percent >= 0; percent -= 5)
R2_GLOBALS._scenePalette.fade((const byte *)&black, true, percent);
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(9);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(9, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -383,13 +385,13 @@ void Scene1000::signal() {
break;
case 80:
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(10);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(10, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -401,13 +403,13 @@ void Scene1000::signal() {
break;
case 90:
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(11);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(11, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -428,13 +430,13 @@ void Scene1000::signal() {
R2_GLOBALS._sound1.play(304);
R2_GLOBALS._sound2.play(82);
- _dataManager._field3C = 2;
- _dataManager._field56 = 2;
- _dataManager.load(19);
+ _animationPlayer._paletteMode = ANIMPALMODE_NONE;
+ _animationPlayer._objectMode = ANIMOBJMODE_2;
+ _animationPlayer.load(19, this);
- R2_GLOBALS._scenePalette.loadPalette(_dataManager._palData, 0, 256);
+ R2_GLOBALS._scenePalette.loadPalette(_animationPlayer._subData._palData, 0, 256);
R2_GLOBALS._sceneManager._hasPalette = false;
- _dataManager.dispatch();
+ _animationPlayer.dispatch();
_fieldD2E = 1;
R2_GLOBALS._scenePalette.fade((const byte *)&black, 1, 0);
@@ -452,7 +454,20 @@ void Scene1000::signal() {
}
void Scene1000::dispatch() {
+ if (_fieldD2E) {
+ if (_animationPlayer.isCompleted()) {
+ _fieldD2E = 0;
+ _animationPlayer.close();
+ _animationPlayer.remove();
+
+ if (_sceneMode == 52)
+ _endHandler = this;
+ } else {
+ _animationPlayer.dispatch();
+ }
+ }
+ Scene::dispatch();
}
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index 4ee0c29f4f..23ebb2c276 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -44,7 +44,7 @@ public:
SequenceManager _sequenceManager1;
SequenceManager _sequenceManager2;
SpeakerGameText _gameTextSpeaker;
- DataManager _dataManager;
+ AnimationPlayer _animationPlayer;
int _field412;
int _fieldD2E;