def display(cls, lane, surface, two_side=True, use_line_color=False, color=None) -> None:
        """
        Display a lane on a surface.

        :param lane: the lane to be displayed
        :param surface: the pygame surface
        :param two_side: draw two sides of the lane, or only one side
        """
        side = 2 if two_side else 1
        stripes_count = int(2 * (surface.get_height() + surface.get_width()) / (cls.STRIPE_SPACING * surface.scaling))
        s_origin, _ = lane.local_coordinates(surface.origin)
        s0 = (int(s_origin) // cls.STRIPE_SPACING - stripes_count // 2) * cls.STRIPE_SPACING
        for side in range(side):
            if use_line_color:
                if lane.line_colors[side] == PGLineColor.YELLOW and lane.line_types[side] == PGLineType.CONTINUOUS:
                    color = (255, 175, 35)
                elif lane.line_types[side] == PGLineType.SIDE:
                    color = (95, 95, 95)
                else:
                    color = (175, 175, 175)
            if lane.line_types[side] == PGLineType.BROKEN:
                cls.striped_line(lane, surface, stripes_count, s0, side, color=color)
            # circular side or continuous, it is same now
            elif lane.line_types[side] == PGLineType.CONTINUOUS and isinstance(lane, CircularLane):
                cls.continuous_curve(lane, surface, stripes_count, s0, side, color=color)
            elif (lane.line_types[side] == PGLineType.SIDE
                  or lane.line_types[side] == PGLineType.GUARDRAIL) and isinstance(lane, CircularLane):
                cls.continuous_curve(lane, surface, stripes_count, s0, side, color=color)
            # the line of continuous straight and side straight is same now
            elif (lane.line_types[side] == PGLineType.CONTINUOUS) and isinstance(lane, StraightLane):
                cls.continuous_line(lane, surface, stripes_count, s0, side, color=color)
            elif (lane.line_types[side] == PGLineType.SIDE
                  or lane.line_types[side] == PGLineType.GUARDRAIL) and isinstance(lane, StraightLane):
                cls.continuous_line(lane, surface, stripes_count, s0, side, color=color)
            # special scenario
            elif lane.line_types[side] == PGLineType.NONE:
                continue
            else:
                raise ValueError("I don't know how to draw this line type: {}".format(lane.line_types[side]))

        Display a lane on a surface.

        :param lane: the lane to be displayed
        :param surface: the pygame surface
        :param two_side: draw two sides of the lane, or only one side
        
metadrive/obs/top_down_obs_impl.py