package rescuecore2.standard.view; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.Color; import java.awt.Stroke; import java.awt.BasicStroke; import rescuecore2.worldmodel.EntityID; import rescuecore2.misc.gui.ScreenTransform; import rescuecore2.standard.entities.Area; import rescuecore2.standard.entities.Edge; /** A view layer that renders area neighbours. */ public class AreaNeighboursLayer extends StandardEntityViewLayer<Area> { private static final Color NEIGHBOUR_COLOUR = Color.blue; private static final Stroke NEIGHBOUR_STROKE = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); /** Construct an area neighbours view layer. */ public AreaNeighboursLayer() { super(Area.class); } @Override public String getName() { return "Neighbours"; } @Override public Shape render(Area area, Graphics2D g, ScreenTransform t) { g.setColor(NEIGHBOUR_COLOUR); g.setStroke(NEIGHBOUR_STROKE); for (Edge edge : area.getEdges()) { EntityID neighbour = edge.getNeighbour(); if (neighbour != null) { Area a = (Area)world.getEntity(neighbour); if (a != null) { g.drawLine(t.xToScreen(area.getX()), t.yToScreen(area.getY()), t.xToScreen(a.getX()), t.yToScreen(a.getY())); } } } return null; } }