diff options
| -rw-r--r-- | scumm/dialogs.cpp | 30 | ||||
| -rw-r--r-- | scumm/dialogs.h | 14 | ||||
| -rw-r--r-- | scumm/string.cpp | 8 | 
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;  } | 
