rudimental implementation of non-interactive MessageBox

actorid
Sebastian Wick 14 years ago
parent fc25ccef4e
commit 9c56031ee2

@ -11,7 +11,23 @@ void MessageBoxManager::createMessageBox (const std::string& message)
{ {
std::cout << "create non-interactive message box" << std::endl; std::cout << "create non-interactive message box" << std::endl;
MessageBox *box = new MessageBox(*this, message); MessageBox *box = new MessageBox(*this, message);
mMessageBoxes.push_back(box);
mMessageBoxes.insert(mMessageBoxes.begin(), box);
int height = box->getHeight();
std::vector<MessageBox*>::const_iterator it;
int i = 0;
for(it = mMessageBoxes.begin(); it != mMessageBoxes.end(); ++it) {
if(i == 3) {
(*it)->del();
break;
}
else {
(*it)->update(height);
height += (*it)->getHeight();
i++;
}
}
} }
void MessageBoxManager::createInteractiveMessageBox (const std::string& message, const std::vector<std::string>& buttons) void MessageBoxManager::createInteractiveMessageBox (const std::string& message, const std::vector<std::string>& buttons)
@ -25,24 +41,44 @@ MessageBox::MessageBox(MessageBoxManager& parMessageBoxManager, const std::strin
, mMessageBoxManager(parMessageBoxManager) , mMessageBoxManager(parMessageBoxManager)
{ {
setText("message", message); setText("message", message);
update(0);
}
void MessageBox::update (int height)
{
MyGUI::WidgetPtr messageWidget; MyGUI::WidgetPtr messageWidget;
getWidget(messageWidget, "message"); getWidget(messageWidget, "message");
MyGUI::IntSize size = messageWidget->_getTextSize(); MyGUI::IntSize size = messageWidget->_getTextSize();
size.width += 20; messageWidget->setSize(size);
size.height += 20; size.width += 20; // padding between text and border of the box
size.height += 20; // same here
MyGUI::IntSize gameWindowSize = mMessageBoxManager.mWindowManager->getGui()->getViewSize(); MyGUI::IntSize gameWindowSize = mMessageBoxManager.mWindowManager->getGui()->getViewSize();
MyGUI::IntCoord coord; MyGUI::IntCoord coord;
coord.left = (gameWindowSize.width - size.width)/2; coord.left = (gameWindowSize.width - size.width)/2;
coord.top = (gameWindowSize.height - size.height); coord.top = (gameWindowSize.height - size.height - height);
std::cout << "Setting MainWidget to position (" << coord.left << "|" << coord.top std::cout << "Setting MainWidget to position (" << coord.left << "|" << coord.top
<< ") and size to (" << size.width << "|" << size.height << ")" << std::endl; << ") and size to (" << size.width << "|" << size.height << ")"
<< " while height is " << height << std::endl;
mMainWidget->setCoord(coord); mMainWidget->setCoord(coord);
mMainWidget->setSize(size); mMainWidget->setSize(size);
mHeight = size.height;
}
void MessageBox::del ()
{
// i dont know how to destroy, but therefor i will just set height and width to zero
MyGUI::IntSize size;
size.width = size.height = 0;
mMainWidget->setSize(size);
}
int MessageBox::getHeight ()
{
return mHeight+20; // 20 is the padding between this and the next MessageBox
} }

@ -31,9 +31,13 @@ namespace MWGui
public: public:
MessageBox (MessageBoxManager& parMessageBoxManager, const std::string& message); MessageBox (MessageBoxManager& parMessageBoxManager, const std::string& message);
void setMessage (const std::string& message); void setMessage (const std::string& message);
int getHeight ();
void update (int height);
void del ();
protected: protected:
MessageBoxManager& mMessageBoxManager; MessageBoxManager& mMessageBoxManager;
int mHeight;
}; };
} }

Loading…
Cancel
Save