aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/ringworld_scenes1.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2011-06-04 20:39:38 +1000
committerPaul Gilbert2011-06-04 20:40:09 +1000
commitdc6e60f5164446cfa6cfcdcea864cb2074671012 (patch)
tree6ff6665184a067d810132ef978ebe7abd5a5d117 /engines/tsage/ringworld_scenes1.cpp
parentce32745d9c26a0b97dce6a137a46ff2004c7be02 (diff)
downloadscummvm-rg350-dc6e60f5164446cfa6cfcdcea864cb2074671012.tar.gz
scummvm-rg350-dc6e60f5164446cfa6cfcdcea864cb2074671012.tar.bz2
scummvm-rg350-dc6e60f5164446cfa6cfcdcea864cb2074671012.zip
TSAGE: Add support for saving in scene #6100
Diffstat (limited to 'engines/tsage/ringworld_scenes1.cpp')
-rw-r--r--engines/tsage/ringworld_scenes1.cpp60
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);