aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/mads/nebular/nebular_scenes5.cpp82
-rw-r--r--engines/mads/nebular/nebular_scenes5.h13
2 files changed, 88 insertions, 7 deletions
diff --git a/engines/mads/nebular/nebular_scenes5.cpp b/engines/mads/nebular/nebular_scenes5.cpp
index 1ad29a39a4..cc8cdbd9e0 100644
--- a/engines/mads/nebular/nebular_scenes5.cpp
+++ b/engines/mads/nebular/nebular_scenes5.cpp
@@ -530,6 +530,12 @@ void Scene503::setup() {
_scene->addActiveVocab(VERB_WALKTO);
}
+void Scene503::synchronize(Common::Serializer &s) {
+ Scene5xx::synchronize(s);
+
+ s.syncAsSint16LE(_detonatorHotspotId);
+}
+
void Scene503::enter() {
_globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('c', -1));
@@ -650,6 +656,13 @@ void Scene504::setup() {
setAAName();
}
+void Scene504::synchronize(Common::Serializer &s) {
+ Scene5xx::synchronize(s);
+
+ s.syncAsSint16LE(_carAnimationMode);
+ s.syncAsSint16LE(_carFrame);
+}
+
void Scene504::enter() {
_globals._spriteIndexes[2] = _scene->_sprites.addSprites(formAnimName('a', 2));
@@ -847,6 +860,19 @@ void Scene505::setup() {
setAAName();
}
+void Scene505::synchronize(Common::Serializer &s) {
+ Scene5xx::synchronize(s);
+
+ s.syncAsSint16LE(_frame);
+ s.syncAsSint16LE(_nextButtonId);
+ s.syncAsSint16LE(_homeSelectedId);
+ s.syncAsSint16LE(_selectedId);
+ s.syncAsSint16LE(_activeCars);
+
+ for (int i = 0; i < 9; i++)
+ s.syncAsSint16LE(_carLocations[i]);
+}
+
void Scene505::enter() {
for (int i = 0; i < 9; i++)
_globals._spriteIndexes[i] = _scene->_sprites.addSprites(formAnimName('a', i + 1));
@@ -1104,6 +1130,24 @@ void Scene506::setup() {
_scene->addActiveVocab(NOUN_LABORATORY);
}
+void Scene506::synchronize(Common::Serializer &s) {
+ Scene5xx::synchronize(s);
+
+ s.syncAsSint16LE(_doorPos.x);
+ s.syncAsSint16LE(_doorPos.y);
+
+ s.syncAsByte(_heroFacing);
+
+ s.syncAsSint16LE(_doorDepth);
+ s.syncAsSint16LE(_doorSpriteIdx);
+ s.syncAsSint16LE(_doorSequenceIdx);
+ s.syncAsSint16LE(_doorWord);
+
+ s.syncAsByte(_labDoorFl);
+ s.syncAsByte(_firstDoorFl);
+ s.syncAsByte(_actionFl);
+}
+
void Scene506::enter() {
_globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('q', 0));
_globals._spriteIndexes[2] = _scene->_sprites.addSprites(formAnimName('q', 1));
@@ -1161,7 +1205,7 @@ void Scene506::step() {
_doorWord = 0x37D;
}
}
- room_506_door_sequences();
+ handleDoorSequences();
}
if (_game._trigger >= 70) {
@@ -1191,7 +1235,7 @@ void Scene506::step() {
}
}
-void Scene506::room_506_door_sequences() {
+void Scene506::handleDoorSequences() {
_game._triggerSetupMode = SEQUENCE_TRIGGER_DAEMON;
if (_firstDoorFl) {
@@ -1281,14 +1325,14 @@ void Scene506::actions() {
_doorPos = Common::Point(16, 111);
}
_actionFl = true;
- room_506_door_sequences();
+ handleDoorSequences();
} else if (_action.isAction(VERB_WALK_INTO, NOUN_SOFTWARE_STORE)) {
if (_firstDoorFl) {
_heroFacing = FACING_NORTHWEST;
_doorPos = Common::Point(80, 102);
}
_actionFl = true;
- room_506_door_sequences();
+ handleDoorSequences();
} else if (_action.isAction(VERB_GET_INTO, NOUN_CAR)) {
switch (_game._trigger) {
case 0:
@@ -1365,6 +1409,12 @@ void Scene507::setup() {
_scene->addActiveVocab(VERB_WALKTO);
}
+void Scene507::synchronize(Common::Serializer &s) {
+ Scene5xx::synchronize(s);
+
+ s.syncAsSint16LE(_penlightHotspotId);
+}
+
void Scene507::enter() {
_globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('p', -1));
_globals._spriteIndexes[2] = _scene->_sprites.addSprites("*RXMRD_3");
@@ -1477,6 +1527,12 @@ void Scene508::setup() {
_scene->addActiveVocab(NOUN_LASER_BEAM);
}
+void Scene508::synchronize(Common::Serializer &s) {
+ Scene5xx::synchronize(s);
+
+ s.syncAsSint16LE(_chosenObject);
+}
+
void Scene508::enter() {
_globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('a', 0));
_globals._spriteIndexes[2] = _scene->_sprites.addSprites(formAnimName('m', 0));
@@ -1736,6 +1792,17 @@ void Scene511::setup() {
_scene->addActiveVocab(VERB_WALKTO);
}
+void Scene511::synchronize(Common::Serializer &s) {
+ Scene5xx::synchronize(s);
+
+ s.syncAsByte(_handingLine);
+ s.syncAsByte(_lineMoving);
+
+ s.syncAsSint16LE(_lineAnimationMode);
+ s.syncAsSint16LE(_lineFrame);
+ s.syncAsSint16LE(_lineAnimationPosition);
+}
+
void Scene511::enter() {
_globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('c', 0));
_globals._spriteIndexes[4] = _scene->_sprites.addSprites("*RXCD_6");
@@ -2058,6 +2125,13 @@ void Scene512::setup() {
_scene->addActiveVocab(NOUN_REGISTER_DRAWER);
}
+void Scene512::synchronize(Common::Serializer &s) {
+ Scene5xx::synchronize(s);
+
+ s.syncAsSint16LE(_fishingRodHotspotId);
+ s.syncAsSint16LE(_keyHotspotId);
+}
+
void Scene512::enter() {
_globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('r', -1));
_globals._spriteIndexes[2] = _scene->_sprites.addSprites("*RXMRC_9");
diff --git a/engines/mads/nebular/nebular_scenes5.h b/engines/mads/nebular/nebular_scenes5.h
index c49532dc8c..7c21fbaae1 100644
--- a/engines/mads/nebular/nebular_scenes5.h
+++ b/engines/mads/nebular/nebular_scenes5.h
@@ -86,6 +86,7 @@ private:
public:
Scene503(MADSEngine *vm) : Scene5xx(vm) {}
+ void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();
@@ -99,6 +100,7 @@ private:
public:
Scene504(MADSEngine *vm) : Scene5xx(vm) {}
+ void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();
@@ -119,6 +121,7 @@ private:
public:
Scene505(MADSEngine *vm) : Scene5xx(vm) {}
+ void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();
@@ -128,8 +131,6 @@ public:
class Scene506: public Scene5xx{
private:
- int _actionFl; /* Flag to note daemon is running vs. parser */
-
Common::Point _doorPos;
Facing _heroFacing;
@@ -140,11 +141,13 @@ private:
bool _labDoorFl;
bool _firstDoorFl;
+ bool _actionFl;
- void room_506_door_sequences();
+ void handleDoorSequences();
public:
Scene506(MADSEngine *vm) : Scene5xx(vm) {}
+ void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();
@@ -158,6 +161,7 @@ private:
public:
Scene507(MADSEngine *vm) : Scene5xx(vm) {}
+ void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();
@@ -172,6 +176,7 @@ private:
public:
Scene508(MADSEngine *vm) : Scene5xx(vm) {}
+ void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();
@@ -190,6 +195,7 @@ private:
public:
Scene511(MADSEngine *vm) : Scene5xx(vm) {}
+ void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();
@@ -205,6 +211,7 @@ private:
public:
Scene512(MADSEngine *vm) : Scene5xx(vm) {}
+ void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();