diff options
| -rw-r--r-- | engines/prince/prince.cpp | 16 | ||||
| -rw-r--r-- | engines/prince/prince.h | 1 | 
2 files changed, 12 insertions, 5 deletions
| diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp index bbcb9bbb60..05db000869 100644 --- a/engines/prince/prince.cpp +++ b/engines/prince/prince.cpp @@ -93,7 +93,7 @@ PrinceEngine::PrinceEngine(OSystem *syst, const PrinceGameDescription *gameDesc)  	_fpFlag(0), _fpX(0), _fpY(0), _fpX1(0), _fpY1(0), _coordsBufEnd(nullptr), _coordsBuf(nullptr), _coords(nullptr),  	_traceLineLen(0), _traceLineFlag(0), _rembBitmapTemp(nullptr), _rembBitmap(nullptr), _rembMask(0), _rembX(0), _rembY(0),  	_checkBitmapTemp(nullptr), _checkBitmap(nullptr), _checkMask(0), _checkX(0), _checkY(0), _traceLineFirstPointFlag(false), -	_coordsBuf2(nullptr), _coords2(nullptr), _coordsBuf3(nullptr), _coords3(nullptr), +	_tracePointFirstPointFlag(false), _coordsBuf2(nullptr), _coords2(nullptr), _coordsBuf3(nullptr), _coords3(nullptr),  	_tracePointFlag(0), _shanLen1(0), _directionTable(nullptr) {  	// Debug/console setup @@ -3878,11 +3878,16 @@ void PrinceEngine::specialPlotInside2(int x, int y) {  void PrinceEngine::plotTracePoint(int x, int y, int color, void *data) {  	PrinceEngine *tracePoint = (PrinceEngine *)data;  	if (!tracePoint->_tracePointFlag) { -		if (tracePoint->getPixelAddr(tracePoint->_roomPathBitmap, x, y)) { -			tracePoint->specialPlotInside2(x, y); -			tracePoint->_tracePointFlag = 0; +		if (!tracePoint->_tracePointFirstPointFlag) { +			if (tracePoint->getPixelAddr(tracePoint->_roomPathBitmap, x, y)) { +				tracePoint->specialPlotInside2(x, y); +				tracePoint->_tracePointFlag = 0; +			} else { +				tracePoint->_tracePointFlag = -1; +			}  		} else { -			tracePoint->_tracePointFlag = -1; +			tracePoint->_tracePointFirstPointFlag = false; +			tracePoint->_tracePointFlag = 0;  		}  	}  } @@ -3922,6 +3927,7 @@ void PrinceEngine::approxPath() {  				}  				//no_store_first  				_tracePointFlag = 0; +				_tracePointFirstPointFlag = true;  				Graphics::drawLine(x1, y1, x2, y2, 0, &this->plotTracePoint, this);  				if (!_tracePointFlag) {  					tempCoords = tempCoordsBuf - 4; diff --git a/engines/prince/prince.h b/engines/prince/prince.h index 1f9244c58c..7715737b1e 100644 --- a/engines/prince/prince.h +++ b/engines/prince/prince.h @@ -462,6 +462,7 @@ public:  	int _traceLineFlag; // return value of plotTraceLine  	bool _traceLineFirstPointFlag; // if plotTraceLine after first point  	int _tracePointFlag; // return value of plotTracePoint +	bool _tracePointFirstPointFlag; // if plotTracePoint after first point  	byte *_directionTable;  	int _shanLen1; | 
