diff options
| author | Robert Göffringmann | 2003-04-28 01:05:55 +0000 | 
|---|---|---|
| committer | Robert Göffringmann | 2003-04-28 01:05:55 +0000 | 
| commit | d95deb809d5052eb471dfc798309a1c6a8cafdb6 (patch) | |
| tree | d1f00bc2459ceb6dcd9dad5f740bf1377d7688bb | |
| parent | f14b0253f80226703883f35b09714829067fb834 (diff) | |
| download | scummvm-rg350-d95deb809d5052eb471dfc798309a1c6a8cafdb6.tar.gz scummvm-rg350-d95deb809d5052eb471dfc798309a1c6a8cafdb6.tar.bz2 scummvm-rg350-d95deb809d5052eb471dfc798309a1c6a8cafdb6.zip | |
fixed bug about checkBlock return value
svn-id: r7170
| -rw-r--r-- | sky/autoroute.cpp | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/sky/autoroute.cpp b/sky/autoroute.cpp index 41e03e6e6e..c81f902294 100644 --- a/sky/autoroute.cpp +++ b/sky/autoroute.cpp @@ -40,15 +40,21 @@ SkyAutoRoute::~SkyAutoRoute(void) {  uint16 SkyAutoRoute::checkBlock(uint16 *blockPos) { -	uint16 fieldVal, retVal = 0; +	uint16 fieldVal, retVal = 0xFFFF;  	fieldVal = blockPos[1]; // field to the right  	if ((!(fieldVal & 0x8000)) && (fieldVal != 0)) retVal = fieldVal;  	fieldVal = (blockPos - 1)[0]; // field to the left -	if ((!(fieldVal & 0x8000)) && (fieldVal != 0) && (fieldVal > retVal)) retVal = fieldVal; +	if ((!(fieldVal & 0x8000)) && (fieldVal != 0)) { +		if ((fieldVal > retVal) || (retVal == 0xFFFF)) retVal = fieldVal; +	}  	fieldVal = (blockPos + ROUTE_GRID_WIDTH)[0]; // upper field -	if ((!(fieldVal & 0x8000)) && (fieldVal != 0) && (fieldVal > retVal)) retVal = fieldVal; +	if ((!(fieldVal & 0x8000)) && (fieldVal != 0)) { +		if ((fieldVal > retVal) || (retVal == 0xFFFF)) retVal = fieldVal; +	}  	fieldVal = (blockPos - ROUTE_GRID_WIDTH)[0]; // upper field -	if ((!(fieldVal & 0x8000)) && (fieldVal != 0) && (fieldVal > retVal)) retVal = fieldVal; +	if ((!(fieldVal & 0x8000)) && (fieldVal != 0)) { +		if ((fieldVal > retVal) || (retVal == 0xFFFF)) retVal = fieldVal; +	}  	return retVal;  } @@ -231,9 +237,9 @@ uint16 SkyAutoRoute::autoRoute(Compact *cpt, uint16 **pSaveRoute) {  				if (!routeSrcCalc[0]) {  					// block wasn't yet done  					blockRet = checkBlock(routeSrcCalc); -					if (blockRet > 0) { +					if (blockRet != 0xFFFF) {  						// this block is accessible -						routeSrcCalc[0] = blockRet; +						routeSrcCalc[0] = blockRet+1;  						gridChanged = true;  					}  				} | 
