[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