changeset 4838:42913f93d44f draft

(svn r6764) -Fix (r6758): Wrong height difference calculated because invalid drag-type was passed to the function. Thanks peter1138.
author Darkvater <Darkvater@openttd.org>
date Thu, 12 Oct 2006 22:11:18 +0000
parents 2ec80750617b
children 91c33bc3c7a1
files viewport.c
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/viewport.c
+++ b/viewport.c
@@ -2294,7 +2294,12 @@
 				TileIndex t0 = TileVirtXY(sx, sy);
 				TileIndex t1 = TileVirtXY(x, y);
 				uint distance = DistanceManhattan(t0, t1) + 1;
-				int heightdiff = CalcHeightdiff((_thd.next_drawstyle & HT_DRAG_MASK) | style, 0, t0, t1);
+				/* With current code passing a HT_LINE style to calculate the height
+				 * difference is enough. However if/when a point-tool is created
+				 * with this method, function should be called with new_style (below)
+				 * instead of HT_LINE | style case HT_POINT is handled specially
+				 * new_style := (_thd.next_drawstyle & HT_RECT) ? HT_LINE | style : _thd.next_drawstyle; */
+				int heightdiff = CalcHeightdiff(HT_LINE | style, 0, t0, t1);
 				uint params[2];
 
 				params[0] = distance;
@@ -2317,12 +2322,12 @@
 				TileIndex t1 = TileVirtXY(x, y);
 				uint dx = abs(TileX(t0) - TileX(t1)) + 1;
 				uint dy = abs(TileY(t0) - TileY(t1)) + 1;
-				HighLightStyle style = _thd.next_drawstyle;
 				int heightdiff;
 				uint params[3];
 
 				/* If dragging an area (eg dynamite tool) and it is actually a single
 				 * row/column, change the type to 'line' to get proper calculation for height */
+				style = _thd.next_drawstyle;
 				if (style & HT_RECT) {
 					if (dx == 1) {
 						style = HT_LINE | HT_DIR_Y;