package rescuecore2.standard.view; import java.awt.Graphics2D; import java.awt.Color; import java.awt.Stroke; import java.awt.BasicStroke; import java.awt.Polygon; import rescuecore2.standard.entities.Road; import rescuecore2.standard.entities.Edge; import rescuecore2.misc.gui.ScreenTransform; /** A view layer that renders roads. */ public class RoadLayer extends AreaLayer<Road> { private static final Color ROAD_EDGE_COLOUR = Color.GRAY.darker(); private static final Color ROAD_SHAPE_COLOUR = new Color(185, 185, 185); private static final Stroke WALL_STROKE = new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); private static final Stroke ENTRANCE_STROKE = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); /** Construct a road rendering layer. */ public RoadLayer() { super(Road.class); } @Override public String getName() { return "Roads"; } @Override protected void paintShape(Road r, Polygon shape, Graphics2D g) { g.setColor(ROAD_SHAPE_COLOUR); g.fill(shape); } @Override protected void paintEdge(Edge e, Graphics2D g, ScreenTransform t) { g.setColor(ROAD_EDGE_COLOUR); g.setStroke(e.isPassable() ? ENTRANCE_STROKE : WALL_STROKE); g.drawLine(t.xToScreen(e.getStartX()), t.yToScreen(e.getStartY()), t.xToScreen(e.getEndX()), t.yToScreen(e.getEndY())); } }