diff options
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/access/access.cpp | 29 | ||||
| -rw-r--r-- | engines/access/access.h | 8 | ||||
| -rw-r--r-- | engines/access/amazon/amazon_game.cpp | 33 | ||||
| -rw-r--r-- | engines/access/font.cpp | 4 | ||||
| -rw-r--r-- | engines/access/font.h | 4 | ||||
| -rw-r--r-- | engines/access/scripts.cpp | 2 | 
6 files changed, 54 insertions, 26 deletions
diff --git a/engines/access/access.cpp b/engines/access/access.cpp index a0de5c8e7c..360d434670 100644 --- a/engines/access/access.cpp +++ b/engines/access/access.cpp @@ -296,6 +296,35 @@ void AccessEngine::speakText(ASurface *s, Common::Array<Common::String> msgArr)  	}  } +void AccessEngine::printText(ASurface *s, Common::String &msg) { +	Common::String line; +	int width = 0; +	while (true) { +		bool lastLine = _fonts._font2.getLine(msg, s->_maxChars * 6, line, width); + +		// Set font colors +		_fonts._font2._fontColors[0] = 0; +		_fonts._font2._fontColors[1] = 28; +		_fonts._font2._fontColors[2] = 29; +		_fonts._font2._fontColors[3] = 30; + +		_fonts._font2.drawString(s, line, s->_printOrg); +		s->_printOrg = Common::Point(s->_printStart.x, s->_printOrg.y + 9); + +		if (lastLine) +			break; + +		_events->waitKeyMouse(); +		_buffer2.copyBuffer(s); +		s->_printOrg.y = s->_printStart.y; + +		if (lastLine) +			break; +	} +	_events->waitKeyMouse(); +} + +  void AccessEngine::plotList() {  	_player->calcPlayer();  	plotList1(); diff --git a/engines/access/access.h b/engines/access/access.h index 725e1fc87f..42ba49fd5d 100644 --- a/engines/access/access.h +++ b/engines/access/access.h @@ -113,8 +113,6 @@ protected:  	 */  	void doRoom(); -	void speakText(ASurface *s, Common::Array<Common::String>msgArr); -  	/**  	* Support method that generates a savegame name  	* @param slot		Slot number @@ -271,6 +269,12 @@ public:  	void freeChar();  	/** +	 * Draw a string on a given surface and update text positioning +	 */ +	void printText(ASurface *s, Common::String &msg); +	void speakText(ASurface *s, Common::Array<Common::String>msgArr); + +	/**  	 * Load a savegame  	 */  	virtual Common::Error loadGameState(int slot); diff --git a/engines/access/amazon/amazon_game.cpp b/engines/access/amazon/amazon_game.cpp index d18729aa19..f633cd8753 100644 --- a/engines/access/amazon/amazon_game.cpp +++ b/engines/access/amazon/amazon_game.cpp @@ -231,23 +231,26 @@ void AmazonEngine::loadEstablish(int sub) {  		_establishGroup = 0;  		_eseg = _files->loadFile(_estTable[oldGroup]); -	} else { -		_eseg = _files->loadFile("ETEXT.DAT"); -	} +		_establishCtrlTblOfs = READ_LE_UINT16(_eseg->data()); -	_establishCtrlTblOfs = READ_LE_UINT16(_eseg->data()); +		int ofs = _establishCtrlTblOfs + (sub * 2); +		int idx = READ_LE_UINT16(_eseg->data() + ofs); +		_narateFile = READ_LE_UINT16(_eseg->data() + idx); +		_txtPages = READ_LE_UINT16(_eseg->data() + idx + 2); -	int ofs = _establishCtrlTblOfs + (sub * 2); -	int idx = READ_LE_UINT16(_eseg->data() + ofs); -	_narateFile = READ_LE_UINT16(_eseg->data() + idx); -	_txtPages = READ_LE_UINT16(_eseg->data() + idx + 2); - -	if (!_txtPages) -		return; +		if (!_txtPages) +			return; -	_sndSubFile = READ_LE_UINT16(_eseg->data() + idx + 4); -	for (int i = 0; i < _txtPages; ++i) -		_countTbl[i] = READ_LE_UINT16(_eseg->data() + idx + 6 + (2 * i)); +		_sndSubFile = READ_LE_UINT16(_eseg->data() + idx + 4); +		for (int i = 0; i < _txtPages; ++i) +			_countTbl[i] = READ_LE_UINT16(_eseg->data() + idx + 6 + (2 * i)); +	} else { +		_establishGroup = 0; +		_narateFile = 0; +		_txtPages = 0; +		_sndSubFile = 0; +		_eseg = _files->loadFile("ETEXT.DAT"); +	}  }  void AmazonEngine::doEstablish(int esatabIndex, int sub) { @@ -279,7 +282,7 @@ void AmazonEngine::doEstablish(int esatabIndex, int sub) {  	_printEnd = 155;  	if (_txtPages == 0) {  		Common::String msg((const char *)_eseg->data() + msgOffset); -		_fonts._font2.printText(_screen, msg); +		printText(_screen, msg);  	} else {  		Common::Array<Common::String> msgArr;  		for (int i = 0; i < _txtPages; ++i) { diff --git a/engines/access/font.cpp b/engines/access/font.cpp index ba17f19211..75add4129c 100644 --- a/engines/access/font.cpp +++ b/engines/access/font.cpp @@ -159,10 +159,6 @@ int Font::drawChar(ASurface *s, char c, Common::Point &pt) {  	return ch.w;  } -void Font::printText(ASurface *s, const Common::String &msg) { -	error("TODO: printText"); -} -  /*------------------------------------------------------------------------*/  FontManager::FontManager() { diff --git a/engines/access/font.h b/engines/access/font.h index 9285d323d1..d8517e3720 100644 --- a/engines/access/font.h +++ b/engines/access/font.h @@ -85,10 +85,6 @@ public:  	 */  	int drawChar(ASurface *s, char c, Common::Point &pt); -	/** -	 * Draw a string on a given surface and update text positioning -	 */ -	void printText(ASurface *s, const Common::String &msg);  };  class FontManager { diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp index 2fdb91e35b..0b2150a5a6 100644 --- a/engines/access/scripts.cpp +++ b/engines/access/scripts.cpp @@ -795,7 +795,7 @@ void Scripts::cmdDead() {  		Common::String &msg = de._msg;  		_vm->_printEnd = 180; -		_vm->_fonts._font2.printText(_vm->_screen, msg); +		_vm->printText(_vm->_screen, msg);  		_vm->_screen->forceFadeOut();  		_vm->_sound->newMusic(0, 1);  | 
