[Scummvm-cvs-logs] scummvm master -> 4095b76939fac2e1852a07de73d19ebbb55015b9
somaen
einarjohants at gmail.com
Tue Jan 22 20:59:32 CET 2013
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
d322592037 WINTERMUTE: Guard ConfMan a bit better.
c6df5f9994 WINTERMUTE: Mark drawLine as unused with dirty-rects.
bede97c52c WINTERMUTE: Store larger thumbnails (Bump Savegame-version to 1.2.0.0)
4095b76939 WINTERMUTE: Silence a warning.
Commit: d322592037da4bd013a9c1868c0d76d89b487750
https://github.com/scummvm/scummvm/commit/d322592037da4bd013a9c1868c0d76d89b487750
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-01-22T10:18:29-08:00
Commit Message:
WINTERMUTE: Guard ConfMan a bit better.
Changed paths:
engines/wintermute/base/base_game.cpp
engines/wintermute/utils/string_util.cpp
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 7402bc6..46acd8c 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -1258,7 +1258,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
stack->correctParams(2);
const char *key = stack->pop()->getString();
const char *val = stack->pop()->getString();
- Common::String privKey = "priv_" + StringUtil::encodeSetting(key);
+ Common::String privKey = "wme_" + StringUtil::encodeSetting(key);
Common::String privVal = StringUtil::encodeSetting(val);
ConfMan.set(privKey, privVal);
stack->pushNULL();
@@ -1272,7 +1272,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
stack->correctParams(2);
const char *key = stack->pop()->getString();
const char *initVal = stack->pop()->getString();
- Common::String privKey = "priv_" + StringUtil::encodeSetting(key);
+ Common::String privKey = "wme_" + StringUtil::encodeSetting(key);
Common::String result = initVal;
if (ConfMan.hasKey(privKey)) {
result = StringUtil::decodeSetting(ConfMan.get(key));
diff --git a/engines/wintermute/utils/string_util.cpp b/engines/wintermute/utils/string_util.cpp
index 7b3b0e1..02946db 100644
--- a/engines/wintermute/utils/string_util.cpp
+++ b/engines/wintermute/utils/string_util.cpp
@@ -213,8 +213,10 @@ int StringUtil::indexOf(const WideString &str, const WideString &toFind, size_t
}
Common::String StringUtil::encodeSetting(const Common::String &str) {
- if (str.contains('=')) {
- error("Setting contains '='");
+ for (int i = 0; i < str.size(); i++) {
+ if ((str[i] < 33) || (str[i] == '=') || (str[i] > 126)) {
+ error("Setting contains illegal characters: %s", str.c_str());
+ }
}
return str;
}
Commit: c6df5f99949809fceb998d760ec332ce8626c615
https://github.com/scummvm/scummvm/commit/c6df5f99949809fceb998d760ec332ce8626c615
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-01-22T10:53:55-08:00
Commit Message:
WINTERMUTE: Mark drawLine as unused with dirty-rects.
Changed paths:
engines/wintermute/base/gfx/base_renderer.h
engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
diff --git a/engines/wintermute/base/gfx/base_renderer.h b/engines/wintermute/base/gfx/base_renderer.h
index 9027c66..796dee8 100644
--- a/engines/wintermute/base/gfx/base_renderer.h
+++ b/engines/wintermute/base/gfx/base_renderer.h
@@ -84,8 +84,9 @@ public:
* @param rect the portion of the screen to fade (if NULL, the entire screen will be faded).
*/
virtual void fadeToColor(byte r, byte g, byte b, byte a, Common::Rect *rect = NULL) = 0;
- virtual bool drawLine(int x1, int y1, int x2, int y2, uint32 color);
- virtual bool drawRect(int x1, int y1, int x2, int y2, uint32 color, int width = 1);
+
+ virtual bool drawLine(int x1, int y1, int x2, int y2, uint32 color); // Unused outside indicator-display
+ virtual bool drawRect(int x1, int y1, int x2, int y2, uint32 color, int width = 1); // Unused outside indicator-display
BaseRenderer(BaseGame *inGame = NULL);
virtual ~BaseRenderer();
virtual bool setProjection() {
diff --git a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
index df88e3b..6a27f8d 100644
--- a/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_render_osystem.cpp
@@ -482,10 +482,10 @@ void BaseRenderOSystem::drawFromSurface(RenderTicket *ticket, Common::Rect *dstR
//////////////////////////////////////////////////////////////////////////
bool BaseRenderOSystem::drawLine(int x1, int y1, int x2, int y2, uint32 color) {
- static bool hasWarned = false; // TODO: Fix this, this only avoids spamming warnings for now.
- if (!_disableDirtyRects && !hasWarned) {
- warning("BaseRenderOSystem::DrawLine - doesn't work for dirty rects yet");
- hasWarned = true;
+ // This function isn't used outside of indicator-displaying, and thus quite unused in
+ // BaseRenderOSystem when dirty-rects are enabled.
+ if (!_disableDirtyRects && !_indicatorDisplay) {
+ error("BaseRenderOSystem::DrawLine - doesn't work for dirty rects yet");
}
byte r = RGBCOLGetR(color);
Commit: bede97c52c703366dbcf64fbfff4c7a6e77763d2
https://github.com/scummvm/scummvm/commit/bede97c52c703366dbcf64fbfff4c7a6e77763d2
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-01-22T11:58:12-08:00
Commit Message:
WINTERMUTE: Store larger thumbnails (Bump Savegame-version to 1.2.0.0)
Changed paths:
engines/wintermute/base/base_persistence_manager.cpp
engines/wintermute/base/base_persistence_manager.h
engines/wintermute/base/base_save_thumb_helper.cpp
engines/wintermute/base/base_save_thumb_helper.h
engines/wintermute/dcgf.h
diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp
index bd53ed3..1e2c06e 100644
--- a/engines/wintermute/base/base_persistence_manager.cpp
+++ b/engines/wintermute/base/base_persistence_manager.cpp
@@ -71,6 +71,9 @@ BasePersistenceManager::BasePersistenceManager(const char *savePrefix, bool dele
_richBuffer = NULL;
_richBufferSize = 0;
+ _scummVMThumbnailData = NULL;
+ _scummVMThumbSize = 0;
+
_savedDescription = NULL;
// _savedTimestamp = 0;
_savedVerMajor = _savedVerMinor = _savedVerBuild = 0;
@@ -123,6 +126,12 @@ void BasePersistenceManager::cleanup() {
_thumbnailData = NULL;
}
+ _scummVMThumbSize = 0;
+ if (_scummVMThumbnailData) {
+ delete[] _scummVMThumbnailData;
+ _scummVMThumbnailData = NULL;
+ }
+
delete _loadStream;
delete _saveStream;
_loadStream = NULL;
@@ -131,7 +140,7 @@ void BasePersistenceManager::cleanup() {
Common::String BasePersistenceManager::getFilenameForSlot(int slot) const {
// 3 Digits, to allow for one save-slot for autosave + slot 1 - 100 (which will be numbered 0-99 filename-wise)
- return Common::String::format("%s-save%03d.wsv", _savePrefix.c_str(), slot);
+ return Common::String::format("%s.%03d", _savePrefix.c_str(), slot);
}
void BasePersistenceManager::getSaveStateDesc(int slot, SaveStateDescriptor &desc) {
@@ -146,8 +155,18 @@ void BasePersistenceManager::getSaveStateDesc(int slot, SaveStateDescriptor &des
desc.setDeletableFlag(true);
desc.setWriteProtectedFlag(false);
- if (_thumbnailDataSize > 0) {
- Common::MemoryReadStream thumbStream(_thumbnailData, _thumbnailDataSize);
+ int thumbSize = 0;
+ byte *thumbData = NULL;
+ if (_scummVMThumbSize > 0) {
+ thumbSize = _scummVMThumbSize;
+ thumbData = _scummVMThumbnailData;
+ } else if (_thumbnailDataSize > 0) {
+ thumbSize = _thumbnailDataSize;
+ thumbData = _thumbnailData;
+ }
+
+ if (thumbSize > 0) {
+ Common::MemoryReadStream thumbStream(thumbData, thumbSize);
Graphics::BitmapDecoder bmpDecoder;
if (bmpDecoder.loadStream(thumbStream)) {
Graphics::Surface *surf = NULL;
@@ -171,13 +190,13 @@ void BasePersistenceManager::deleteSaveSlot(int slot) {
}
uint32 BasePersistenceManager::getMaxUsedSlot() {
- Common::String saveMask = Common::String::format("%s-save???.wsv", _savePrefix.c_str());
+ Common::String saveMask = Common::String::format("%s.???", _savePrefix.c_str());
Common::StringArray saves = g_system->getSavefileManager()->listSavefiles(saveMask);
Common::StringArray::iterator it = saves.begin();
int ret = -1;
for (; it != saves.end(); ++it) {
int num = -1;
- sscanf(it->c_str(), "save%d", &num);
+ sscanf(it->c_str(), ".%d", &num);
ret = MAX(ret, num);
}
return ret;
@@ -249,6 +268,25 @@ bool BasePersistenceManager::initSave(const char *desc) {
if (!thumbnailOK) {
putDWORD(0);
}
+ thumbnailOK = false;
+ // Again for the ScummVM-thumb:
+ if (_gameRef->_cachedThumbnail) {
+ if (_gameRef->_cachedThumbnail->_scummVMThumb) {
+ Common::MemoryWriteStreamDynamic scummVMthumbStream(DisposeAfterUse::YES);
+ if (_gameRef->_cachedThumbnail->_scummVMThumb->writeBMPToStream(&scummVMthumbStream)) {
+ _saveStream->writeUint32LE(scummVMthumbStream.size());
+ _saveStream->write(scummVMthumbStream.getData(), scummVMthumbStream.size());
+ } else {
+ _saveStream->writeUint32LE(0);
+ }
+
+ thumbnailOK = true;
+ }
+ }
+ if (!thumbnailOK) {
+ putDWORD(0);
+ }
+
// in any case, destroy the cached thumbnail once used
delete _gameRef->_cachedThumbnail;
@@ -308,6 +346,15 @@ bool BasePersistenceManager::readHeader(const Common::String &filename) {
_thumbnailDataSize = 0;
}
}
+ if (_savedVerMajor >= 1 && _savedVerMinor >= 2) {
+ _scummVMThumbSize = getDWORD();
+ _scummVMThumbnailData = new byte[_scummVMThumbSize];
+ if (_scummVMThumbnailData) {
+ getBytes(_scummVMThumbnailData, _scummVMThumbSize);
+ } else {
+ _scummVMThumbSize = 0;
+ }
+ }
} else {
_savedVerBuild = 35; // last build with ver1 savegames
}
diff --git a/engines/wintermute/base/base_persistence_manager.h b/engines/wintermute/base/base_persistence_manager.h
index a262c92..114f6e0 100644
--- a/engines/wintermute/base/base_persistence_manager.h
+++ b/engines/wintermute/base/base_persistence_manager.h
@@ -93,6 +93,8 @@ public:
uint32 _thumbnailDataSize;
byte *_thumbnailData;
+ uint32 _scummVMThumbSize;
+ byte *_scummVMThumbnailData;
Common::String getFilenameForSlot(int slot) const;
private:
bool _deleteSingleton;
diff --git a/engines/wintermute/base/base_save_thumb_helper.cpp b/engines/wintermute/base/base_save_thumb_helper.cpp
index b4205c2..d4df1df 100644
--- a/engines/wintermute/base/base_save_thumb_helper.cpp
+++ b/engines/wintermute/base/base_save_thumb_helper.cpp
@@ -30,51 +30,83 @@
#include "engines/wintermute/base/gfx/base_image.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/base/base_game.h"
+#include "graphics/scaler.h"
namespace Wintermute {
//////////////////////////////////////////////////////////////////////////
BaseSaveThumbHelper::BaseSaveThumbHelper(BaseGame *inGame) : BaseClass(inGame) {
_thumbnail = NULL;
+ _scummVMThumb = NULL;
}
//////////////////////////////////////////////////////////////////////////
BaseSaveThumbHelper::~BaseSaveThumbHelper(void) {
delete _thumbnail;
_thumbnail = NULL;
+ delete _scummVMThumb;
+ _scummVMThumb = NULL;
}
-//////////////////////////////////////////////////////////////////////////
-bool BaseSaveThumbHelper::storeThumbnail(bool doFlip) {
- delete _thumbnail;
- _thumbnail = NULL;
-
+BaseImage *BaseSaveThumbHelper::storeThumb(bool doFlip, int width, int height) {
+ BaseImage *thumbnail = NULL;
if (_gameRef->_thumbnailWidth > 0 && _gameRef->_thumbnailHeight > 0) {
if (doFlip) {
// when using opengl on windows it seems to be necessary to do this twice
// works normally for direct3d
_gameRef->displayContent(false);
_gameRef->_renderer->flip();
-
+
_gameRef->displayContent(false);
_gameRef->_renderer->flip();
}
-
+
BaseImage *screenshot = _gameRef->_renderer->takeScreenshot();
if (!screenshot) {
return STATUS_FAILED;
}
-
+
// normal thumbnail
if (_gameRef->_thumbnailWidth > 0 && _gameRef->_thumbnailHeight > 0) {
- _thumbnail = new BaseImage();
- _thumbnail->copyFrom(screenshot, _gameRef->_thumbnailWidth, _gameRef->_thumbnailHeight);
+ thumbnail = new BaseImage();
+ thumbnail->copyFrom(screenshot, width, height);
}
-
-
+
+
delete screenshot;
screenshot = NULL;
}
+ return thumbnail;
+}
+
+//////////////////////////////////////////////////////////////////////////
+bool BaseSaveThumbHelper::storeThumbnail(bool doFlip) {
+ delete _thumbnail;
+ _thumbnail = NULL;
+
+ if (_gameRef->_thumbnailWidth > 0 && _gameRef->_thumbnailHeight > 0) {
+
+ _thumbnail = storeThumb(doFlip, _gameRef->_thumbnailWidth, _gameRef->_thumbnailHeight);
+ if (!_thumbnail) {
+ return STATUS_FAILED;
+ }
+ }
+ storeScummVMThumbNail();
+ return STATUS_OK;
+}
+
+//////////////////////////////////////////////////////////////////////////
+bool BaseSaveThumbHelper::storeScummVMThumbNail(bool doFlip) {
+ delete _thumbnail;
+ _thumbnail = NULL;
+
+ if (_gameRef->_thumbnailWidth > 0 && _gameRef->_thumbnailHeight > 0) {
+
+ _scummVMThumb = storeThumb(doFlip, kThumbnailWidth, kThumbnailHeight2);
+ if (!_scummVMThumb) {
+ return STATUS_FAILED;
+ }
+ }
return STATUS_OK;
}
diff --git a/engines/wintermute/base/base_save_thumb_helper.h b/engines/wintermute/base/base_save_thumb_helper.h
index 8863508..8e8a718 100644
--- a/engines/wintermute/base/base_save_thumb_helper.h
+++ b/engines/wintermute/base/base_save_thumb_helper.h
@@ -40,9 +40,12 @@ public:
BaseSaveThumbHelper(BaseGame *inGame);
virtual ~BaseSaveThumbHelper(void);
bool storeThumbnail(bool doFlip = false);
+ bool storeScummVMThumbNail(bool doFlip = false);
BaseImage *_thumbnail;
+ BaseImage *_scummVMThumb;
private:
+ BaseImage *storeThumb(bool doFlip, int width, int height);
BaseImage *_richThumbnail;
};
diff --git a/engines/wintermute/dcgf.h b/engines/wintermute/dcgf.h
index fc41740..0fbb1c6 100644
--- a/engines/wintermute/dcgf.h
+++ b/engines/wintermute/dcgf.h
@@ -32,7 +32,7 @@
//////////////////////////////////////////////////////////////////////////
#define DCGF_VER_MAJOR 1
-#define DCGF_VER_MINOR 1
+#define DCGF_VER_MINOR 2
#define DCGF_VER_BUILD 1
#define DCGF_VER_SUFFIX "beta"
#define DCGF_VER_BETA true
Commit: 4095b76939fac2e1852a07de73d19ebbb55015b9
https://github.com/scummvm/scummvm/commit/4095b76939fac2e1852a07de73d19ebbb55015b9
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-01-22T11:58:23-08:00
Commit Message:
WINTERMUTE: Silence a warning.
Changed paths:
engines/wintermute/utils/string_util.cpp
diff --git a/engines/wintermute/utils/string_util.cpp b/engines/wintermute/utils/string_util.cpp
index 02946db..a1053bb 100644
--- a/engines/wintermute/utils/string_util.cpp
+++ b/engines/wintermute/utils/string_util.cpp
@@ -213,7 +213,7 @@ int StringUtil::indexOf(const WideString &str, const WideString &toFind, size_t
}
Common::String StringUtil::encodeSetting(const Common::String &str) {
- for (int i = 0; i < str.size(); i++) {
+ for (uint32 i = 0; i < str.size(); i++) {
if ((str[i] < 33) || (str[i] == '=') || (str[i] > 126)) {
error("Setting contains illegal characters: %s", str.c_str());
}
More information about the Scummvm-git-logs
mailing list