package model;

import java.util.Iterator;

public class CellGridIterator implements Iterator<Cell> {


    private ArrayGrid grid;
    private int PrvColmn;
    private int PrvRow;
    private int ActColmn;
    private int ActRow;


    CellGridIterator(ArrayGrid grid){

        PrvRow=ActRow=0;
        PrvColmn=ActColmn=0;
        this.grid=grid;



    }






    public
    boolean hasNext ( ) {
        return hasNextRow ()|| hasNextCol ();
    }

    public
    Boolean hasNextCol (){


        return !(grid.getNumberOfColumns ()==ActColmn);

    }

    public Boolean hasNextRow(){


        return !(grid.getNumberOfRows ()-1==this.ActRow);

    }


    public   Cell next ( ) {

        if ( hasNextCol ( ) ) {
            PrvColmn=ActColmn;
            ActColmn++;
            return grid.getCell (PrvRow,PrvColmn );


        }
        if ( hasNextRow ( ) ) {
            ActRow++;

            ActColmn=1;
            PrvColmn=0;


            PrvRow=ActRow;

            return grid.getCell ( PrvRow , PrvColmn );


        }
        return null;

    }



}