[Scummvm-cvs-logs] SF.net SVN: scummvm:[46292] scummvm/trunk/engines/sci

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue Dec 8 21:54:18 CET 2009


Revision: 46292
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46292&view=rev
Author:   m_kiewitz
Date:     2009-12-08 20:54:18 +0000 (Tue, 08 Dec 2009)

Log Message:
-----------
SCI: Saving picPort now (fixes loading saved games in castle of dr. brain)

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/savegame.cpp
    scummvm/trunk/engines/sci/engine/savegame.h
    scummvm/trunk/engines/sci/gui/gui.cpp
    scummvm/trunk/engines/sci/gui/gui.h
    scummvm/trunk/engines/sci/gui32/gui32.cpp
    scummvm/trunk/engines/sci/gui32/gui32.h

Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp	2009-12-08 20:44:57 UTC (rev 46291)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp	2009-12-08 20:54:18 UTC (rev 46292)
@@ -340,6 +340,21 @@
 	s.skip(4, VER(12), VER(12));	// obsolete: used to be status_bar_foreground
 	s.skip(4, VER(12), VER(12));	// obsolete: used to be status_bar_background
 
+	if (s.getVersion() >= 13) {
+		// Save/Load picPort as well (cause sierra sci also does this)
+		int16 picPortTop, picPortLeft;
+		Common::Rect picPortRect;
+		if (s.isSaving())
+			picPortRect = _gui->getPortPic(&picPortTop, &picPortLeft);
+
+		s.syncBytes((byte *)&picPortRect, sizeof(picPortRect));
+		s.syncAsSint16LE(picPortTop);
+		s.syncAsSint16LE(picPortLeft);
+
+		if (s.isLoading())
+			_gui->setPortPic(picPortRect, picPortTop, picPortLeft, true);
+	}
+
 	sync_SegManagerPtr(s, resMan, _segMan);
 
 	syncArray<Class>(s, _segMan->_classtable);

Modified: scummvm/trunk/engines/sci/engine/savegame.h
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.h	2009-12-08 20:44:57 UTC (rev 46291)
+++ scummvm/trunk/engines/sci/engine/savegame.h	2009-12-08 20:54:18 UTC (rev 46292)
@@ -36,7 +36,7 @@
 struct EngineState;
 
 enum {
-	CURRENT_SAVEGAME_VERSION = 12,
+	CURRENT_SAVEGAME_VERSION = 13,
 	MINIMUM_SAVEGAME_VERSION = 9
 };
 

Modified: scummvm/trunk/engines/sci/gui/gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.cpp	2009-12-08 20:44:57 UTC (rev 46291)
+++ scummvm/trunk/engines/sci/gui/gui.cpp	2009-12-08 20:54:18 UTC (rev 46292)
@@ -126,6 +126,12 @@
 	};
 }
 
+Common::Rect SciGui::getPortPic(int16 *picTop, int16 *picLeft) {
+	*picTop = _windowMgr->_picWind->top;
+	*picLeft = _windowMgr->_picWind->left;
+	return _windowMgr->_picWind->rect;
+}
+
 void SciGui::setPortPic(Common::Rect rect, int16 picTop, int16 picLeft, bool initPriorityBandsFlag) {
 	_windowMgr->_picWind->rect = rect;
 	_windowMgr->_picWind->top = picTop;

Modified: scummvm/trunk/engines/sci/gui/gui.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui.h	2009-12-08 20:44:57 UTC (rev 46291)
+++ scummvm/trunk/engines/sci/gui/gui.h	2009-12-08 20:54:18 UTC (rev 46292)
@@ -63,6 +63,7 @@
 
 	virtual void wait(int16 ticks);
 	virtual void setPort(uint16 portPtr);
+	virtual Common::Rect getPortPic(int16 *picTop, int16 *picLeft);
 	virtual void setPortPic(Common::Rect rect, int16 picTop, int16 picLeft, bool initPriorityBandsFlag);
 	virtual reg_t getPort();
 	virtual void globalToLocal(int16 *x, int16 *y);

Modified: scummvm/trunk/engines/sci/gui32/gui32.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui32/gui32.cpp	2009-12-08 20:44:57 UTC (rev 46291)
+++ scummvm/trunk/engines/sci/gui32/gui32.cpp	2009-12-08 20:54:18 UTC (rev 46292)
@@ -420,6 +420,14 @@
 	_s->port = new_port;
 }
 
+Common::Rect SciGui32::getPortPic(int16 *picTop, int16 *picLeft) {
+	// Don't want to fiddle around with oldgui, so we just return defaults when saving games
+	Common::Rect defaultRect(0, 0, 320, 200);
+	*picTop = 10;
+	*picLeft = 0;
+	return defaultRect;
+}
+
 void SciGui32::setPortPic(Common::Rect rect, int16 picTop, int16 picLeft, bool initPriorityBandsFlag) {
 	if (activated_icon_bar) {
 		port_origin_x = port_origin_y = 0;

Modified: scummvm/trunk/engines/sci/gui32/gui32.h
===================================================================
--- scummvm/trunk/engines/sci/gui32/gui32.h	2009-12-08 20:44:57 UTC (rev 46291)
+++ scummvm/trunk/engines/sci/gui32/gui32.h	2009-12-08 20:54:18 UTC (rev 46292)
@@ -42,6 +42,7 @@
 
 	void wait(int16 ticks);
 	void setPort(uint16 portPtr);
+	Common::Rect getPortPic(int16 *picTop, int16 *picLeft);
 	void setPortPic(Common::Rect rect, int16 picTop, int16 picLeft, bool initPriorityBandsFlag);
 	reg_t getPort();
 	void globalToLocal(int16 *x, int16 *y);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list