diff options
| author | Filippos Karapetis | 2015-12-07 10:08:01 +0200 | 
|---|---|---|
| committer | Willem Jan Palenstijn | 2015-12-23 21:33:53 +0100 | 
| commit | 9cc30c3c6d6edb616bb76d15b46391bacf3e2052 (patch) | |
| tree | 85ef97d877a6c1cdf1e7ecc20a7fde2e0fe44697 | |
| parent | 87201cfed25e2b145d55c5d77fe0988d32444395 (diff) | |
| download | scummvm-rg350-9cc30c3c6d6edb616bb76d15b46391bacf3e2052.tar.gz scummvm-rg350-9cc30c3c6d6edb616bb76d15b46391bacf3e2052.tar.bz2 scummvm-rg350-9cc30c3c6d6edb616bb76d15b46391bacf3e2052.zip | |
LAB: Clean up processArrow()
| -rw-r--r-- | engines/lab/engine.cpp | 5 | ||||
| -rw-r--r-- | engines/lab/parsefun.h | 2 | ||||
| -rw-r--r-- | engines/lab/processroom.cpp | 53 | 
3 files changed, 30 insertions, 30 deletions
| diff --git a/engines/lab/engine.cpp b/engines/lab/engine.cpp index ce89225560..726a10365f 100644 --- a/engines/lab/engine.cpp +++ b/engines/lab/engine.cpp @@ -720,8 +720,7 @@ bool LabEngine::from_crumbs(uint32 tmpClass, uint16 code, uint16 Qualifier, Comm  				oldDirection = _direction; -				NewDir = _direction; -				processArrow(&NewDir, gadgetId - 6); +				NewDir = processArrow(_direction, gadgetId - 6);  				doTurn(_direction, NewDir, &_cptr);  				_anim->_doBlack = true;  				_direction = NewDir; @@ -737,7 +736,7 @@ bool LabEngine::from_crumbs(uint32 tmpClass, uint16 code, uint16 Qualifier, Comm  						_anim->_doBlack = true;  				} else {  					_anim->_doBlack = true; -					processArrow(&_direction, gadgetId - 6); +					_direction = processArrow(_direction, gadgetId - 6);  					if (oldRoomNum != _roomNum) {  						drawStaticMessage(kTextGoForward); diff --git a/engines/lab/parsefun.h b/engines/lab/parsefun.h index 7f8895176b..c45727d907 100644 --- a/engines/lab/parsefun.h +++ b/engines/lab/parsefun.h @@ -45,7 +45,7 @@ bool parse(const char *inputFile);  ViewData *getViewData(uint16 roomNum, uint16 direction);  char *getPictName(CloseDataPtr *lcptr);  void drawDirection(CloseDataPtr lcptr); -bool processArrow(uint16 *direction, uint16 arrow); +uint16 processArrow(uint16 curDirection, uint16 arrow);  void setCurClose(Common::Point pos, CloseDataPtr *cptr, bool useAbsoluteCoords = false);  bool takeItem(uint16 x, uint16 y, CloseDataPtr *cptr);  bool doActionRule(Common::Point pos, int16 action, int16 roomNum, CloseDataPtr *lcptr); diff --git a/engines/lab/processroom.cpp b/engines/lab/processroom.cpp index d467c21cb5..1487888b27 100644 --- a/engines/lab/processroom.cpp +++ b/engines/lab/processroom.cpp @@ -188,44 +188,45 @@ void LabEngine::drawDirection(CloseDataPtr lcptr) {  /*****************************************************************************/  /* process a arrow gadget movement.                                          */  /*****************************************************************************/ -bool processArrow(uint16 *direction, uint16 arrow) { -	if (arrow == 1) { /* Forward */ +uint16 processArrow(uint16 curDirection, uint16 arrow) { +	if (arrow == 1) { // Forward  		uint16 room = 1; -		if (*direction == NORTH) +		if (curDirection == NORTH)  			room = g_lab->_rooms[g_lab->_roomNum]._northDoor; -		else if (*direction == SOUTH) +		else if (curDirection == SOUTH)  			room = g_lab->_rooms[g_lab->_roomNum]._southDoor; -		else if (*direction == EAST) +		else if (curDirection == EAST)  			room = g_lab->_rooms[g_lab->_roomNum]._eastDoor; -		else if (*direction == WEST) +		else if (curDirection == WEST)  			room = g_lab->_rooms[g_lab->_roomNum]._westDoor; -		if (room == 0) -			return false; -		else +		if (room != 0)  			g_lab->_roomNum = room; -	} else if (arrow == 0) { /* Left */ -		if (*direction == NORTH) -			*direction = WEST; -		else if (*direction == WEST) -			*direction = SOUTH; -		else if (*direction == SOUTH) -			*direction = EAST; + +		return curDirection; +	} else if (arrow == 0) { // Left +		if (curDirection == NORTH) +			return WEST; +		else if (curDirection == WEST) +			return SOUTH; +		else if (curDirection == SOUTH) +			return EAST;  		else -			*direction = NORTH; -	} else if (arrow == 2) { /* Right */ -		if (*direction == NORTH) -			*direction = EAST; -		else if (*direction == EAST) -			*direction = SOUTH; -		else if (*direction == SOUTH) -			*direction = WEST; +			return NORTH; +	} else if (arrow == 2) { // Right +		if (curDirection == NORTH) +			return EAST; +		else if (curDirection == EAST) +			return SOUTH; +		else if (curDirection == SOUTH) +			return WEST;  		else -			*direction = NORTH; +			return NORTH;  	} -	return true; +	// Should never reach here! +	return curDirection;  }  /*****************************************************************************/ | 
