changeset 3097:da8c4f235fe9 draft

(svn r3686) Dispel some strange magic regarding level crossings and foundations: if a level crossing is on a sloped tile, it has to be on a level foundation
author tron <tron@openttd.org>
date Tue, 28 Feb 2006 11:49:12 +0000
parents 2a738dcf3af0
children f746e2c344d7
files road_cmd.c
diffstat 1 files changed, 9 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/road_cmd.c
+++ b/road_cmd.c
@@ -764,9 +764,6 @@
 		return i + 15;
 	}
 
-	// rail crossing
-	if ((bits & 0x10) && _valid_tileh_slopes_road[2][tileh]) return tileh;
-
 	return 0;
 }
 
@@ -848,8 +845,7 @@
 			break;
 
 		case 1: { // level crossing
-			int f = GetRoadFoundation(ti->tileh, ti->map5 & 0xF);
-			if (f) DrawFoundation(ti, f);
+			if (ti->tileh != 0) DrawFoundation(ti, ti->tileh);
 
 			image = GetRailTypeInfo(GB(_m[ti->tile].m4, 0, 4))->base_sprites.crossing;
 
@@ -931,9 +927,8 @@
 	// check if it's a foundation
 	if (ti->tileh != 0) {
 		switch (GB(ti->map5, 4, 4)) {
-			case 0: // normal road
-			case 1: { // level crossing
-				uint f = GetRoadFoundation(ti->tileh, ti->map5 & 0x3F);
+			case 0: { // normal road
+				uint f = GetRoadFoundation(ti->tileh, GB(ti->map5, 0, 4));
 				if (f != 0) {
 					if (f < 15) {
 						// leveled foundation
@@ -945,6 +940,8 @@
 				break;
 			}
 
+			// if these are on a slope then there's a level foundation
+			case 1: // level crossing
 			case 2: // depot
 				return z + 8;
 
@@ -960,9 +957,8 @@
 	// check if it's a foundation
 	if (ti->tileh != 0) {
 		switch (GB(ti->map5, 4, 4)) {
-			case 0: // normal road
-			case 1: { // level crossing
-				uint f = GetRoadFoundation(ti->tileh, ti->map5 & 0x3F);
+			case 0: { // normal road
+				uint f = GetRoadFoundation(ti->tileh, GB(ti->map5, 0, 4));
 				if (f != 0) {
 					if (f < 15) {
 						// leveled foundation
@@ -974,6 +970,8 @@
 				break;
 			}
 
+			// if these are on a slope then there's a level foundation
+			case 1: // level crossing
 			case 2: // depot
 				return 0;