package nbtool.gui.field; import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import javax.swing.*; public class Field extends JPanel { private static final long serialVersionUID = 1L; public static final Dimension fieldDimension = new Dimension((int)FieldConstants.FIELD_WIDTH, (int)FieldConstants.FIELD_HEIGHT); public static final int lineWidth = (int) FieldConstants.LINE_WIDTH; public static final int goalBoxWidth = 100; public static final Color fieldColor = new Color(0, 143, 56); public Field() { this.setMinimumSize(fieldDimension); this.setPreferredSize(fieldDimension); this.setMaximumSize(fieldDimension); } public void drawField(Graphics2D g2, boolean shouldFlip, boolean lineColorCoding) { //drawing the green field g2.setColor(fieldColor); g2.fillRect(0, 0, fieldDimension.width, fieldDimension.height); //greens g2.setStroke(new BasicStroke(lineWidth)); g2.setColor(Color.WHITE); //center circle g2.draw(new Ellipse2D.Float(FieldConstants.CENTER_FIELD_X-FieldConstants.CENTER_CIRCLE_RADIUS/2.0f, FieldConstants.CENTER_FIELD_Y-FieldConstants.CENTER_CIRCLE_RADIUS/2.0f, FieldConstants.CENTER_CIRCLE_RADIUS, FieldConstants.CENTER_CIRCLE_RADIUS)); //center line if(lineColorCoding) { g2.setColor(Color.gray); } else { g2.setColor(Color.white); } g2.draw(new Line2D.Float(FieldConstants.MIDFIELD_X, FieldConstants.GREEN_PAD_Y, FieldConstants.MIDFIELD_X, FieldConstants.FIELD_WHITE_TOP_SIDELINE_Y)); //our top goalbox if(shouldFlip) { g2.setColor(Color.orange); } else { g2.setColor(Color.magenta);} g2.draw(new Line2D.Float(FieldConstants.GREEN_PAD_X + FieldConstants.GOALBOX_DEPTH, FieldConstants.MY_GOALBOX_BOTTOM_Y, FieldConstants.GREEN_PAD_X + FieldConstants.GOALBOX_DEPTH, FieldConstants.MY_GOALBOX_TOP_Y)); //their top goalbox if(shouldFlip) { g2.setColor(Color.magenta); } else { g2.setColor(Color.orange);} g2.draw(new Line2D.Float(FieldConstants.FIELD_GREEN_WIDTH - FieldConstants.GREEN_PAD_X - FieldConstants.GOALBOX_DEPTH, FieldConstants.MY_GOALBOX_BOTTOM_Y, FieldConstants.FIELD_GREEN_WIDTH - FieldConstants.GREEN_PAD_X- FieldConstants.GOALBOX_DEPTH, FieldConstants.MY_GOALBOX_TOP_Y)); //our left goalbox if(shouldFlip) { g2.setColor(Color.white); } else { g2.setColor(Color.green);} g2.draw(new Line2D.Float(FieldConstants.GREEN_PAD_X, FieldConstants.MY_GOALBOX_BOTTOM_Y, FieldConstants.GREEN_PAD_X + FieldConstants.GOALBOX_DEPTH, FieldConstants.MY_GOALBOX_BOTTOM_Y)); //our right goalbox if(shouldFlip) { g2.setColor(Color.darkGray); } else { g2.setColor(Color.yellow);} g2.draw(new Line2D.Float(FieldConstants.GREEN_PAD_X, FieldConstants.MY_GOALBOX_TOP_Y, FieldConstants.GREEN_PAD_X + FieldConstants.GOALBOX_DEPTH, FieldConstants.MY_GOALBOX_TOP_Y)); //their left goalbox if(shouldFlip) { g2.setColor(Color.yellow); } else { g2.setColor(Color.darkGray);} g2.draw(new Line2D.Float(FieldConstants.FIELD_GREEN_WIDTH-FieldConstants.GREEN_PAD_X, FieldConstants.OPP_GOALBOX_BOTTOM_Y, FieldConstants.FIELD_GREEN_WIDTH-FieldConstants.GREEN_PAD_X-FieldConstants.GOALBOX_DEPTH, FieldConstants.OPP_GOALBOX_BOTTOM_Y)); //their right goalbox if(shouldFlip) { g2.setColor(Color.green); } else { g2.setColor(Color.white);} g2.draw(new Line2D.Float(FieldConstants.FIELD_GREEN_WIDTH-FieldConstants.GREEN_PAD_X, FieldConstants.OPP_GOALBOX_TOP_Y, FieldConstants.FIELD_GREEN_WIDTH-FieldConstants.GREEN_PAD_X-FieldConstants.GOALBOX_DEPTH, FieldConstants.OPP_GOALBOX_TOP_Y)); //our end line if(shouldFlip) { g2.setColor(Color.red); } else { g2.setColor(Color.blue);} if(!lineColorCoding) { g2.setColor(Color.white); } g2.draw(new Line2D.Float(FieldConstants.GREEN_PAD_X,FieldConstants.GREEN_PAD_Y, FieldConstants.GREEN_PAD_X, FieldConstants.FIELD_GREEN_HEIGHT-FieldConstants.GREEN_PAD_Y)); //their end line if(shouldFlip) { g2.setColor(Color.blue); } else { g2.setColor(Color.red);} if(!lineColorCoding) { g2.setColor(Color.white); } g2.draw(new Line2D.Float(FieldConstants.FIELD_WHITE_WIDTH+FieldConstants.GREEN_PAD_X, FieldConstants.GREEN_PAD_Y,FieldConstants.FIELD_WHITE_WIDTH+FieldConstants.GREEN_PAD_X, FieldConstants.FIELD_GREEN_HEIGHT-FieldConstants.GREEN_PAD_Y)); //left side line (top) if(shouldFlip) { g2.setColor(Color.cyan); } else { g2.setColor(Color.pink);} if(!lineColorCoding) { g2.setColor(Color.white); } g2.draw(new Line2D.Float(FieldConstants.GREEN_PAD_X,FieldConstants.GREEN_PAD_Y, FieldConstants.FIELD_GREEN_WIDTH-FieldConstants.GREEN_PAD_X,FieldConstants.GREEN_PAD_Y)); //right side line (bottom) if(shouldFlip) { g2.setColor(Color.pink); } else { g2.setColor(Color.cyan);} if(!lineColorCoding) { g2.setColor(Color.white); } g2.draw(new Line2D.Float(FieldConstants.GREEN_PAD_X, FieldConstants.FIELD_GREEN_HEIGHT-FieldConstants.GREEN_PAD_Y, FieldConstants.FIELD_GREEN_WIDTH-FieldConstants.GREEN_PAD_X, FieldConstants.FIELD_GREEN_HEIGHT-FieldConstants.GREEN_PAD_Y)); //left penalty mark g2.setColor(Color.white); g2.fillRect(FieldConstants.LEFT_PENALTY_MARK_X, fieldDimension.height/2, FieldConstants.PENALTY_MARK_WIDTH, FieldConstants.PENALTY_MARK_HEIGHT); g2.fillRect(FieldConstants.LEFT_PENALTY_MARK_X-FieldConstants.PENALTY_MARK_WIDTH, fieldDimension.height/2+FieldConstants.PENALTY_MARK_WIDTH, FieldConstants.PENALTY_MARK_HEIGHT, FieldConstants.PENALTY_MARK_WIDTH); //right penalty mark g2.fillRect(FieldConstants.RIGHT_PENALTY_MARK_X, fieldDimension.height/2, FieldConstants.PENALTY_MARK_WIDTH, FieldConstants.PENALTY_MARK_HEIGHT); g2.fillRect(FieldConstants.RIGHT_PENALTY_MARK_X-FieldConstants.PENALTY_MARK_WIDTH, fieldDimension.height/2+FieldConstants.PENALTY_MARK_WIDTH, FieldConstants.PENALTY_MARK_HEIGHT, FieldConstants.PENALTY_MARK_WIDTH); } }