aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/scumm/dialogs.cpp13
-rw-r--r--engines/scumm/dialogs.h2
2 files changed, 13 insertions, 2 deletions
diff --git a/engines/scumm/dialogs.cpp b/engines/scumm/dialogs.cpp
index e552785fff..fb3f217ee6 100644
--- a/engines/scumm/dialogs.cpp
+++ b/engines/scumm/dialogs.cpp
@@ -349,6 +349,9 @@ void SaveLoadChooser::handleScreenChanged() {
_time->clearFlags(GUI::WIDGET_INVISIBLE);
_playtime->clearFlags(GUI::WIDGET_INVISIBLE);
+ _fillR = g_gui.evaluator()->getVar("scummsaveload_thumbnail.fillR");
+ _fillG = g_gui.evaluator()->getVar("scummsaveload_thumbnail.fillG");
+ _fillB = g_gui.evaluator()->getVar("scummsaveload_thumbnail.fillB");
updateInfos();
} else {
_container->setFlags(GUI::WIDGET_INVISIBLE);
@@ -365,9 +368,15 @@ void SaveLoadChooser::updateInfos() {
int selItem = _list->getSelected();
Graphics::Surface *thumb;
thumb = _vm->loadThumbnailFromSlot(_saveMode ? selItem + 1 : selItem);
- _gfxWidget->setGfx(thumb);
- if (thumb)
+
+ if (thumb) {
+ _gfxWidget->setGfx(thumb);
+ _gfxWidget->useAlpha(256);
thumb->free();
+ } else {
+ _gfxWidget->setGfx(-1, -1, _fillR, _fillG, _fillB);
+ }
+
delete thumb;
_gfxWidget->draw();
diff --git a/engines/scumm/dialogs.h b/engines/scumm/dialogs.h
index 339b890558..48a84ddfbd 100644
--- a/engines/scumm/dialogs.h
+++ b/engines/scumm/dialogs.h
@@ -64,6 +64,8 @@ protected:
GUI::ContainerWidget *_container;
ScummEngine *_vm;
+ uint8 _fillR, _fillG, _fillB;
+
void updateInfos();
public:
SaveLoadChooser(const String &title, const String &buttonLabel, bool saveMode, ScummEngine *engine);