aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/dialogs.cpp30
-rw-r--r--scumm/dialogs.h14
-rw-r--r--scumm/string.cpp8
3 files changed, 45 insertions, 7 deletions
diff --git a/scumm/dialogs.cpp b/scumm/dialogs.cpp
index 0e3f7a8dfa..a15f469a4e 100644
--- a/scumm/dialogs.cpp
+++ b/scumm/dialogs.cpp
@@ -645,10 +645,36 @@ AboutDialog::AboutDialog(NewGui *gui, Scumm *scumm)
#pragma mark -
+InfoDialog::InfoDialog(NewGui *gui, Scumm *scumm, int res)
+ : ScummDialog(gui, scumm, 0, 80, 0, 16) // dummy x and w
+{
+ setInfoText(queryResString (res));
+}
+
+InfoDialog::InfoDialog(NewGui *gui, Scumm *scumm, const String& message)
+ : ScummDialog(gui, scumm, 0, 80, 0, 16) // dummy x and w
+{
+ setInfoText(message);
+}
+
+void InfoDialog::setInfoText(const String& message)
+{
+ int width = _gui->getStringWidth(message.c_str()) + 16;
+
+ _x = (_scumm->_realWidth - width) >> 1;
+ _w = width;
+
+ new StaticTextWidget(this, 4, 4, _w-8, _h, message, kTextAlignCenter);
+}
+
+#pragma mark -
+
+
+#pragma mark -
+
PauseDialog::PauseDialog(NewGui *gui, Scumm *scumm)
- : ScummDialog(gui, scumm, 35, 80, 250, 16)
+ : InfoDialog(gui, scumm, 10)
{
- addResText(4, 4, 250-8, 16, 10);
}
#ifdef _WIN32_WCE
diff --git a/scumm/dialogs.h b/scumm/dialogs.h
index 73a9678a1e..13f2c8c4f2 100644
--- a/scumm/dialogs.h
+++ b/scumm/dialogs.h
@@ -109,9 +109,12 @@ protected:
CheckboxWidget *amigaPalCheckbox;
};
-class PauseDialog : public ScummDialog {
+class InfoDialog : public ScummDialog {
public:
- PauseDialog(NewGui *gui, Scumm *scumm);
+ // arbitrary message
+ InfoDialog(NewGui *gui, Scumm *scumm, const String& message);
+ // from resources
+ InfoDialog(NewGui *gui, Scumm *scumm, int res);
virtual void handleMouseDown(int x, int y, int button, int clickCount)
{ close(); }
@@ -122,6 +125,13 @@ public:
else
ScummDialog::handleKeyDown(key, modifiers);
}
+protected:
+ void setInfoText (const String& message);
+};
+
+class PauseDialog : public InfoDialog {
+public:
+ PauseDialog(NewGui *gui, Scumm *scumm);
};
#ifdef _WIN32_WCE
diff --git a/scumm/string.cpp b/scumm/string.cpp
index 6715e3a86d..3b33ba3d53 100644
--- a/scumm/string.cpp
+++ b/scumm/string.cpp
@@ -23,6 +23,7 @@
#include "stdafx.h"
#include "scumm.h"
#include "actor.h"
+#include "dialogs.h"
#include "scumm/sound.h"
int CharsetRenderer::getStringWidth(int arg, byte *text, int pos)
@@ -170,9 +171,10 @@ void Scumm::unkMessage2()
if (_string[3].color == 0)
_string[3].color = 4;
- // TODO - it appears the this function should display the given message graphically
- // to the user in a "dialog" looking like the pause dialog, i.e. a single line.
- warning("unkMessage2(\"%s\")", buf);
+ InfoDialog* dialog = new InfoDialog(_newgui, this, (char*)buf);
+ runDialog (dialog);
+ delete dialog;
+
_messagePtr = tmp;
}