diff options
| author | Paul Gilbert | 2014-08-17 12:01:28 -0400 | 
|---|---|---|
| committer | Paul Gilbert | 2014-08-17 12:01:28 -0400 | 
| commit | 77626b72a59f0a9bf35da3f77032c018fe5d7963 (patch) | |
| tree | b5c4b61fc810b0e110f5bc8717edaf9d43bfe2ab | |
| parent | 404c7cd5d33e81c7724cb78dfce5701b26b4659b (diff) | |
| download | scummvm-rg350-77626b72a59f0a9bf35da3f77032c018fe5d7963.tar.gz scummvm-rg350-77626b72a59f0a9bf35da3f77032c018fe5d7963.tar.bz2 scummvm-rg350-77626b72a59f0a9bf35da3f77032c018fe5d7963.zip  | |
ACCESS: Add missing string parameters to bubble box methods
| -rw-r--r-- | engines/access/bubble_box.cpp | 22 | ||||
| -rw-r--r-- | engines/access/bubble_box.h | 24 | ||||
| -rw-r--r-- | engines/access/scripts.cpp | 11 | 
3 files changed, 38 insertions, 19 deletions
diff --git a/engines/access/bubble_box.cpp b/engines/access/bubble_box.cpp index 2b6d9dd11a..5f0cb9443b 100644 --- a/engines/access/bubble_box.cpp +++ b/engines/access/bubble_box.cpp @@ -55,27 +55,27 @@ void BubbleBox::clearBubbles() {  	_bubbles.clear();  } -void BubbleBox::placeBubble() { +void BubbleBox::placeBubble(const Common::String &msg) {  	BubbleBox::_maxChars = 27; -	placeBubble1(); +	placeBubble1(msg);  } -void BubbleBox::placeBubble1() { +void BubbleBox::placeBubble1(const Common::String &msg) {  	BubbleBox::clearBubbles();  	_vm->_fonts._charSet._lo = 1;  	_vm->_fonts._charSet._hi = 8;  	_vm->_fonts._charFor._lo = 29;  	_vm->_fonts._charFor._hi = 32; -	calcBubble(); +	calcBubble(msg);  	Common::Rect r = BubbleBox::_bubbles[0];  	r.translate(-2, 0);  	_vm->_screen->saveBlock(r); -	printBubble(); +	printBubble(msg);  } -void BubbleBox::calcBubble() { +void BubbleBox::calcBubble(const Common::String &msg) {  	// Save points  	Common::Point printOrg = _vm->_fonts._printOrg;  	Common::Point printStart = _vm->_fonts._printStart; @@ -84,19 +84,19 @@ void BubbleBox::calcBubble() {  	if (_edgeSize == 4) {  		_vm->_fonts._printMaxX = 110;  	} else { -		_vm->_fonts._printMaxX = _vm->_fonts._font2.stringWidth(BubbleBox::_bubblePtr); +		_vm->_fonts._printMaxX = _vm->_fonts._font2.stringWidth(_bubblePtr);  	}  	// Start of with a rect with the given starting x and y  	Common::Rect bounds(printOrg.x - 2, printOrg.y, printOrg.x - 2, printOrg.y);  	// Loop through getting lines -	Common::String msg(BubbleBox::_bubblePtr); +	Common::String s = msg;  	Common::String line;  	int width = 0;  	bool lastLine;  	do { -		lastLine = _vm->_fonts._font2.getLine(msg, _vm->_fonts._printMaxX, line, width); +		lastLine = _vm->_fonts._font2.getLine(s, _vm->_fonts._printMaxX, line, width);  		width = MIN(width, _vm->_fonts._printMaxX);  		_vm->_fonts._printOrg.y += 6; @@ -131,8 +131,8 @@ void BubbleBox::calcBubble() {  	_vm->_fonts._printStart = printStart;  } -void BubbleBox::printBubble() { -	//drawBubble(BubbleBox::_bubbles.size() - 1); +void BubbleBox::printBubble(const Common::String &msg) { +	drawBubble(BubbleBox::_bubbles.size() - 1);  	error("TODO: printBubble");  } diff --git a/engines/access/bubble_box.h b/engines/access/bubble_box.h index e02fa7c572..189e0b1c04 100644 --- a/engines/access/bubble_box.h +++ b/engines/access/bubble_box.h @@ -58,13 +58,23 @@ public:  	void clearBubbles(); -	void placeBubble(); -	void placeBubble1(); - -	void calcBubble(); - -	void printBubble(); - +	void placeBubble(const Common::String &msg); +	void placeBubble1(const Common::String &msg); + +	/** +	 * Calculate the size of a bubble needed to hold a given string +	 */ +	void calcBubble(const Common::String &msg); + +	/** +	 * Prints a text bubble and it's contents  +	 */ +	void printBubble(const Common::String &msg); + +	/* +	 * Draws the background for a text bubble +	 * @param index		Index of bounds in _bubbles array +	 */  	void drawBubble(int index); diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp index f91b49c9ef..640514aca7 100644 --- a/engines/access/scripts.cpp +++ b/engines/access/scripts.cpp @@ -176,13 +176,22 @@ void Scripts::cmdPrint() {  	_vm->_timers[PRINT_TIMER]._initTm = 50;  	_vm->_timers[PRINT_TIMER]._flag = true; -	_vm->_bubbleBox->placeBubble(); +	// Get a text line for display +	Common::String msg; +	byte c; +	while ((c = (char)_data->readByte()) != '\0') +		msg += c; + +	// Display the text in a bubble, and wait for a keypress or mouse click +	_vm->_bubbleBox->placeBubble(msg);  	_vm->_events->waitKeyMouse(); +	// Wait until the bubble display is expired  	while (_vm->_timers[PRINT_TIMER]._flag) {  		_vm->_events->pollEvents();  	} +	// Restore the original screen over the text bubble  	_vm->_screen->restoreBlock();  }  | 
