diff options
author | Matthew Hoops | 2011-12-12 15:25:28 -0500 |
---|---|---|
committer | Matthew Hoops | 2011-12-12 15:25:28 -0500 |
commit | 00279659b22cbd5db739d5351e83a9fc2a2ae408 (patch) | |
tree | 497f06f46820043cbdf1725652b8f0073223e24a /engines/tsage/globals.cpp | |
parent | d932df79bed5aac97e17c0920a5e75cb5ce733ee (diff) | |
parent | d1628feb761acc9f4607f64de3eb620fea53bcc9 (diff) | |
download | scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.tar.gz scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.tar.bz2 scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.zip |
Merge remote branch 'upstream/master' into pegasus
Conflicts:
video/qt_decoder.cpp
Diffstat (limited to 'engines/tsage/globals.cpp')
-rw-r--r-- | engines/tsage/globals.cpp | 186 |
1 files changed, 168 insertions, 18 deletions
diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp index 788ab71b76..769ad4c054 100644 --- a/engines/tsage/globals.cpp +++ b/engines/tsage/globals.cpp @@ -25,6 +25,7 @@ #include "tsage/blue_force/blueforce_logic.h" #include "tsage/ringworld/ringworld_demo.h" #include "tsage/ringworld/ringworld_logic.h" +#include "tsage/ringworld2/ringworld2_logic.h" namespace TsAGE { @@ -75,6 +76,17 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface _fontColors.background = 88; _fontColors.foreground = 92; _dialogCenter.y = 140; + } else if (g_vm->getGameID() == GType_Ringworld2) { + // Return to Ringworld + _gfxFontNumber = 50; + _gfxColors.background = 0; + _gfxColors.foreground = 59; + _fontColors.background = 4; + _fontColors.foreground = 15; + _color1 = 59; + _color2 = 15; + _color3 = 4; + _dialogCenter.y = 100; } else if ((g_vm->getGameID() == GType_Ringworld) && (g_vm->getFeatures() & GF_CD)) { _gfxFontNumber = 50; _gfxColors.background = 53; @@ -85,6 +97,7 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface _color2 = 18; _color3 = 18; } else { + // Ringworld _gfxFontNumber = 50; _gfxColors.background = 53; _gfxColors.foreground = 18; @@ -124,6 +137,12 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface _inventory = new BlueForce::BlueForceInvObjectList(); _sceneHandler = new BlueForce::SceneHandlerExt(); break; + + case GType_Ringworld2: + _inventory = new Ringworld2::Ringworld2InvObjectList(); + _game = new Ringworld2::Ringworld2Game(); + _sceneHandler = new Ringworld2::SceneHandlerExt(); + break; } } @@ -136,7 +155,7 @@ Globals::~Globals() { } void Globals::reset() { - Common::set_to(&_flags[0], &_flags[MAX_FLAGS], false); + Common::fill(&_flags[0], &_flags[MAX_FLAGS], false); g_saver->addFactory(classFactoryProc); } @@ -169,6 +188,9 @@ void Globals::synchronize(Serializer &s) { s.syncAsSint16LE(_prevSceneOffset.x); s.syncAsSint16LE(_prevSceneOffset.y); SYNC_POINTER(_scrollFollower); s.syncAsSint32LE(_stripNum); + + if (s.getVersion() >= 8) + _walkRegions.synchronize(s); } void Globals::dispatchSound(ASound *obj) { @@ -181,38 +203,71 @@ void Globals::dispatchSounds() { /*--------------------------------------------------------------------------*/ +void TsAGE2Globals::reset() { + Globals::reset(); + + // Reset the inventory + T2_GLOBALS._uiElements.updateInventory(); + T2_GLOBALS._uiElements._scoreValue = 0; + T2_GLOBALS._uiElements._active = false; +} + +void TsAGE2Globals::synchronize(Serializer &s) { + Globals::synchronize(s); + + s.syncAsSint16LE(_interfaceY); +} + +/*--------------------------------------------------------------------------*/ + namespace BlueForce { -BlueForceGlobals::BlueForceGlobals(): Globals() { +BlueForceGlobals::BlueForceGlobals(): TsAGE2Globals() { } void BlueForceGlobals::synchronize(Serializer &s) { - Globals::synchronize(s); + TsAGE2Globals::synchronize(s); s.syncAsSint16LE(_dayNumber); - s.syncAsSint16LE(_v4CEA4); + if (s.getVersion() < 9) { + int tmpVar = 0; + s.syncAsSint16LE(tmpVar); + } + s.syncAsSint16LE(_tonyDialogCtr); s.syncAsSint16LE(_marinaWomanCtr); + s.syncAsSint16LE(_kateDialogCtr); s.syncAsSint16LE(_v4CEB6); s.syncAsSint16LE(_safeCombination); - s.syncAsSint16LE(_v4CEC0); - s.syncAsSint16LE(_v4CEC2); + s.syncAsSint16LE(_gateStatus); + s.syncAsSint16LE(_greenDay5TalkCtr); s.syncAsSint16LE(_v4CEC4); s.syncAsSint16LE(_v4CEC8); + s.syncAsSint16LE(_v4CECA); + s.syncAsSint16LE(_v4CECC); + for (int i = 0; i < 18; i++) + s.syncAsByte(_breakerBoxStatusArr[i]); + s.syncAsSint16LE(_hiddenDoorStatus); + s.syncAsSint16LE(_v4CEE2); + s.syncAsSint16LE(_v4CEE4); + s.syncAsSint16LE(_v4CEE6); + s.syncAsSint16LE(_v4CEE8); s.syncAsSint16LE(_deziTopic); s.syncAsSint16LE(_deathReason); s.syncAsSint16LE(_driveFromScene); s.syncAsSint16LE(_driveToScene); + s.syncAsSint16LE(_v501F8); + s.syncAsSint16LE(_v501FA); s.syncAsSint16LE(_v501FC); + s.syncAsSint16LE(_v5020C); s.syncAsSint16LE(_v50696); - s.syncAsSint16LE(_v5098C); - s.syncAsSint16LE(_v5098D); + s.syncAsSint16LE(_subFlagBitArr1); + s.syncAsSint16LE(_subFlagBitArr2); s.syncAsSint16LE(_v50CC2); s.syncAsSint16LE(_v50CC4); s.syncAsSint16LE(_v50CC6); s.syncAsSint16LE(_v50CC8); s.syncAsSint16LE(_v51C42); s.syncAsSint16LE(_v51C44); - s.syncAsSint16LE(_interfaceY); s.syncAsSint16LE(_bookmark); s.syncAsSint16LE(_mapLocationId); s.syncAsSint16LE(_clip1Bullets); @@ -220,7 +275,7 @@ void BlueForceGlobals::synchronize(Serializer &s) { } void BlueForceGlobals::reset() { - Globals::reset(); + TsAGE2Globals::reset(); _scenePalette.clearListeners(); _scrollFollower = &_player; @@ -228,29 +283,56 @@ void BlueForceGlobals::reset() { // Reset the inventory ((BlueForceInvObjectList *)_inventory)->reset(); - BF_GLOBALS._uiElements.updateInventory(); - BF_GLOBALS._uiElements._scoreValue = 0; _mapLocationId = 1; _driveFromScene = 300; _driveToScene = 0; - _interfaceY = BF_INTERFACE_Y; + _interfaceY = UI_INTERFACE_Y; _dayNumber = 0; - _v4CEA4 = 0; + _tonyDialogCtr = 0; _marinaWomanCtr = 0; + _kateDialogCtr = 0; _v4CEB6 = 0; _safeCombination = 0; - _v4CEC0 = 0; - _v4CEC2 = 0; + _gateStatus = 0; + _greenDay5TalkCtr = 0; _v4CEC4 = 0; _v4CEC8 = 1; + _v4CECA = 0; + _v4CECC = 0; + _breakerBoxStatusArr[0] = 2; + _breakerBoxStatusArr[1] = 2; + _breakerBoxStatusArr[2] = 2; + _breakerBoxStatusArr[3] = 1; + _breakerBoxStatusArr[4] = 2; + _breakerBoxStatusArr[5] = 2; + _breakerBoxStatusArr[6] = 2; + _breakerBoxStatusArr[7] = 2; + _breakerBoxStatusArr[8] = 2; + _breakerBoxStatusArr[9] = 2; + _breakerBoxStatusArr[10] = 2; + _breakerBoxStatusArr[11] = 2; + _breakerBoxStatusArr[12] = 1; + _breakerBoxStatusArr[13] = 1; + _breakerBoxStatusArr[14] = 2; + _breakerBoxStatusArr[15] = 2; + _breakerBoxStatusArr[16] = 3; + _breakerBoxStatusArr[17] = 0; + _hiddenDoorStatus = 0; + _v4CEE2 = 0; + _v4CEE4 = 0; + _v4CEE6 = 0; + _v4CEE8 = 0; _deziTopic = 0; _deathReason = 0; + _v501F8 = 0; + _v501FA = 0; _v501FC = 0; + _v5020C = 0; _v50696 = 0; - _v5098C = 0; - _v5098D = 0; + _subFlagBitArr1 = 0; + _subFlagBitArr2 = 0; _v50CC2 = 0; _v50CC4 = 0; _v50CC6 = 0; @@ -282,4 +364,72 @@ bool BlueForceGlobals::removeFlag(int flagNum) { } // end of namespace BlueForce +namespace Ringworld2 { + +void Ringworld2Globals::reset() { + Globals::reset(); + + // Reset the inventory + R2_INVENTORY.reset(); + T2_GLOBALS._uiElements.updateInventory(); + T2_GLOBALS._uiElements._active = false; + + // Reset fields + _v5657C = 0; + _v565F5 = 0; + _v565AE = 0; + for (int i = 0; i < 14; i++) + _v56605[i] = 0; + _v57C2C = 0; + _v58CE2 = 0; + Common::fill(&_v565F1[0], &_v565F1[MAX_CHARACTERS], 0); + _speechSubtitles = SPEECH_VOICE | SPEECH_TEXT; + _insetUp = 0; + + Common::fill(&_v565F1[0], &_v565F1[MAX_CHARACTERS], 0); + Common::fill(&_stripManager_lookupList[0], &_stripManager_lookupList[12], 0); + _stripManager_lookupList[0] = 1; + _stripManager_lookupList[1] = 1; + _stripManager_lookupList[2] = 1; + _stripManager_lookupList[3] = 1; + _stripManager_lookupList[4] = 1; + _stripManager_lookupList[5] = 1; + _stripManager_lookupList[8] = 1; + _stripManager_lookupList[9] = 1; + _stripManager_lookupList[10] = 1; + _stripManager_lookupList[11] = 1; + + // Reset fields stored in the player class + _player._characterIndex = R2_QUINN; + _player._characterScene[1] = 100; + _player._characterScene[2] = 300; + _player._characterScene[3] = 300; +} + +void Ringworld2Globals::synchronize(Serializer &s) { + TsAGE2Globals::synchronize(s); + int i; + + s.syncAsSint16LE(_v5657C); + s.syncAsSint16LE(_v565F5); + s.syncAsSint16LE(_v57C2C); + s.syncAsSint16LE(_v58CE2); + s.syncAsSint16LE(_speechSubtitles); + + for (i = 0; i < MAX_CHARACTERS; ++i) + s.syncAsSint16LE(_v565F1[i]); + + s.syncAsByte(_v565AE); + + for (i = 0; i < 14; ++i) + s.syncAsByte(_v56605[i]); + + for (i = 0; i < 12; ++i) + s.syncAsByte(_stripManager_lookupList[i]); + + s.syncAsSint16LE(_insetUp); +} + +} // end of namespace Ringworld2 + } // end of namespace TsAGE |