rail.c
changeset 3977 edb5b94e2094
parent 3933 a5f08e17f4a0
child 5573 afa6f92a71fd
equal deleted inserted replaced
3976:b52d2c1acc5c 3977:edb5b94e2094
   102 };
   102 };
   103 
   103 
   104 
   104 
   105 RailType GetTileRailType(TileIndex tile, Trackdir trackdir)
   105 RailType GetTileRailType(TileIndex tile, Trackdir trackdir)
   106 {
   106 {
       
   107 	DiagDirection exitdir = TrackdirToExitdir(trackdir);
   107 	switch (GetTileType(tile)) {
   108 	switch (GetTileType(tile)) {
   108 		case MP_RAILWAY:
   109 		case MP_RAILWAY:
   109 			return GetRailType(tile);
   110 			return GetRailType(tile);
   110 
   111 
   111 		case MP_STREET:
   112 		case MP_STREET:
   121 			if (IsTunnel(tile)) {
   122 			if (IsTunnel(tile)) {
   122 				if (GetTunnelTransportType(tile) == TRANSPORT_RAIL) {
   123 				if (GetTunnelTransportType(tile) == TRANSPORT_RAIL) {
   123 					return GetRailType(tile);
   124 					return GetRailType(tile);
   124 				}
   125 				}
   125 			} else {
   126 			} else {
   126 				if (GetBridgeTransportType(tile) == TRANSPORT_RAIL) {
   127 				if (IsBridgeRamp(tile)) {
   127 					return GetRailType(tile);
   128 					if (GetBridgeTransportType(tile) == TRANSPORT_RAIL) {
       
   129 						return GetRailType(tile);
       
   130 					}
       
   131 				} else {
       
   132 					if (GetBridgeAxis(tile) == DiagDirToAxis(exitdir)) {
       
   133 						if (GetBridgeTransportType(tile) == TRANSPORT_RAIL) {
       
   134 							return GetRailTypeOnBridge(tile);
       
   135 						}
       
   136 					} else {
       
   137 						if (IsTransportUnderBridge(tile) &&
       
   138 								GetTransportTypeUnderBridge(tile) == TRANSPORT_RAIL) {
       
   139 							return GetRailType(tile);
       
   140 						}
       
   141 					}
   128 				}
   142 				}
   129 			}
   143 			}
   130 			break;
   144 			break;
   131 
   145 
   132 		default:
   146 		default: