diff options
| author | D G Turner | 2012-06-07 12:33:13 +0100 | 
|---|---|---|
| committer | D G Turner | 2012-06-07 12:33:13 +0100 | 
| commit | 8deb8b3d42927d1d6e73350f96353eda1b10a1fc (patch) | |
| tree | 67823ec49a9e0c4d3d2a66297f70b3a414724ae3 | |
| parent | dd558510dc60b61d9f960c7f49e8bc0327d8115b (diff) | |
| download | scummvm-rg350-8deb8b3d42927d1d6e73350f96353eda1b10a1fc.tar.gz scummvm-rg350-8deb8b3d42927d1d6e73350f96353eda1b10a1fc.tar.bz2 scummvm-rg350-8deb8b3d42927d1d6e73350f96353eda1b10a1fc.zip  | |
TOON: Minor cleanup and formatting fixes to Pathfinding class.
| -rw-r--r-- | engines/toon/path.cpp | 51 | ||||
| -rw-r--r-- | engines/toon/path.h | 7 | 
2 files changed, 27 insertions, 31 deletions
diff --git a/engines/toon/path.cpp b/engines/toon/path.cpp index 540290d823..101778d4b4 100644 --- a/engines/toon/path.cpp +++ b/engines/toon/path.cpp @@ -161,6 +161,18 @@ PathFinding::~PathFinding(void) {  	delete[] _gridTemp;  } +void PathFinding::init(Picture *mask) { +	debugC(1, kDebugPath, "init(mask)"); + +	_width = mask->getWidth(); +	_height = mask->getHeight(); +	_currentMask = mask; +	_heap->unload(); +	_heap->init(500); +	delete[] _gridTemp; +	_gridTemp = new int32[_width * _height]; +} +  bool PathFinding::isLikelyWalkable(int32 x, int32 y) {  	for (int32 i = 0; i < _numBlockingRects; i++) {  		if (_blockingRects[i][4] == 0) { @@ -180,12 +192,10 @@ bool PathFinding::isLikelyWalkable(int32 x, int32 y) {  bool PathFinding::isWalkable(int32 x, int32 y) {  	debugC(2, kDebugPath, "isWalkable(%d, %d)", x, y); -	bool maskWalk = (_currentMask->getData(x, y) & 0x1f) > 0; - -	return maskWalk; +	return (_currentMask->getData(x, y) & 0x1f) > 0;  } -int32 PathFinding::findClosestWalkingPoint(int32 xx, int32 yy, int32 *fxx, int32 *fyy, int origX, int origY) { +bool PathFinding::findClosestWalkingPoint(int32 xx, int32 yy, int32 *fxx, int32 *fyy, int origX, int origY) {  	debugC(1, kDebugPath, "findClosestWalkingPoint(%d, %d, fxx, fyy, %d, %d)", xx, yy, origX, origY);  	int32 currentFound = -1; @@ -214,11 +224,11 @@ int32 PathFinding::findClosestWalkingPoint(int32 xx, int32 yy, int32 *fxx, int32  	if (currentFound != -1) {  		*fxx = currentFound % _width;  		*fyy = currentFound / _width; -		return 1; +		return true;  	} else {  		*fxx = 0;  		*fyy = 0; -		return 0; +		return false;  	}  } @@ -238,15 +248,13 @@ bool PathFinding::walkLine(int32 x, int32 y, int32 x2, int32 y2) {  	int32 cdx = (dx << 16) / t;  	int32 cdy = (dy << 16) / t; -	int32 i = t;  	_gridPathCount = 0; -	while (i) { +	for (int32 i = t; i > 0; i--) {  		_tempPathX[i] = bx >> 16;  		_tempPathY[i] = by >> 16;  		_gridPathCount++;  		bx += cdx;  		by += cdy; -		i--;  	}  	_tempPathX[0] = x2; @@ -271,17 +279,16 @@ bool PathFinding::lineIsWalkable(int32 x, int32 y, int32 x2, int32 y2) {  	int32 cdx = (dx << 16) / t;  	int32 cdy = (dy << 16) / t; -	int32 i = t; -	while (i) { +	for (int32 i = t; i > 0; i--) {  		if (!isWalkable(bx >> 16, by >> 16))  			return false;  		bx += cdx;  		by += cdy; -		i--;  	}  	return true;  } -int32 PathFinding::findPath(int32 x, int32 y, int32 destx, int32 desty) { + +bool PathFinding::findPath(int32 x, int32 y, int32 destx, int32 desty) {  	debugC(1, kDebugPath, "findPath(%d, %d, %d, %d)", x, y, destx, desty);  	if (x == destx && y == desty) { @@ -373,7 +380,7 @@ int32 PathFinding::findPath(int32 x, int32 y, int32 destx, int32 desty) {  	numpath++;  	int32 bestscore = sq[destx + desty * _width]; -	while (1) { +	while (true) {  		int32 bestX = -1;  		int32 bestY = -1; @@ -403,7 +410,7 @@ int32 PathFinding::findPath(int32 x, int32 y, int32 destx, int32 desty) {  			free(retPathX);  			free(retPathY); -			return 0; +			return false;  		}  		retPathX[numpath] = bestX; @@ -432,18 +439,6 @@ int32 PathFinding::findPath(int32 x, int32 y, int32 destx, int32 desty) {  	return false;  } -void PathFinding::init(Picture *mask) { -	debugC(1, kDebugPath, "init(mask)"); - -	_width = mask->getWidth(); -	_height = mask->getHeight(); -	_currentMask = mask; -	_heap->unload(); -	_heap->init(500); -	delete[] _gridTemp; -	_gridTemp = new int32[_width*_height]; -} -  void PathFinding::resetBlockingRects() {  	_numBlockingRects = 0;  } @@ -460,7 +455,7 @@ void PathFinding::addBlockingRect(int32 x1, int32 y1, int32 x2, int32 y2) {  }  void PathFinding::addBlockingEllipse(int32 x1, int32 y1, int32 w, int32 h) { -	debugC(1, kDebugPath, "addBlockingRect(%d, %d, %d, %d)", x1, y1, w, h); +	debugC(1, kDebugPath, "addBlockingEllipse(%d, %d, %d, %d)", x1, y1, w, h);  	_blockingRects[_numBlockingRects][0] = x1;  	_blockingRects[_numBlockingRects][1] = y1; diff --git a/engines/toon/path.h b/engines/toon/path.h index df2b2e94be..7709dfe2a0 100644 --- a/engines/toon/path.h +++ b/engines/toon/path.h @@ -57,13 +57,14 @@ public:  	PathFinding(ToonEngine *vm);  	~PathFinding(); -	int32 findPath(int32 x, int32 y, int32 destX, int32 destY); -	int32 findClosestWalkingPoint(int32 xx, int32 yy, int32 *fxx, int32 *fyy, int origX = -1, int origY = -1); +	void init(Picture *mask); + +	bool findPath(int32 x, int32 y, int32 destX, int32 destY); +	bool findClosestWalkingPoint(int32 xx, int32 yy, int32 *fxx, int32 *fyy, int origX = -1, int origY = -1);  	bool isWalkable(int32 x, int32 y);  	bool isLikelyWalkable(int32 x, int32 y);  	bool lineIsWalkable(int32 x, int32 y, int32 x2, int32 y2);  	bool walkLine(int32 x, int32 y, int32 x2, int32 y2); -	void init(Picture *mask);  	void resetBlockingRects();  	void addBlockingRect(int32 x1, int32 y1, int32 x2, int32 y2);  | 
