diff options
Diffstat (limited to 'engines/tsage')
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_logic.cpp | 31 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_logic.h | 28 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes0.cpp | 16 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes1.cpp | 167 | ||||
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_scenes1.h | 2 |
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; |