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 /sky/autoroute.cpp | |
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
Diffstat (limited to 'sky/autoroute.cpp')
-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; } } |