[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