package gameoflife;

public class GameOfLifeRules {
	public static void checkRules(Cell[][] cells, int x, int y) {
		int aliveNeighbors = 0;
        for(int i = y-1; i <= y + 1; i++){
            if(i >= 0 && i < cells[x].length){
                if(x-1 >= 0){
                    if(cells[x-1][i].getStatus() == Cell.Status.ALIVE){
                        aliveNeighbors++;
                    }
                }
                if(i != y){
                    if(cells[x][i].getStatus() == Cell.Status.ALIVE){
                        aliveNeighbors++;
                    }
                }
                if(x+1 < cells.length){
                    if(cells[x+1][i].getStatus() == Cell.Status.ALIVE){
                        aliveNeighbors++;
                    }
                }
            }
        }
        if((aliveNeighbors == 2 || aliveNeighbors == 3) && cells[x][y].getStatus() == Cell.Status.ALIVE){
            cells[x][y].makeAliveNextCycle(true);
        }
        else if((aliveNeighbors < 2 || aliveNeighbors > 3) && cells[x][y].getStatus() == Cell.Status.ALIVE){
            cells[x][y].makeDeadNextCycle(true);
        }
        if(aliveNeighbors == 3 && cells[x][y].getStatus() == Cell.Status.DEAD){
            cells[x][y].makeAliveNextCycle(true);
        }
	}
}
