[Scummvm-git-logs] scummvm master -> 1734e7c40bfe2dd856c72061d94973c8e28dcbcd
sev-
sev at scummvm.org
Thu Jun 18 22:50:56 UTC 2020
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:
c55b33b975 WINTERMUTE: Move store/delete _cachedThumbnail to methods
5bb603dd9e WINTERMUTE: Delete _cachedThumbnail on cleanup
1734e7c40b WINTERMUTE: Add save thumbnails to Corrosion
Commit: c55b33b9756880f2650ec070f31c5868c2ab9c17
https://github.com/scummvm/scummvm/commit/c55b33b9756880f2650ec070f31c5868c2ab9c17
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-06-19T00:50:51+02:00
Commit Message:
WINTERMUTE: Move store/delete _cachedThumbnail to methods
Changed paths:
engines/wintermute/base/base_game.cpp
engines/wintermute/base/base_game.h
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 798a2bc305..6f47ae8e51 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -1931,16 +1931,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "StoreSaveThumbnail") == 0) {
stack->correctParams(0);
- delete _cachedThumbnail;
- _cachedThumbnail = new SaveThumbHelper(this);
- if (DID_FAIL(_cachedThumbnail->storeThumbnail())) {
- delete _cachedThumbnail;
- _cachedThumbnail = nullptr;
- stack->pushBool(false);
- } else {
- stack->pushBool(true);
- }
-
+ stack->pushBool(storeSaveThumbnail());
return STATUS_OK;
}
@@ -1949,10 +1940,8 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "DeleteSaveThumbnail") == 0) {
stack->correctParams(0);
- delete _cachedThumbnail;
- _cachedThumbnail = nullptr;
+ deleteSaveThumbnail();
stack->pushNULL();
-
return STATUS_OK;
}
@@ -4080,6 +4069,23 @@ bool BaseGame::drawCursor(BaseSprite *cursor) {
return cursor->draw(_mousePos.x, _mousePos.y);
}
+//////////////////////////////////////////////////////////////////////////
+bool BaseGame::storeSaveThumbnail() {
+ delete _cachedThumbnail;
+ _cachedThumbnail = new SaveThumbHelper(this);
+ if (DID_FAIL(_cachedThumbnail->storeThumbnail())) {
+ deleteSaveThumbnail();
+ return false;
+ }
+ return true;
+}
+
+//////////////////////////////////////////////////////////////////////////
+void BaseGame::deleteSaveThumbnail() {
+ delete _cachedThumbnail;
+ _cachedThumbnail = nullptr;
+}
+
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 7e3c230a21..4d057dffab 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -259,6 +259,8 @@ public:
bool setActiveObject(BaseObject *Obj);
BaseSprite *_lastCursor;
bool drawCursor(BaseSprite *Cursor);
+ bool storeSaveThumbnail();
+ void deleteSaveThumbnail();
SaveThumbHelper *_cachedThumbnail;
void addMem(int32 bytes);
Commit: 5bb603dd9e07cdba43db56390a5971287d1fc100
https://github.com/scummvm/scummvm/commit/5bb603dd9e07cdba43db56390a5971287d1fc100
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-06-19T00:50:51+02:00
Commit Message:
WINTERMUTE: Delete _cachedThumbnail on cleanup
Changed paths:
engines/wintermute/base/base_game.cpp
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 6f47ae8e51..1b54365a71 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -246,8 +246,6 @@ BaseGame::~BaseGame() {
cleanup();
- delete _cachedThumbnail;
-
delete _mathClass;
delete _directoryClass;
@@ -264,8 +262,6 @@ BaseGame::~BaseGame() {
delete _musicSystem;
delete _settings;
- _cachedThumbnail = nullptr;
-
_mathClass = nullptr;
_directoryClass = nullptr;
@@ -296,6 +292,8 @@ bool BaseGame::cleanup() {
delete _loadingIcon;
_loadingIcon = nullptr;
+ deleteSaveThumbnail();
+
_engineLogCallback = nullptr;
_engineLogCallbackData = nullptr;
Commit: 1734e7c40bfe2dd856c72061d94973c8e28dcbcd
https://github.com/scummvm/scummvm/commit/1734e7c40bfe2dd856c72061d94973c8e28dcbcd
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-06-19T00:50:51+02:00
Commit Message:
WINTERMUTE: Add save thumbnails to Corrosion
Changed paths:
engines/wintermute/ad/ad_game.cpp
engines/wintermute/base/base_game.cpp
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index a6730feecd..eb99c4f9da 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -415,6 +415,17 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
stack->correctParams(1);
ScValue *val = stack->pop();
AdObject *obj = (AdObject *)val->getNative();
+
+ // HACK: We take corrosion screenshot before entering main menu
+ // Unused screenshots must be deleted, after main menu is closed
+ if (obj && BaseEngine::instance().getGameId() == "corrosion") {
+ const char *mm = "interface\\system\\mainmenu.window";
+ const char *fn = obj->getFilename();
+ if (fn && strcmp(fn, mm) == 0) {
+ deleteSaveThumbnail();
+ }
+ }
+
removeObject(obj);
if (val->getType() == VAL_VARIABLE_REF) {
val->setNULL();
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 1b54365a71..b66c5f469b 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -1624,6 +1624,13 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
byte blue = stack->pop()->getInt(0);
byte alpha = stack->pop()->getInt(0xFF);
+ // HACK: Corrosion fades screen to black while opening main menu
+ // Thus, we get black screenshots when saving game from in-game menus
+ // Let's take & keep screenshot before entering main menu
+ if (duration == 750 && BaseEngine::instance().getGameId() == "corrosion") {
+ storeSaveThumbnail();
+ }
+
bool system = (strcmp(name, "SystemFadeOut") == 0 || strcmp(name, "SystemFadeOutAsync") == 0);
_fader->fadeOut(BYTETORGBA(red, green, blue, alpha), duration, system);
More information about the Scummvm-git-logs
mailing list