[Scummvm-cvs-logs] scummvm master -> eb89240370178d09fd6e9cba836dfa4b94d7998a

dreammaster dreammaster at scummvm.org
Sat Jun 4 14:42:39 CEST 2011


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
dc6e60f516 TSAGE: Add support for saving in scene #6100
9933b1bf19 TSAGE: Bugfix for saving in scenes with palette rotations
eb89240370 TSAGE: Add extra event manager fields to savegames


Commit: dc6e60f5164446cfa6cfcdcea864cb2074671012
    https://github.com/scummvm/scummvm/commit/dc6e60f5164446cfa6cfcdcea864cb2074671012
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-06-04T03:40:09-07:00

Commit Message:
TSAGE: Add support for saving in scene #6100

Changed paths:
    engines/tsage/core.cpp
    engines/tsage/graphics.cpp
    engines/tsage/graphics.h
    engines/tsage/ringworld_scenes1.cpp
    engines/tsage/ringworld_scenes1.h
    engines/tsage/saveload.h



diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index ae33776..5ed1ce3 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -2564,6 +2564,9 @@ void SceneText::synchronize(Serializer &s) {
 	s.syncAsSint16LE(_color2);
 	s.syncAsSint16LE(_color3);
 	SYNC_ENUM(_textMode, TextAlign);
+
+	if (s.getVersion() >= 5)
+		_textSurface.synchronize(s);
 }
 
 /*--------------------------------------------------------------------------*/
diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp
index e51d88e..25dc897 100644
--- a/engines/tsage/graphics.cpp
+++ b/engines/tsage/graphics.cpp
@@ -304,6 +304,43 @@ void GfxSurface::unlockSurface() {
 	}
 }
 
