aboutsummaryrefslogtreecommitdiff
path: root/sky/autoroute.cpp
diff options
context:
space:
mode:
authorRobert Göffringmann2003-04-28 01:05:55 +0000
committerRobert Göffringmann2003-04-28 01:05:55 +0000
commitd95deb809d5052eb471dfc798309a1c6a8cafdb6 (patch)
treed1f00bc2459ceb6dcd9dad5f740bf1377d7688bb /sky/autoroute.cpp
parentf14b0253f80226703883f35b09714829067fb834 (diff)
downloadscummvm-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.cpp18
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;
}
}