public void activate(Level level)
	{
		int width = level.getWidth();
		int height = level.getHeight();
		ArrayList<int[]> transporterPositions = new ArrayList<int[]>();
		int currentIndex = -1;

		// Find every transport tile and search for valid targets.
		for (int r = 0; r < height; r++) {
			for (int c = 0; c < width; c++) {
				Tile t = level.tileAt(r, c);
				if (t instanceof TransportTile) {
					if (t.isSameColour(getTargetColour())
							&& !(r == row && c == col))
						transporterPositions.add(new int[] { r, c });
					else if (r == row && c == col)
						currentIndex = transporterPositions.size();
				}
			}
		}
		int[] target = transporterPositions.get(currentIndex
				% transporterPositions.size());
		level.movePlayerTo(target[0], target[1]);
	}