Package net.javlov.example.landmarks

Source Code of net.javlov.example.landmarks.LandmarkGridWorldView

package net.javlov.example.landmarks;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.util.ArrayList;
import java.util.List;

import net.javlov.world.Body;
import net.javlov.world.grid.GridCell;
import net.javlov.world.grid.IGridWorld;
import net.javlov.world.ui.GridWorldView;

public class LandmarkGridWorldView extends GridWorldView {

  List<Point> landmarkBorder;
 
  public LandmarkGridWorldView(IGridWorld w, int dist) {
    super(w);
   
    landmarkBorder = new ArrayList<Point>(4*dist);
    int y = 0;
    for ( int x=-dist; x<=0; x++) {
      landmarkBorder.add( new Point(x,y));
      if ( x != 0 )
        landmarkBorder.add( new Point(-x,y));

      if ( y != 0 )
        landmarkBorder.add( new Point(x,-y));

      if ( y != 0 && x != 0 )
        landmarkBorder.add( new Point(-x,-y));

      y -= 1;

    }
  }
 
  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.transform(getScaleTransform());
    GridCell[][] cells = ((IGridWorld) model).getGrid().getCells();
    g2d.setColor(Color.lightGray);
    for(int h = 0; h < cells[0].length; h++) {
        for(int w = 0; w < cells.length; w++) {
          g2d.draw(cells[w][h]);
        }
    }
   
    Color[] colors = new Color[4];
    colors[0] = Color.red;
    colors[1] = Color.green;
    colors[2] = Color.blue;
    colors[3] = Color.orange;
    int c = 0;
    int lx, ly;
    for(int h = 0; h < cells[0].length; h++) {
        for(int w = 0; w < cells.length; w++) {

          List<Body> occupiers = cells[w][h].getOccupiers();
          for ( int i = 0; i < occupiers.size(); i++ ) {
            if (occupiers.get(i).getType() == Body.UNDEFINED) {
              g2d.setColor(colors[c++]);
          for ( Point p : landmarkBorder ) {
            lx = p.x+w;
            ly = p.y+h;
            if ( lx < cells.length && lx >= 0 && ly < cells[0].length && ly >= 0 )
                  g2d.draw(cells[lx][ly]);
          }
            }
          }
         
        }
    }
   
   

    g2d.setTransform(getOriginalTransform());
  }

}
TOP

Related Classes of net.javlov.example.landmarks.LandmarkGridWorldView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.