Ejemplo n.º 1
0
bool AdResponseBox::createButtons() {
	clearButtons();

	_scrollOffset = 0;
	for (uint32 i = 0; i < _responses.size(); i++) {
		UIButton *btn = new UIButton(_gameRef);
		if (btn) {
			btn->_parent = _window;
			btn->setSharedFonts(true);
			btn->setSharedImages(true);
			btn->_sharedCursors = true;
			// iconic
			if (_responses[i]->getIcon()) {
				btn->setImage(_responses[i]->getIcon());
				if (_responses[i]->getIconHover()) {
					btn->setImageHover(_responses[i]->getIconHover());
				}
				if (_responses[i]->getIconPressed()) {
					btn->setImagePress(_responses[i]->getIconPressed());
				}

				btn->setCaption(_responses[i]->getText());
				if (_cursor) {
					btn->_cursor = _cursor;
				} else if (_gameRef->_activeCursor) {
					btn->_cursor = _gameRef->_activeCursor;
				}
			}
			// textual
			else {
				btn->setText(_responses[i]->getText());
				if (_font == nullptr) {
					btn->setFont(_gameRef->getSystemFont());
				} else {
					btn->setFont(_font);
				}
				btn->setFontHover((_fontHover == nullptr) ? _gameRef->getSystemFont() : _fontHover);
				btn->setFontPress(btn->getFontHover());
				btn->setTextAlign(_align);

				if (_gameRef->_touchInterface) {
					btn->setFontHover(btn->getFont());
				}


				if (_responses[i]->getFont()) {
					btn->setFont(_responses[i]->getFont());
				}

				int width = _responseArea.right - _responseArea.left;

				if (width <= 0) {
					btn->setWidth(_gameRef->_renderer->getWidth());
				} else {
					btn->setWidth(width);
				}
			}
			btn->setName("response");
			btn->correctSize();

			// make the responses touchable
			if (_gameRef->_touchInterface) {
				btn->setHeight(MAX<int32>(btn->getHeight(), 50));
			}

			//btn->SetListener(this, btn, _responses[i]->_iD);
			btn->setListener(this, btn, i);
			btn->setVisible(false);
			_respButtons.add(btn);

			if (_responseArea.bottom - _responseArea.top < btn->getHeight()) {
				_gameRef->LOG(0, "Warning: Response '%s' is too high to be displayed within response box. Correcting.", _responses[i]->getText());
				_responseArea.bottom += (btn->getHeight() - (_responseArea.bottom - _responseArea.top));
			}
		}
	}
	_ready = false;

	return STATUS_OK;
}