diff options
| author | Travis Howell | 2007-04-15 14:12:08 +0000 | 
|---|---|---|
| committer | Travis Howell | 2007-04-15 14:12:08 +0000 | 
| commit | b932d602516365bf6a62a36773743279a26cf65b (patch) | |
| tree | c777f2d5ac9b7d0ee03037fcecac067ec0002aa7 | |
| parent | 8c4e539a40f816400d89ba45e04f85869642318c (diff) | |
| download | scummvm-rg350-b932d602516365bf6a62a36773743279a26cf65b.tar.gz scummvm-rg350-b932d602516365bf6a62a36773743279a26cf65b.tar.bz2 scummvm-rg350-b932d602516365bf6a62a36773743279a26cf65b.zip  | |
Cleanup.
svn-id: r26497
| -rw-r--r-- | engines/agos/agos.h | 72 | ||||
| -rw-r--r-- | engines/agos/charset.cpp | 111 | ||||
| -rw-r--r-- | engines/agos/cursor.cpp | 98 | ||||
| -rw-r--r-- | engines/agos/oracle.cpp | 115 | ||||
| -rw-r--r-- | engines/agos/string.cpp | 10 | ||||
| -rw-r--r-- | engines/agos/verb.cpp | 98 | 
6 files changed, 262 insertions, 242 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h index 4a6771e9a0..31df6d86a8 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -637,7 +637,7 @@ protected:  	virtual void resetVerbs();  	virtual void setVerb(HitArea * ha); -	void hitarea_leave(HitArea * ha, bool state = false); +	virtual void hitarea_leave(HitArea * ha, bool state = false);  	void leaveHitAreaById(uint hitarea_id);  	void sendSync(uint a); @@ -695,21 +695,7 @@ protected:  	void clearMenuStrip();  	void doMenuStrip(uint menuNum); -	void checkLinkBox(); - 	void hyperLinkOn(uint16 x); - 	void hyperLinkOff(); -	void linksUp(); -	void linksDown(); -	void oracleTextUp(); -	void oracleTextDown(); -	void listSaveGames(int n); -	void saveUserGame(int slot); -	void windowBackSpace(WindowBlock *window); -  	void oracleLogo(); -	void scrollOracle(); -	void scrollOracleUp(); -	void scrollOracleDown();  	void swapCharacterLogo();  	void mouseOff(); @@ -740,8 +726,6 @@ protected:  	void endCutscene();  	void runSubroutine101(); -	void checkUp(WindowBlock *window); -	void checkDown(WindowBlock *window);  	virtual void inventoryUp(WindowBlock *window);  	virtual void inventoryDown(WindowBlock *window); @@ -761,14 +745,11 @@ protected:  	void displayName(HitArea * ha);  	void resetNameWindow();  	void displayBoxStars(); -	void invertBox_FF(HitArea *ha, bool state);  	void invertBox(HitArea * ha, byte a, byte b, byte c, byte d);  	void handleMouseMoved();  	void initMouse(); -	void loadMouseImage();  	virtual void drawMousePointer(); -	void drawMousePart(int image, byte x, byte y);  	void addArrows(WindowBlock *window);  	void removeArrows(WindowBlock *window, uint num); @@ -818,12 +799,6 @@ protected:  	void renderStringAmiga(uint vga_sprite_id, uint color, uint width, uint height, const char *txt);  	void renderString(uint vga_sprite_id, uint color, uint width, uint height, const char *txt); -	void boxTextMessage(const char *x); -	void boxTextMsg(const char *x); -	void printBox(); -	uint16 getBoxSize(); -	uint16 checkFit(char *Ptr, int width, int lines); -  	void writeChar(WindowBlock *window, int x, int y, int offs, int val);  	byte *allocBlock(uint32 size); @@ -1160,7 +1135,7 @@ protected:  	void fillBackGroundFromBack(uint lines);  	void fillBackFromFront(uint x, uint y, uint w, uint h); -	void print_char_helper_1(const byte *src, uint len); +	virtual void print_char_helper_1(const byte *src, uint len);  	void clsCheck(WindowBlock *window);  	void quickLoadOrSave(); @@ -1180,7 +1155,7 @@ protected:  	void openTextWindow();  	void tidyIconArray(uint i); -	void windowNewLine(WindowBlock *window); +	virtual void windowNewLine(WindowBlock *window);  	void windowDrawChar(WindowBlock *window, uint x, uint y, byte chr);  	void loadMusic(uint music); @@ -1362,6 +1337,12 @@ public:  	virtual void executeOpcode(int opcode); +	void boxTextMessage(const char *x); +	void boxTextMsg(const char *x); +	void printBox(); +	uint16 getBoxSize(); +	uint16 checkFit(char *Ptr, int width, int lines); +  	void oww_moveDirn();  	void oww_goto();  	void oww_addTextBox(); @@ -1470,8 +1451,6 @@ public:  	virtual void executeOpcode(int opcode); -	virtual void drawMousePointer(); -  	void off_chance();  	void off_jumpOut();  	void off_addTextBox(); @@ -1515,15 +1494,42 @@ protected:  	const OpcodeEntryFeeble *_opcodesFeeble; +	void drawMousePart(int image, byte x, byte y); +	virtual void drawMousePointer(); +  	virtual void resetVerbs();  	virtual void setVerb(HitArea * ha); +	virtual void hitarea_leave(HitArea * ha, bool state = false); +	void invertBox(HitArea *ha, bool state); -	virtual void inventoryUp(WindowBlock *window); -	virtual void inventoryDown(WindowBlock *window); +	virtual void windowNewLine(WindowBlock *window);  	virtual void clearName();  	virtual void drawIconArray(uint i, Item *item_ptr, int line, int classMask); + +	virtual void print_char_helper_1(const byte *src, uint len); + +	void checkLinkBox(); + 	void hyperLinkOn(uint16 x); + 	void hyperLinkOff(); +	void linksUp(); +	void linksDown(); + +	void checkUp(WindowBlock *window); +	void checkDown(WindowBlock *window); +	virtual void inventoryUp(WindowBlock *window); +	virtual void inventoryDown(WindowBlock *window); + +	void oracleTextUp(); +	void oracleTextDown(); +	void scrollOracle(); +	void scrollOracleUp(); +	void scrollOracleDown(); + +	void listSaveGames(int n); +	void saveUserGame(int slot); +	void windowBackSpace(WindowBlock *window);  };  class AGOSEngine_PuzzlePack : public AGOSEngine_Feeble { @@ -1561,6 +1567,8 @@ protected:  	const OpcodeEntryPuzzlePack *_opcodesPuzzlePack;  	virtual void resetVerbs(); + +	void loadMouseImage();  };  } // End of namespace AGOS diff --git a/engines/agos/charset.cpp b/engines/agos/charset.cpp index 4b318a3784..874108e872 100644 --- a/engines/agos/charset.cpp +++ b/engines/agos/charset.cpp @@ -28,47 +28,52 @@  namespace AGOS { -void AGOSEngine::print_char_helper_1(const byte *src, uint len) { -	uint idx; - +void AGOSEngine_Feeble::print_char_helper_1(const byte *src, uint len) {  	if (_textWindow == NULL)  		return;  	while (len-- != 0) { -		if (getGameType() == GType_FF || getGameType() == GType_PP) { -			if (getBitFlag(93)) { +		if (getBitFlag(93)) { +			if (_curWindow == 3) { +				if ((_newLines >= _textWindow->scrollY) && (_newLines < (_textWindow->scrollY + 3))) +					windowPutChar(*src); +				if (*src == '\n')		// Do two top lines of text only +					_newLines++; +				src++; +			} +		} else { +			if (getBitFlag(94)) {  				if (_curWindow == 3) { -					if ((_newLines >= _textWindow->scrollY) && (_newLines < (_textWindow->scrollY + 3))) +					if (_newLines == (_textWindow->scrollY + 7))  						windowPutChar(*src); -					if (*src == '\n')		// Do two top lines of text only +					if (*src == '\n')	// Do two top lines of text only  						_newLines++;  					src++;  				}  			} else { -				if (getBitFlag(94)) { -					if (_curWindow == 3) { -						if (_newLines == (_textWindow->scrollY + 7)) -							windowPutChar(*src); -						if (*src == '\n')	// Do two top lines of text only -							_newLines++; -						src++; -					} -				} else { -					if (getBitFlag(92)) -						delay(50); -					windowPutChar(*src++); -				} -			} -		} else { -			if (*src != 12 && _textWindow->iconPtr != NULL && -					_fcsData1[idx = getWindowNum(_textWindow)] != 2) { -	 -				_fcsData1[idx] = 2; -				_fcsData2[idx] = 1; +				if (getBitFlag(92)) +					delay(50); +				windowPutChar(*src++);  			} +		} +	} +} + +void AGOSEngine::print_char_helper_1(const byte *src, uint len) { +	uint idx; -			windowPutChar(*src++); +	if (_textWindow == NULL) +		return; + +	while (len-- != 0) { +		if (*src != 12 && _textWindow->iconPtr != NULL && +				_fcsData1[idx = getWindowNum(_textWindow)] != 2) { + +			_fcsData1[idx] = 2; +			_fcsData2[idx] = 1;  		} + +		windowPutChar(*src++);  	}  } @@ -666,35 +671,30 @@ void AGOSEngine::windowPutChar(WindowBlock *window, byte c, byte b) {  	}  } -void AGOSEngine::windowNewLine(WindowBlock *window) { -	if (getGameType() == GType_FF) { -		if (_noOracleScroll == 0) { -			if (window->height < window->textRow + 30) { -				if (!getBitFlag(94)) { -					_noOracleScroll = 1; -					if (getBitFlag(92)) { -						_noOracleScroll = 0; -						checkLinkBox(); -						scrollOracle(); -						linksUp(); -						window->scrollY++; -						_oracleMaxScrollY++; -					} else { -						_oracleMaxScrollY++; -						checkLinkBox(); -					} +void AGOSEngine_Feeble::windowNewLine(WindowBlock *window) { +	if (_noOracleScroll == 0) { +		if (window->height < window->textRow + 30) { +			if (!getBitFlag(94)) { +				_noOracleScroll = 1; +				if (getBitFlag(92)) { +					_noOracleScroll = 0; +					checkLinkBox(); +					scrollOracle(); +					linksUp(); +					window->scrollY++; +					_oracleMaxScrollY++; +				} else { +					_oracleMaxScrollY++; +					checkLinkBox();  				} -			} else { -				window->textRow += 15; -				checkLinkBox();  			}  		} else { -			_oracleMaxScrollY++; +			window->textRow += 15;  			checkLinkBox();  		}  	} else { -		if (window->textRow != window->height) -			window->textRow++; +		_oracleMaxScrollY++; +		checkLinkBox();  	}  	window->textColumn = 0; @@ -702,6 +702,15 @@ void AGOSEngine::windowNewLine(WindowBlock *window) {  	window->textLength = 0;  } +void AGOSEngine::windowNewLine(WindowBlock *window) { +	if (window->textRow != window->height) +		window->textRow++; + +	window->textColumn = 0; +	window->textColumnOffset = 0; +	window->textLength = 0; +} +  #ifdef PALMOS_68K  static const byte *czech_windowFont;  static const byte *russian_windowFont; diff --git a/engines/agos/cursor.cpp b/engines/agos/cursor.cpp index 8575d17de0..f52fddb5e0 100644 --- a/engines/agos/cursor.cpp +++ b/engines/agos/cursor.cpp @@ -494,7 +494,7 @@ void AGOSEngine::initMouse() {  	}  } -void AGOSEngine::loadMouseImage() { +void AGOSEngine_PuzzlePack::loadMouseImage() {  	loadZone(_variableArray[500]);  	VgaPointersEntry *vpe = &_vgaBufferPointers[_variableArray[500]]; @@ -502,43 +502,29 @@ void AGOSEngine::loadMouseImage() {  	memcpy(_mouseData, src, _maxCursorWidth * _maxCursorHeight);  } -void AGOSEngine::drawMousePointer() { -	if (getGameType() == GType_PP && getGameId() != GID_DIMP) { -		CursorMan.replaceCursor(_mouseData, _maxCursorWidth, _maxCursorHeight, 37, 48, 0); -	} else if (getGameType() == GType_SIMON2) { -		CursorMan.replaceCursor(_simon2_cursors[_mouseCursor], 16, 16, 7, 7); -	} else if (getGameType() == GType_SIMON1) { -		CursorMan.replaceCursor(_mouseData, 16, 16, 0, 0, 0xFF); -	} else { -		const uint16 *src; -		int i, j; +void AGOSEngine_Feeble::drawMousePart(int image, byte x, byte y) { +	VgaPointersEntry *vpe = &_vgaBufferPointers[7]; +	byte *src; +	int width, height; -		const uint8 color = (getGameType() == GType_ELVIRA1) ? 15: 65; -		memset(_mouseData, 0xFF, _maxCursorWidth * _maxCursorHeight); +	byte *dst = _mouseData + y * _maxCursorWidth + x; -		uint cursor = _mouseCursor; -		if (getGameType() == GType_ELVIRA1 && cursor == 2) -			cursor = 3; +	src = vpe->vgaFile2 + image * 8; +	width = READ_LE_UINT16(src + 6); +	height = READ_LE_UINT16(src + 4); -		if (_dragFlag != 0) -			cursor = 2; +	src = vpe->vgaFile2 + READ_LE_UINT32(src); -		src = _common_cursors[cursor]; +	assert(width + x <= _maxCursorWidth); +	assert(height + y <= _maxCursorWidth); -		for (i = 0; i < 16; i++) { -			for (j = 0; j < 16; j++) { -				if (src[0] & (1 << (15 - (j % 16)))) { -					if (src[1] & (1 << (15 - (j % 16)))) { -						_mouseData[16 * i + j] = color; -					} else { -						_mouseData[16 * i + j] = 0; -					} -				} -			} -			src += 2; +	for (int h = 0; h < height; h++) { +		for (int w = 0; w < width; w++) { +			if (src[w] != 0) +				dst[w] = src[w];  		} - -		CursorMan.replaceCursor(_mouseData, 16, 16, 0, 0, 0xFF); +		src += width; +		dst += _maxCursorWidth;  	}  } @@ -599,29 +585,43 @@ void AGOSEngine_Feeble::drawMousePointer() {  	}  } -void AGOSEngine::drawMousePart(int image, byte x, byte y) { -	VgaPointersEntry *vpe = &_vgaBufferPointers[7]; -	byte *src; -	int width, height; +void AGOSEngine::drawMousePointer() { +	if (getGameType() == GType_PP && getGameId() != GID_DIMP) { +		CursorMan.replaceCursor(_mouseData, _maxCursorWidth, _maxCursorHeight, 37, 48, 0); +	} else if (getGameType() == GType_SIMON2) { +		CursorMan.replaceCursor(_simon2_cursors[_mouseCursor], 16, 16, 7, 7); +	} else if (getGameType() == GType_SIMON1) { +		CursorMan.replaceCursor(_mouseData, 16, 16, 0, 0, 0xFF); +	} else { +		const uint16 *src; +		int i, j; -	byte *dst = _mouseData + y * _maxCursorWidth + x; +		const uint8 color = (getGameType() == GType_ELVIRA1) ? 15: 65; +		memset(_mouseData, 0xFF, _maxCursorWidth * _maxCursorHeight); -	src = vpe->vgaFile2 + image * 8; -	width = READ_LE_UINT16(src + 6); -	height = READ_LE_UINT16(src + 4); +		uint cursor = _mouseCursor; +		if (getGameType() == GType_ELVIRA1 && cursor == 2) +			cursor = 3; -	src = vpe->vgaFile2 + READ_LE_UINT32(src); +		if (_dragFlag != 0) +			cursor = 2; -	assert(width + x <= _maxCursorWidth); -	assert(height + y <= _maxCursorWidth); +		src = _common_cursors[cursor]; -	for (int h = 0; h < height; h++) { -		for (int w = 0; w < width; w++) { -			if (src[w] != 0) -				dst[w] = src[w]; +		for (i = 0; i < 16; i++) { +			for (j = 0; j < 16; j++) { +				if (src[0] & (1 << (15 - (j % 16)))) { +					if (src[1] & (1 << (15 - (j % 16)))) { +						_mouseData[16 * i + j] = color; +					} else { +						_mouseData[16 * i + j] = 0; +					} +				} +			} +			src += 2;  		} -		src += width; -		dst += _maxCursorWidth; + +		CursorMan.replaceCursor(_mouseData, 16, 16, 0, 0, 0xFF);  	}  } diff --git a/engines/agos/oracle.cpp b/engines/agos/oracle.cpp index efed6c8d5b..4c140fbe63 100644 --- a/engines/agos/oracle.cpp +++ b/engines/agos/oracle.cpp @@ -31,7 +31,7 @@  namespace AGOS { -void AGOSEngine::checkLinkBox() {	// Check for boxes spilling over to next row of text +void AGOSEngine_Feeble::checkLinkBox() {	// Check for boxes spilling over to next row of text  	if (_hyperLink != 0) {  		_variableArray[52] = _textWindow->x + _textWindow->textColumn - _variableArray[50];  		if (_variableArray[52] != 0) { @@ -43,7 +43,7 @@ void AGOSEngine::checkLinkBox() {	// Check for boxes spilling over to next row o  	}  } -void AGOSEngine::hyperLinkOn(uint16 x) { +void AGOSEngine_Feeble::hyperLinkOn(uint16 x) {  	if (!getBitFlag(51))  		return; @@ -53,7 +53,7 @@ void AGOSEngine::hyperLinkOn(uint16 x) {  } -void AGOSEngine::hyperLinkOff() { +void AGOSEngine_Feeble::hyperLinkOff() {  	if (!getBitFlag(51))  		return; @@ -63,28 +63,117 @@ void AGOSEngine::hyperLinkOff() {  	_hyperLink = 0;  } -void AGOSEngine::linksUp() {	// Scroll Oracle Links +void AGOSEngine_Feeble::linksUp() {	// Scroll Oracle Links  	uint16 j;  	for (j = 700; j < _variableArray[53]; j++) {  		moveBox(j, 0, -15);  	}  } -void AGOSEngine::linksDown() { +void AGOSEngine_Feeble::linksDown() {  	uint16 i;  	for (i = 700; i < _variableArray[53]; i++) {  		moveBox(i,0, 15);  	}  } -void AGOSEngine::scrollOracle() { +void AGOSEngine_Feeble::checkUp(WindowBlock *window) { +	uint16 j, k; + +	if (((_variableArray[31] - _variableArray[30]) == 40) && (_variableArray[31] > 52)) { +		k = (((_variableArray[31] / 52) - 2) % 3); +		j = k * 6; +		if (!isBoxDead(j + 201)) { +			uint index = getWindowNum(window); +			drawIconArray(index, window->iconPtr->itemRef, 0, window->iconPtr->classMask); +			animate(4, 9, k + 34, 0, 0, 0);	 +		} +	} +	if ((_variableArray[31] - _variableArray[30]) == 76) { +		k = ((_variableArray[31] / 52) % 3); +		j = k * 6; +		if (isBoxDead(j + 201)) { +			animate(4, 9, k + 31, 0, 0, 0); +			undefineBox(j + 201); +			undefineBox(j + 202); +			undefineBox(j + 203); +			undefineBox(j + 204); +			undefineBox(j + 205); +			undefineBox(j + 206); +		} +		_variableArray[31] -= 52; +		_iOverflow = 1; +	} +} + +void AGOSEngine_Feeble::inventoryUp(WindowBlock *window) { +	_marks = 0; +	checkUp(window); +	animate(4, 9, 21, 0 ,0, 0);	 +	while (1) { +		if (_currentBox->id != 0x7FFB || !getBitFlag(89)) +			break; +		checkUp(window); +		delay(1); +	} +	waitForMark(2); +	checkUp(window); +	sendSync(922); +	waitForMark(1); +	checkUp(window); +} + + +void AGOSEngine_Feeble::checkDown(WindowBlock *window) { +	uint16 j, k; + +	if (((_variableArray[31] - _variableArray[30]) == 24) && (_iOverflow == 1)) { +		uint index = getWindowNum(window); +		drawIconArray(index, window->iconPtr->itemRef, 0, window->iconPtr->classMask); +		k = ((_variableArray[31] / 52) % 3); +		animate(4, 9, k + 25, 0, 0, 0);	 +		_variableArray[31] += 52; +	} +	if (((_variableArray[31] - _variableArray[30]) == 40) && (_variableArray[30] > 52)) { +		k = (((_variableArray[31] / 52) + 1) % 3); +		j = k * 6; +		if (isBoxDead(j + 201)) { +			animate(4, 9, k + 28, 0, 0, 0); +			undefineBox(j + 201); +			undefineBox(j + 202); +			undefineBox(j + 203); +			undefineBox(j + 204); +			undefineBox(j + 205); +			undefineBox(j + 206); +		} +	} +} + +void AGOSEngine_Feeble::inventoryDown(WindowBlock *window) { +	_marks = 0; +	checkDown(window); +	animate(4, 9, 23, 0, 0, 0);	 +	while (1) { +		if (_currentBox->id != 0x7FFC || !getBitFlag(89)) +		break; +		checkDown(window); +		delay(1); +	} +	waitForMark(2); +	checkDown(window); +	sendSync(924); +	waitForMark(1); +	checkDown(window); +} + +void AGOSEngine_Feeble::scrollOracle() {  	int i;  	for (i = 0; i < 5; i++)  		scrollOracleUp();  } -void AGOSEngine::oracleTextUp() { +void AGOSEngine_Feeble::oracleTextUp() {  	Subroutine *sub;  	int i = 0;  	changeWindow(3); @@ -118,7 +207,7 @@ void AGOSEngine::oracleTextUp() {  	}  } -void AGOSEngine::oracleTextDown() { +void AGOSEngine_Feeble::oracleTextDown() {  	Subroutine *sub;  	int i = 0;  	changeWindow(3); @@ -152,7 +241,7 @@ void AGOSEngine::oracleTextDown() {  	}  } -void AGOSEngine::scrollOracleUp() { +void AGOSEngine_Feeble::scrollOracleUp() {  	byte *src, *dst;  	uint16 w, h; @@ -181,7 +270,7 @@ void AGOSEngine::scrollOracleUp() {  	}  } -void AGOSEngine::scrollOracleDown() { +void AGOSEngine_Feeble::scrollOracleDown() {  	byte *src, *dst;  	uint16 w, h; @@ -277,7 +366,7 @@ void AGOSEngine::swapCharacterLogo() {  	}  } -void AGOSEngine::listSaveGames(int n) { +void AGOSEngine_Feeble::listSaveGames(int n) {  	char b[108];  	Common::InSaveFile *in;  	uint16 j, k, z, maxFiles; @@ -344,7 +433,7 @@ void AGOSEngine::listSaveGames(int n) {  	}  } -void AGOSEngine::saveUserGame(int slot) { +void AGOSEngine_Feeble::saveUserGame(int slot) {  	WindowBlock *window;  	Common::InSaveFile *in;  	char name[108]; @@ -407,7 +496,7 @@ void AGOSEngine::saveUserGame(int slot) {  	}  } -void AGOSEngine::windowBackSpace(WindowBlock *window) { +void AGOSEngine_Feeble::windowBackSpace(WindowBlock *window) {  	byte *dst;  	uint x, y, h, w; diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp index ca376da718..f4ceb4239b 100644 --- a/engines/agos/string.cpp +++ b/engines/agos/string.cpp @@ -490,7 +490,7 @@ void AGOSEngine::printScreenText(uint vgaSpriteId, uint color, const char *strin  }  // String code for boxes in Waxworks -uint16 AGOSEngine::getBoxSize() { +uint16 AGOSEngine_Waxworks::getBoxSize() {  	int x;  	switch (_boxLineCount) {  	case 1: x = _lineCounts[0]; @@ -634,7 +634,7 @@ uint16 AGOSEngine::getBoxSize() {  } -uint16 AGOSEngine::checkFit(char *Ptr, int width, int lines) { +uint16 AGOSEngine_Waxworks::checkFit(char *Ptr, int width, int lines) {  	int countw = 0;  	int countl = 0;  	char *x = NULL; @@ -659,7 +659,7 @@ uint16 AGOSEngine::checkFit(char *Ptr, int width, int lines) {  	return 1;  } -void AGOSEngine::boxTextMessage(const char *x) { +void AGOSEngine_Waxworks::boxTextMessage(const char *x) {  	char *BoxBufferPtr = _boxBuffer;  	sprintf(BoxBufferPtr, "%s\n", x);  	_lineCounts[_boxLineCount] += strlen(x); @@ -669,7 +669,7 @@ void AGOSEngine::boxTextMessage(const char *x) {  	_boxCR = 1;  } -void AGOSEngine::boxTextMsg(const char *x) { +void AGOSEngine_Waxworks::boxTextMsg(const char *x) {  	char *BoxBufferPtr = _boxBuffer;  	sprintf(BoxBufferPtr, "%s", x);  	_lineCounts[_boxLineCount] += strlen(x); @@ -677,7 +677,7 @@ void AGOSEngine::boxTextMsg(const char *x) {  	_boxCR = 0;  } -void AGOSEngine::printBox() { +void AGOSEngine_Waxworks::printBox() {  	char *BoxBufferPtr = 0;  	uint16 BoxSize;  	_linePtrs[0] = _boxBuffer; diff --git a/engines/agos/verb.cpp b/engines/agos/verb.cpp index dfc1a6ceb0..0698ee3e66 100644 --- a/engines/agos/verb.cpp +++ b/engines/agos/verb.cpp @@ -591,10 +591,12 @@ void AGOSEngine::setVerb(HitArea *ha) {  	_currentVerbBox = ha;  } +void AGOSEngine_Feeble::hitarea_leave(HitArea *ha, bool state) { +	invertBox(ha, state); +} +  void AGOSEngine::hitarea_leave(HitArea *ha, bool state) { -	if (getGameType() == GType_FF) { -		invertBox_FF(ha, state); -	} else if (getGameType() == GType_SIMON2) { +	if (getGameType() == GType_SIMON2) {  		invertBox(ha, 231, 229, 230, 1);  	} else {  		invertBox(ha, 223, 213, 218, 5); @@ -607,77 +609,6 @@ void AGOSEngine::leaveHitAreaById(uint hitarea_id) {  		hitarea_leave(ha);  } -void AGOSEngine::checkUp(WindowBlock *window) { -	uint16 j, k; - -	if (((_variableArray[31] - _variableArray[30]) == 40) && (_variableArray[31] > 52)) { -		k = (((_variableArray[31] / 52) - 2) % 3); -		j = k * 6; -		if (!isBoxDead(j + 201)) { -			uint index = getWindowNum(window); -			drawIconArray(index, window->iconPtr->itemRef, 0, window->iconPtr->classMask); -			animate(4, 9, k + 34, 0, 0, 0);	 -		} -	} -	if ((_variableArray[31] - _variableArray[30]) == 76) { -		k = ((_variableArray[31] / 52) % 3); -		j = k * 6; -		if (isBoxDead(j + 201)) { -			animate(4, 9, k + 31, 0, 0, 0); -			undefineBox(j + 201); -			undefineBox(j + 202); -			undefineBox(j + 203); -			undefineBox(j + 204); -			undefineBox(j + 205); -			undefineBox(j + 206); -		} -		_variableArray[31] -= 52; -		_iOverflow = 1; -	} -} - -void AGOSEngine::checkDown(WindowBlock *window) { -	uint16 j, k; - -	if (((_variableArray[31] - _variableArray[30]) == 24) && (_iOverflow == 1)) { -		uint index = getWindowNum(window); -		drawIconArray(index, window->iconPtr->itemRef, 0, window->iconPtr->classMask); -		k = ((_variableArray[31] / 52) % 3); -		animate(4, 9, k + 25, 0, 0, 0);	 -		_variableArray[31] += 52; -	} -	if (((_variableArray[31] - _variableArray[30]) == 40) && (_variableArray[30] > 52)) { -		k = (((_variableArray[31] / 52) + 1) % 3); -		j = k * 6; -		if (isBoxDead(j + 201)) { -			animate(4, 9, k + 28, 0, 0, 0); -			undefineBox(j + 201); -			undefineBox(j + 202); -			undefineBox(j + 203); -			undefineBox(j + 204); -			undefineBox(j + 205); -			undefineBox(j + 206); -		} -	} -} - -void AGOSEngine_Feeble::inventoryUp(WindowBlock *window) { -	_marks = 0; -	checkUp(window); -	animate(4, 9, 21, 0 ,0, 0);	 -	while (1) { -		if (_currentBox->id != 0x7FFB || !getBitFlag(89)) -			break; -		checkUp(window); -		delay(1); -	} -	waitForMark(2); -	checkUp(window); -	sendSync(922); -	waitForMark(1); -	checkUp(window); -} -  void AGOSEngine::inventoryUp(WindowBlock *window) {  	if (window->iconPtr->line == 0)  		return; @@ -688,23 +619,6 @@ void AGOSEngine::inventoryUp(WindowBlock *window) {  	mouseOn();  } -void AGOSEngine_Feeble::inventoryDown(WindowBlock *window) { -	_marks = 0; -	checkDown(window); -	animate(4, 9, 23, 0, 0, 0);	 -	while (1) { -		if (_currentBox->id != 0x7FFC || !getBitFlag(89)) -		break; -		checkDown(window); -		delay(1); -	} -	waitForMark(2); -	checkDown(window); -	sendSync(924); -	waitForMark(1); -	checkDown(window); -} -  void AGOSEngine::inventoryDown(WindowBlock *window) {  	mouseOff();  	uint index = getWindowNum(window); @@ -870,7 +784,7 @@ void AGOSEngine::displayName(HitArea *ha) {  		_lastNameOn = ha;  } -void AGOSEngine::invertBox_FF(HitArea *ha, bool state) { +void AGOSEngine_Feeble::invertBox(HitArea *ha, bool state) {  	if (getBitFlag(205) || getBitFlag(206)) {  		if (state != 0) {  			_mouseAnimMax = _oldMouseAnimMax;  | 
