package net.jacobandreas.cellular;

public class Hotplate implements CARule {

    int freeze, grow, killbelow, killabove;

    public Hotplate(int freeze, int grow, int killbelow, int killabove) {
        this.freeze = freeze;
        this.grow = grow;
        this.killbelow = killbelow;
        this.killabove = killabove;
    }

    public int evaluate(CAModel m, int r, int c) {

        int neighbors = 0;
        int myval = m.getValue(r, c);

        neighbors += m.getValue(r-1, c-1);
        neighbors += m.getValue(r, c-1);
        neighbors += m.getValue(r+1, c-1);
        neighbors += m.getValue(r-1, c);
        neighbors += m.getValue(r+1, c);
        neighbors += m.getValue(r-1, c+1);
        neighbors += m.getValue(r, c+1);
        neighbors += m.getValue(r+1, c+1);

        if(myval >= freeze) return CARule.IGNORE;
        if(neighbors > killabove) return CARule.KILL;
        if(neighbors > grow) return CARule.GROW;
        if(neighbors < killbelow) return CARule.KILL;
        else return CARule.IGNORE;

        /*
         * >= 1000 freeze
         * > 90 kill
         * > 6 grow
         * < 10 kill
         */

        /*
         * >= 255 freeze
         * > 300 kill
         * > 10 grow
         * < 7 kill
         */
        
    }
}