+void GfxSurface::synchronize(Serializer &s) {
+	assert(!_lockSurfaceCtr);
+	assert(!_screenSurface);
+
+	s.syncAsByte(_disableUpdates);
+	_bounds.synchronize(s);
+	s.syncAsSint16LE(_centroid.x);
+	s.syncAsSint16LE(_centroid.y);
+	s.syncAsSint16LE(_transColor);
+
+	if (s.isSaving()) {
+		// Save contents of the surface
+		if (_customSurface) {
+			s.syncAsSint16LE(_customSurface->w);
+			s.syncAsSint16LE(_customSurface->h);
+			s.syncBytes((byte *)_customSurface->pixels, _customSurface->w * _customSurface->h);
+		} else {
+			int zero = 0;
+			s.syncAsSint16LE(zero);
+			s.syncAsSint16LE(zero);
+		}
+	} else {
+		int w, h;
+		s.syncAsSint16LE(w);
+		s.syncAsSint16LE(h);
+
+		if ((w == 0) || (h == 0)) {
+			if (_customSurface)
+				delete _customSurface;
+			_customSurface = NULL;
+		} else {
+			create(w, h);
+			s.syncBytes((byte *)_customSurface->pixels, w * h);
+		}
+	}
+}
+
 /**
  * Fills a specified rectangle on the surface with the specified color
  *
diff --git a/engines/tsage/graphics.h b/engines/tsage/graphics.h
index 1427be6..e09e109 100644
--- a/engines/tsage/graphics.h
+++ b/engines/tsage/graphics.h
@@ -91,6 +91,7 @@ public:
 	void setScreenSurface();
 	Graphics::Surface lockSurface();
 	void unlockSurface();
+	void synchronize(Serializer &s);
 	void create(int width, int height);
 	void setBounds(const Rect &bounds) { _bounds = bounds; }
 	const Rect &getBounds() const { return _bounds; }
diff --git a/engines/tsage/ringworld_scenes1.cpp b/engines/tsage/ringworld_scenes1.cpp
index 82f0153..6960788 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);
 
diff --git a/engines/tsage/ringworld_scenes1.h b/engines/tsage/ringworld_scenes1.h
index 554b261..abd7654 100644
--- a/engines/tsage/ringworld_scenes1.h
+++ b/engines/tsage/ringworld_scenes1.h
@@ -483,6 +483,8 @@ class Scene6100 : public Scene {
 	class Object : public SceneObject {
 	public:
 		FloatSet _floats;
+
+		virtual void synchronize(Serializer &s);
 	};
 	class ProbeMover : public NpcMover {
 	public:
@@ -519,6 +521,8 @@ public:
 	Object *_objList[4];
 	bool _msgActive;
 
+	Scene6100();
+	virtual void synchronize(Serializer &s);
 	virtual void postInit(SceneObjectList *OwnerList = NULL);
 	virtual void remove();
 	virtual void process(Event &event);
diff --git a/engines/tsage/saveload.h b/engines/tsage/saveload.h
index a905df2..c1c2851 100644
--- a/engines/tsage/saveload.h
+++ b/engines/tsage/saveload.h
@@ -33,7 +33,7 @@ namespace tSage {
 
 typedef void (*SaveNotifierFn)(bool postFlag);
 
-#define TSAGE_SAVEGAME_VERSION 4
+#define TSAGE_SAVEGAME_VERSION 5
 
 class SavedObject;
 


Commit: 9933b1bf195fd21cda7d1540eea1fdc7d4d31121
    https://github.com/scummvm/scummvm/commit/9933b1bf195fd21cda7d1540eea1fdc7d4d31121
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-06-04T05:39:14-07:00

Commit Message:
TSAGE: Bugfix for saving in scenes with palette rotations

Changed paths:
    engines/tsage/core.cpp



diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 5ed1ce3..b929bee 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -1353,6 +1353,8 @@ void ScenePalette::changeBackground(const Rect &bounds, FadeMode fadeMode) {
 void ScenePalette::synchronize(Serializer &s) {
 	if (s.getVersion() >= 2)
 		SavedObject::synchronize(s);
+	if (s.getVersion() >= 5)
+		_listeners.synchronize(s);
 
 	s.syncBytes(_palette, 256 * 3);
 	s.syncAsSint32LE(_colors.foreground);


Commit: eb89240370178d09fd6e9cba836dfa4b94d7998a
    https://github.com/scummvm/scummvm/commit/eb89240370178d09fd6e9cba836dfa4b94d7998a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-06-04T05:40:51-07:00

Commit Message:
TSAGE: Add extra event manager fields to savegames

This should correctly handle re-enabling the cursor when restoring savegames.

Changed paths:
    engines/tsage/events.cpp
    engines/tsage/events.h
    engines/tsage/saveload.cpp



diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp
index e889c56..9df2a7c 100644
--- a/engines/tsage/events.cpp
+++ b/engines/tsage/events.cpp
@@ -304,4 +304,14 @@ void EventsClass::delay(int numFrames) {
 	_priorFrameTime = g_system->getMillis();
 }
 
+void EventsClass::listenerSynchronize(Serializer &s) {
+	s.syncAsUint32LE(_frameNumber);
+	s.syncAsUint32LE(_prevDelayFrame);
+	
+	if (s.getVersion() >= 5) {
+		s.syncAsSint16LE(_currentCursor);
+		s.syncAsSint16LE(_lastCursor);
+	}
+}
+
 } // end of namespace tSage
diff --git a/engines/tsage/events.h b/engines/tsage/events.h
index 9a7bdbe..a13455d 100644
--- a/engines/tsage/events.h
+++ b/engines/tsage/events.h
@@ -98,11 +98,7 @@ public:
 	uint32 getFrameNumber() const { return _frameNumber; }
 	void delay(int numFrames);
 
-	virtual void listenerSynchronize(Serializer &s) {
-		s.syncAsUint32LE(_frameNumber);
-		s.syncAsUint32LE(_prevDelayFrame);
-		// TODO: Synchronize unknown stuff
-	}
+	virtual void listenerSynchronize(Serializer &s);
 };
 
 } // End of namespace tSage
diff --git a/engines/tsage/saveload.cpp b/engines/tsage/saveload.cpp
index 56df321..522e40c 100644
--- a/engines/tsage/saveload.cpp
+++ b/engines/tsage/saveload.cpp
@@ -206,7 +206,6 @@ Common::Error Saver::restore(int slot) {
 	// Final post-restore notifications
 	_macroRestoreFlag = false;
 	_loadNotifiers.notify(false);
-	_globals->_events.setCursor(_globals->_player._uiEnabled ? CURSOR_WALK : CURSOR_NONE);
 
 	return Common::kNoError;
 }






More information about the Scummvm-git-logs mailing list