patch #628574: Implementing unkMessage2

svn-id: r5334
This commit is contained in:
Max Horn 2002-10-27 12:26:41 +00:00
parent a0734ef3f9
commit ec343e07e4
3 changed files with 46 additions and 8 deletions

View file

@ -645,10 +645,36 @@ AboutDialog::AboutDialog(NewGui *gui, Scumm *scumm)
#pragma mark -
PauseDialog::PauseDialog(NewGui *gui, Scumm *scumm)
: ScummDialog(gui, scumm, 35, 80, 250, 16)
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)
: InfoDialog(gui, scumm, 10)
{
addResText(4, 4, 250-8, 16, 10);
}
#ifdef _WIN32_WCE

View file

@ -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

View file

@ -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;
}