document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. public class Simulation {
  2.     Cell[][] map;
  3.     int width;
  4.     int height;
  5.    
  6.     public void createCells() throws IOException{
  7.         int[][] grid = ImageHandler.loadImage("heightmap.png");
  8.         width = grid.length;
  9.         height = grid[0].length;
  10.        
  11.         map = new Cell[width][height];
  12.        
  13.         System.out.println("Creating cells...");
  14.         for(int x = 0; x < width; ++x){
  15.             for(int y = 0; y < height; ++y){
  16.                 map[x][y] = new Cell();
  17.                 map[x][y].setElevation(grid[x][y]);
  18.                 if(grid[x][y] == 0){
  19.                     map[x][y].setAbsorptionPotential(0);
  20.                     map[x][y].addRain(1000);
  21.                 }
  22.                 int numNeighbours;
  23.                 if((x == 0 && y == 0) || (x == 0 && y == height-1) || (x == width - 1 && y == height - 1) || (x == width - 1 && y == 0)){
  24.                     numNeighbours = 3;
  25.                 }
  26.                 else if((x == 0) || (x == width - 1) || (y == 0) || (y == height - 1)){
  27.                     numNeighbours = 5;
  28.                 }
  29.                 else {
  30.                     numNeighbours = 8;
  31.                 }
  32.                 map[x][y].setNumNeighbours(numNeighbours);
  33.             }
  34.         }
  35.        
  36.         System.out.println("Connecting cells...");
  37.         for(int x = 0; x < width; ++x){
  38.             for(int y = 0; y < height; ++y){
  39.                 if(x == 0 && y == 0){
  40.                     map[x][y].connectNeighbour(map[x][y+1], 0);
  41.                     map[x][y].connectNeighbour(map[x+1][y], 1);
  42.                     map[x][y].connectNeighbour(map[x+1][y+1], 2);
  43.                 }
  44.                 else if(x == 0 && y == height - 1){
  45.                     map[x][y].connectNeighbour(map[x][y-1], 0);
  46.                     map[x][y].connectNeighbour(map[x+1][y], 1);
  47.                     map[x][y].connectNeighbour(map[x+1][y-1], 2);
  48.                 }
  49.                 else if(x == width - 1 && y == 0){
  50.                     map[x][y].connectNeighbour(map[x-1][y], 0);
  51.                     map[x][y].connectNeighbour(map[x][y+1], 1);
  52.                     map[x][y].connectNeighbour(map[x-1][y+1], 2);
  53.                 }
  54.                 else if(x == width - 1 && y == height - 1){
  55.                     map[x][y].connectNeighbour(map[x-1][y], 0);
  56.                     map[x][y].connectNeighbour(map[x][y-1], 1);
  57.                     map[x][y].connectNeighbour(map[x-1][y-1], 2);
  58.                 }
  59.                 else if(x == 0){
  60.                     map[x][y].connectNeighbour(map[x][y-1], 0);
  61.                     map[x][y].connectNeighbour(map[x+1][y-1], 1);
  62.                     map[x][y].connectNeighbour(map[x+1][y], 2);
  63.                     map[x][y].connectNeighbour(map[x+1][y+1], 3);
  64.                     map[x][y].connectNeighbour(map[x][y+1], 4);
  65.                 }
  66.                 else if(x == width - 1){
  67.                     map[x][y].connectNeighbour(map[x][y-1], 0);
  68.                     map[x][y].connectNeighbour(map[x+-1][y-1], 1);
  69.                     map[x][y].connectNeighbour(map[x-1][y], 2);
  70.                     map[x][y].connectNeighbour(map[x-1][y+1], 3);
  71.                     map[x][y].connectNeighbour(map[x][y+1], 4);
  72.                 }
  73.                 else if(y == 0){
  74.                     map[x][y].connectNeighbour(map[x-1][y], 0);
  75.                     map[x][y].connectNeighbour(map[x-1][y+1], 1);
  76.                     map[x][y].connectNeighbour(map[x][y+1], 2);
  77.                     map[x][y].connectNeighbour(map[x+1][y+1], 3);
  78.                     map[x][y].connectNeighbour(map[x+1][y], 4);
  79.                 }
  80.                 else if(y == height - 1){
  81.                     map[x][y].connectNeighbour(map[x-1][y], 0);
  82.                     map[x][y].connectNeighbour(map[x-1][y-1], 1);
  83.                     map[x][y].connectNeighbour(map[x][y-1], 2);
  84.                     map[x][y].connectNeighbour(map[x+1][y-1], 3);
  85.                     map[x][y].connectNeighbour(map[x+1][y], 4);
  86.                 }
  87.                 else {
  88.                     map[x][y].connectNeighbour(map[x-1][y], 0);
  89.                     map[x][y].connectNeighbour(map[x-1][y-1], 1);
  90.                     map[x][y].connectNeighbour(map[x][y-1], 2);
  91.                     map[x][y].connectNeighbour(map[x+1][y-1], 3);
  92.                     map[x][y].connectNeighbour(map[x+1][y], 4);
  93.                     map[x][y].connectNeighbour(map[x+1][y+1], 5);
  94.                     map[x][y].connectNeighbour(map[x][y+1], 6);
  95.                     map[x][y].connectNeighbour(map[x-1][y+1], 7);
  96.                 }
  97.             }
  98.         }
  99.     }
  100. }
');