changeset 17523:74d96543c115 draft

(svn r22286) -Fix: [NewGRF] the c and p parts of station vars 40, 41 and 49 were incorrect for large stations
author yexo <yexo@openttd.org>
date Fri, 01 Apr 2011 19:55:56 +0000
parents 19ce3a176e65
children 7d9e85f349b7
files src/newgrf_station.cpp
diffstat 1 files changed, 8 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_station.cpp
+++ b/src/newgrf_station.cpp
@@ -110,24 +110,21 @@
 		Swap(x, y);
 	}
 
-	/* Limit our sizes to 4 bits */
-	platforms = min(15, platforms);
-	length    = min(15, length);
-	x = min(15, x);
-	y = min(15, y);
 	if (centred) {
 		x -= platforms / 2;
 		y -= length / 2;
+		x = Clamp(x, -8, 7);
+		y = Clamp(x, -8, 7);
 		SB(retval,  0, 4, y & 0xF);
 		SB(retval,  4, 4, x & 0xF);
 	} else {
-		SB(retval,  0, 4, y);
-		SB(retval,  4, 4, length - y - 1);
-		SB(retval,  8, 4, x);
-		SB(retval, 12, 4, platforms - x - 1);
+		SB(retval,  0, 4, min(15, y));
+		SB(retval,  4, 4, min(15, length - y - 1));
+		SB(retval,  8, 4, min(15, x));
+		SB(retval, 12, 4, min(15, platforms - x - 1));
 	}
-	SB(retval, 16, 4, length);
-	SB(retval, 20, 4, platforms);
+	SB(retval, 16, 4, min(15, length));
+	SB(retval, 20, 4, min(15, platforms));
 	SB(retval, 24, 4, tile);
 
 	return retval;