aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/globals.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage/globals.cpp')
-rw-r--r--engines/tsage/globals.cpp150
1 files changed, 111 insertions, 39 deletions
diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp
index b7724f072c..a8ab145dbb 100644
--- a/engines/tsage/globals.cpp
+++ b/engines/tsage/globals.cpp
@@ -26,6 +26,7 @@
#include "tsage/ringworld/ringworld_demo.h"
#include "tsage/ringworld/ringworld_logic.h"
#include "tsage/ringworld2/ringworld2_logic.h"
+#include "tsage/ringworld2/ringworld2_scenes0.h"
#include "tsage/staticres.h"
namespace TsAGE {
@@ -47,6 +48,11 @@ static SavedObject *classFactoryProc(const Common::String &className) {
if (className == "SceneObjectWrapper") return new SceneObjectWrapper();
if (className == "PaletteRotation") return new PaletteRotation();
if (className == "PaletteFader") return new PaletteFader();
+ if (className == "SceneText") return new SceneText();
+
+ // Return to Ringworld specific classes
+ if (className == "Scene205_Star") return new Ringworld2::Star();
+
return NULL;
}
@@ -119,8 +125,11 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface
_sounds.push_back(&_soundHandler);
_sounds.push_back(&_sequenceManager._soundHandler);
- _scrollFollower = NULL;
- _inventory = NULL;
+ _scrollFollower = nullptr;
+
+ _inventory = nullptr;
+ _game = nullptr;
+ _sceneHandler = nullptr;
switch (g_vm->getGameID()) {
case GType_Ringworld:
@@ -145,6 +154,7 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface
_sceneHandler = new Ringworld2::SceneHandlerExt();
break;
}
+
}
Globals::~Globals() {
@@ -204,6 +214,11 @@ void Globals::dispatchSounds() {
/*--------------------------------------------------------------------------*/
+TsAGE2Globals::TsAGE2Globals() {
+ _onSelectItem = NULL;
+ _interfaceY = 0;
+}
+
void TsAGE2Globals::reset() {
Globals::reset();
@@ -224,15 +239,46 @@ void TsAGE2Globals::synchronize(Serializer &s) {
namespace BlueForce {
BlueForceGlobals::BlueForceGlobals(): TsAGE2Globals() {
+ _hiddenDoorStatus = 0;
+ _nico910State = 0;
+ _v4CEE4 = 0;
+ _v4CEE6 = 0;
+ _v4CEE8 = 0;
+ _deziTopic = 0;
+ _deathReason = 0;
+ _driveFromScene = 300;
+ _driveToScene = 0;
+ _subFlagBitArr1 = 0;
+ _subFlagBitArr2 = 0;
+ _v50CC2 = 0;
+ _scene410Action1Count = 0;
+ _scene410TalkCount = 0;
+ _scene410HarrisonMovedFl = 0;
+ _bookmark = bNone;
+ _mapLocationId = 1;
+ _clip1Bullets = 8;
+ _clip2Bullets = 8;
+
+ _dayNumber = 0;
+ _tonyDialogCtr = 0;
+ _marinaWomanCtr = 0;
+ _kateDialogCtr = 0;
+ _v4CEB6 = 0;
+ _safeCombination = 0;
+ _gateStatus = 0;
+ _greenDay5TalkCtr = 0;
+ _v4CEC8 = 1;
+ _v4CECA = 0;
+ _v4CECC = 0;
}
void BlueForceGlobals::synchronize(Serializer &s) {
TsAGE2Globals::synchronize(s);
+ int16 useless = 0;
s.syncAsSint16LE(_dayNumber);
if (s.getVersion() < 9) {
- int tmpVar = 0;
- s.syncAsSint16LE(tmpVar);
+ s.syncAsSint16LE(useless);
}
s.syncAsSint16LE(_tonyDialogCtr);
s.syncAsSint16LE(_marinaWomanCtr);
@@ -241,7 +287,8 @@ void BlueForceGlobals::synchronize(Serializer &s) {
s.syncAsSint16LE(_safeCombination);
s.syncAsSint16LE(_gateStatus);
s.syncAsSint16LE(_greenDay5TalkCtr);
- s.syncAsSint16LE(_v4CEC4);
+ if (s.getVersion() < 11)
+ s.syncAsSint16LE(useless);
s.syncAsSint16LE(_v4CEC8);
s.syncAsSint16LE(_v4CECA);
s.syncAsSint16LE(_v4CECC);
@@ -256,19 +303,23 @@ void BlueForceGlobals::synchronize(Serializer &s) {
s.syncAsSint16LE(_deathReason);
s.syncAsSint16LE(_driveFromScene);
s.syncAsSint16LE(_driveToScene);
- s.syncAsSint16LE(_v501F8);
- s.syncAsSint16LE(_v501FA);
- s.syncAsSint16LE(_v501FC);
- s.syncAsSint16LE(_v5020C);
- s.syncAsSint16LE(_v50696);
+ if (s.getVersion() < 11) {
+ s.syncAsSint16LE(useless);
+ s.syncAsSint16LE(useless);
+ s.syncAsSint16LE(useless);
+ s.syncAsSint16LE(useless);
+ s.syncAsSint16LE(useless);
+ }
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(_scene410Action1Count);
+ s.syncAsSint16LE(_scene410TalkCount);
+ s.syncAsSint16LE(_scene410HarrisonMovedFl);
+ if (s.getVersion() < 11) {
+ s.syncAsSint16LE(useless);
+ s.syncAsSint16LE(useless);
+ }
s.syncAsSint16LE(_bookmark);
s.syncAsSint16LE(_mapLocationId);
s.syncAsSint16LE(_clip1Bullets);
@@ -298,7 +349,6 @@ void BlueForceGlobals::reset() {
_safeCombination = 0;
_gateStatus = 0;
_greenDay5TalkCtr = 0;
- _v4CEC4 = 0;
_v4CEC8 = 1;
_v4CECA = 0;
_v4CECC = 0;
@@ -327,19 +377,12 @@ void BlueForceGlobals::reset() {
_v4CEE8 = 0;
_deziTopic = 0;
_deathReason = 0;
- _v501F8 = 0;
- _v501FA = 0;
- _v501FC = 0;
- _v5020C = 0;
- _v50696 = 0;
_subFlagBitArr1 = 0;
_subFlagBitArr2 = 0;
_v50CC2 = 0;
- _v50CC4 = 0;
- _v50CC6 = 0;
- _v50CC8 = 0;
- _v51C42 = 0;
- _v51C44 = 1;
+ _scene410Action1Count = 0;
+ _scene410TalkCount = 0;
+ _scene410HarrisonMovedFl = 0;
_clip1Bullets = 8;
_clip2Bullets = 8;
}
@@ -370,6 +413,43 @@ namespace Ringworld2 {
Ringworld2Globals::Ringworld2Globals() {
_scannerDialog = new ScannerDialog();
_speechSubtitles = SPEECH_TEXT;
+
+ _stripModifier = 0;
+ _flubMazeArea = 1;
+ _flubMazeEntryDirection = 0;
+ _maze3800SceneNumb = 3800;
+ _landerSuitNumber = 2;
+ _desertStepsRemaining = 5;
+ _desertCorrectDirection = 0;
+ _desertPreviousDirection = 0;
+ _desertWrongDirCtr = -1;
+ _balloonAltitude = 5;
+ _scene1925CurrLevel = 0;
+ _walkwaySceneNumber = 0;
+ _v56AA0 = 0;
+ _scientistConvIndex = 0;
+ _v56AA6 = 1;
+ _v56AA7 = 1;
+ _v56AA8 = 1;
+ _scene180Mode = -1;
+ _v57709 = 0;
+ _v5780C = 0;
+ _v5780E = 0;
+ _v57810 = 0;
+
+ _fadePaletteFlag = false;
+ _insetUp = 0;
+ _frameEdgeColor = 2;
+ _animationCtr = 0;
+ _electromagnetChangeAmount = 0;
+ _electromagnetZoom = 0;
+ _v565E5 = 0;
+ _v565E7 = 0;
+ _v565E9 = -5;
+ _v565EB = 26;
+ _foodCount = 0;
+ _rimLocation = 0;
+ _rimTransportLocation = 0;
}
Ringworld2Globals::~Ringworld2Globals() {
@@ -400,9 +480,7 @@ void Ringworld2Globals::reset() {
_fadePaletteFlag = false;
_v5589E.set(0, 0, 0, 0);
_v558B6.set(0, 0, 0, 0);
- _v558C2 = 0;
_animationCtr = 0;
- _v5657C = 0;
_electromagnetChangeAmount = 0;
_electromagnetZoom = 0;
_v565E5 = 0;
@@ -412,7 +490,7 @@ void Ringworld2Globals::reset() {
_foodCount = 0;
_rimLocation = 0;
_rimTransportLocation = 0;
- _v565AE = 0;
+ _stripModifier = 0;
_spillLocation[0] = 0;
_spillLocation[1] = 3;
_spillLocation[R2_SEEKER] = 5;
@@ -452,7 +530,7 @@ void Ringworld2Globals::reset() {
_vampireData[16]._shotsRequired = 1;
_vampireData[17]._shotsRequired = 1;
- _v566A6 = 3800;
+ _maze3800SceneNumb = 3800;
_landerSuitNumber = 2;
_flubMazeArea = 1;
_flubMazeEntryDirection = 0;
@@ -471,13 +549,11 @@ void Ringworld2Globals::reset() {
_v56AA6 = 1;
_v56AA7 = 1;
_v56AA8 = 1;
- _v56AAB = 0;
_scene180Mode = -1;
_v57709 = 0;
_v5780C = 0;
_v5780E = 0;
_v57810 = 0;
- _v57C2C = 0;
_s1550PlayerArea[R2_QUINN] = Common::Point(27, 4);
_s1550PlayerArea[R2_SEEKER] = Common::Point(27, 4);
Common::fill(&_scannerFrequencies[0], &_scannerFrequencies[MAX_CHARACTERS], 1);
@@ -513,9 +589,7 @@ void Ringworld2Globals::synchronize(Serializer &s) {
_v5589E.synchronize(s);
_v558B6.synchronize(s);
- s.syncAsSint16LE(_v558C2);
s.syncAsSint16LE(_animationCtr);
- s.syncAsSint16LE(_v5657C);
s.syncAsSint16LE(_electromagnetChangeAmount);
s.syncAsSint16LE(_electromagnetZoom);
s.syncAsSint16LE(_v565E5);
@@ -526,19 +600,17 @@ void Ringworld2Globals::synchronize(Serializer &s) {
s.syncAsSint32LE(_rimLocation);
s.syncAsSint16LE(_rimTransportLocation);
s.syncAsSint16LE(_landerSuitNumber);
- s.syncAsSint16LE(_v566A6);
+ s.syncAsSint16LE(_maze3800SceneNumb);
s.syncAsSint16LE(_desertWrongDirCtr);
s.syncAsSint16LE(_scene1925CurrLevel); // _v56A9C
s.syncAsSint16LE(_walkwaySceneNumber);
s.syncAsSint16LE(_ventCellPos.x);
s.syncAsSint16LE(_ventCellPos.y);
- s.syncAsSint16LE(_v56AAB);
s.syncAsSint16LE(_scene180Mode);
s.syncAsSint16LE(_v57709);
s.syncAsSint16LE(_v5780C);
s.syncAsSint16LE(_v5780E);
s.syncAsSint16LE(_v57810);
- s.syncAsSint16LE(_v57C2C);
s.syncAsByte(_s1550PlayerArea[R2_QUINN].x);
s.syncAsByte(_s1550PlayerArea[R2_SEEKER].x);
@@ -548,7 +620,7 @@ void Ringworld2Globals::synchronize(Serializer &s) {
for (i = 0; i < MAX_CHARACTERS; ++i)
s.syncAsByte(_scannerFrequencies[i]);
- s.syncAsByte(_v565AE);
+ s.syncAsByte(_stripModifier);
s.syncAsByte(_flubMazeArea);
s.syncAsByte(_flubMazeEntryDirection);
s.syncAsByte(_desertStepsRemaining);
@@ -577,7 +649,7 @@ void Ringworld2Globals::synchronize(Serializer &s) {
s.syncAsSint16LE(_balloonPosition.x);
s.syncAsSint16LE(_balloonPosition.y);
- // Synchronise Flub maze vampire data
+ // Synchronize Flub maze vampire data
for (i = 0; i < 18; ++i) {
s.syncAsSint16LE(_vampireData[i]._isAlive);
s.syncAsSint16LE(_vampireData[i]._shotsRequired);