diff options
Diffstat (limited to 'engines/tsage/ringworld_scenes1.cpp')
-rw-r--r-- | engines/tsage/ringworld_scenes1.cpp | 60 |
1 files changed, 44 insertions, 16 deletions
diff --git a/engines/tsage/ringworld_scenes1.cpp b/engines/tsage/ringworld_scenes1.cpp index 82f0153d8f..6960788db3 100644 --- a/engines/tsage/ringworld_scenes1.cpp +++ b/engines/tsage/ringworld_scenes1.cpp @@ -3102,6 +3102,18 @@ void Scene6100::Action7::signal() { /*--------------------------------------------------------------------------*/ +void Scene6100::Object::synchronize(Serializer &s) { + SceneObject::synchronize(s); + + // Save the double fields of the FloatSet + s.syncBytes((byte *)&_floats._float1, sizeof(double)); + s.syncBytes((byte *)&_floats._float2, sizeof(double)); + s.syncBytes((byte *)&_floats._float3, sizeof(double)); + s.syncBytes((byte *)&_floats._float4, sizeof(double)); +} + +/*--------------------------------------------------------------------------*/ + void Scene6100::ProbeMover::dispatch() { Scene6100 *scene = (Scene6100 *)_globals->_sceneManager._scene; @@ -3123,14 +3135,43 @@ void Scene6100::Item1::doAction(int action) { /*--------------------------------------------------------------------------*/ +Scene6100::Scene6100(): Scene() { + _objList[0] = &_sunflower1; + _objList[1] = &_sunflower2; + _objList[2] = &_sunflower3; + _objList[3] = &_rocks; + + _speed = 30; + _fadePercent = 100; + _rocksCheck = false; + _hitCount = 0; + _turnAmount = 0; + _angle = 0; + _msgActive = false; + + _globals->_sceneHandler._delayTicks = 8; + + _globals->_player.disableControl(); + _globals->_events.setCursor(CURSOR_WALK); +} + +void Scene6100::synchronize(Serializer &s) { + Scene::synchronize(s); + + s.syncAsSint16LE(_speed); + s.syncAsSint16LE(_fadePercent); + s.syncAsByte(_rocksCheck); + s.syncAsByte(_msgActive); + s.syncAsSint16LE(_hitCount); + s.syncAsSint16LE(_turnAmount); + s.syncAsSint16LE(_angle); +} + void Scene6100::postInit(SceneObjectList *OwnerList) { loadScene(6100); Scene::postInit(); setZoomPercents(62, 2, 200, 425); - _globals->_sceneHandler._delayTicks = 8; - _globals->_player.disableControl(); - _globals->_events.setCursor(CURSOR_WALK); _stripManager.addSpeaker(&_speakerQR); _stripManager.addSpeaker(&_speakerSL); @@ -3178,11 +3219,6 @@ void Scene6100::postInit(SceneObjectList *OwnerList) { _probe._floats._float3 = 0.0; _probe.hide(); - _objList[0] = &_sunflower1; - _objList[1] = &_sunflower2; - _objList[2] = &_sunflower3; - _objList[3] = &_rocks; - int baseVal = 2000; for (int idx = 0; idx < 3; ++idx) { _objList[idx]->_floats._float1 = _globals->_randomSource.getRandomNumber(999); @@ -3201,14 +3237,6 @@ void Scene6100::postInit(SceneObjectList *OwnerList) { _objList[idx]->changeZoom(-1); } - _speed = 30; - _fadePercent = 100; - _rocksCheck = false; - _hitCount = 0; - _turnAmount = 0; - _angle = 0; - _msgActive = false; - setAction(&_action5); _globals->_scenePalette.addRotation(96, 143, -1); |