src/rail_cmd.cpp
branchNewGRF_ports
changeset 10994 cd9968b6f96b
parent 10991 d8811e327d12
equal deleted inserted replaced
10991:d8811e327d12 10994:cd9968b6f96b
  1380 				ret = DoCommand(tile, 0, track, flags, CMD_REMOVE_SINGLE_RAIL);
  1380 				ret = DoCommand(tile, 0, track, flags, CMD_REMOVE_SINGLE_RAIL);
  1381 				if (CmdFailed(ret)) return CMD_ERROR;
  1381 				if (CmdFailed(ret)) return CMD_ERROR;
  1382 				cost.AddCost(ret);
  1382 				cost.AddCost(ret);
  1383 			}
  1383 			}
  1384 
  1384 
  1385 			if (water_ground) {
  1385 			/* when bankrupting, don't make water dirty, there could be a ship on lower halftile */
       
  1386 			if (water_ground && !(flags & DC_BANKRUPT)) {
       
  1387 				if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
       
  1388 
  1386 				/* The track was removed, and left a coast tile. Now also clear the water. */
  1389 				/* The track was removed, and left a coast tile. Now also clear the water. */
  1387 				if (flags & DC_EXEC) DoClearSquare(tile);
  1390 				if (flags & DC_EXEC) DoClearSquare(tile);
  1388 				cost.AddCost(_price.clear_water);
  1391 				cost.AddCost(_price.clear_water);
  1389 			}
  1392 			}
  1390 
  1393 
  2110 }
  2113 }
  2111 
  2114 
  2112 
  2115 
  2113 static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
  2116 static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
  2114 {
  2117 {
       
  2118 	/* Case of half tile slope with water. */
       
  2119 	if (mode == TRANSPORT_WATER && IsPlainRailTile(tile) && GetRailGroundType(tile) == RAIL_GROUND_WATER) {
       
  2120 		TrackBits tb = GetTrackBits(tile);
       
  2121 		switch (tb) {
       
  2122 			default: NOT_REACHED();
       
  2123 			case TRACK_BIT_UPPER: tb = TRACK_BIT_LOWER; break;
       
  2124 			case TRACK_BIT_LOWER: tb = TRACK_BIT_UPPER; break;
       
  2125 			case TRACK_BIT_LEFT:  tb = TRACK_BIT_RIGHT; break;
       
  2126 			case TRACK_BIT_RIGHT: tb = TRACK_BIT_LEFT;  break;
       
  2127 		}
       
  2128 		return CombineTrackStatus(TrackBitsToTrackdirBits(tb), TRACKDIR_BIT_NONE);
       
  2129 	}
       
  2130 
  2115 	if (mode != TRANSPORT_RAIL) return 0;
  2131 	if (mode != TRANSPORT_RAIL) return 0;
  2116 
  2132 
  2117 	TrackBits trackbits = TRACK_BIT_NONE;
  2133 	TrackBits trackbits = TRACK_BIT_NONE;
  2118 	TrackdirBits red_signals = TRACKDIR_BIT_NONE;
  2134 	TrackdirBits red_signals = TRACKDIR_BIT_NONE;
  2119 
  2135