/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package terraario;

public abstract class LiikkuvaElio extends Elio {
    protected static final int ALKUKOKO = 8;

    private int ika;
    protected Elio kohde;
    protected Terraario terraario;

    public LiikkuvaElio(Terraario terraario) {
        this.terraario = terraario;
        this.ika = 0;
        this.koko = ALKUKOKO;
    }

    public void ela() {
        ika++;

        if (ika > 500) {
            this.koko--;
            if(this.koko <= 1) {
                setElossa(false);
                return;
            }
        }

        valitseKohde();
        liiku();
        syo();
    }

    protected abstract void valitseKohde();

    protected void liiku() {
        if (kohde == null) {
            return;
        }

        if (kohde.x < this.x) {
            this.x--;
        } else if (kohde.x > this.x) {
            this.x++;
        }

        if (kohde.y < this.y) {
            this.y--;
        } else if (kohde.y > this.y) {
            this.y++;
        }
    }

    private void syo() {
        if (kohde == null || this.distance(kohde) > 5) {
            return;
        }

        if (kohde.getElossa()) {
            kohde.koko--;
            this.koko++;
            
            if(kohde.koko <= 1) {
                kohde.setElossa(false);
            }
        }
    }
    
    public boolean onLihaisa() {
        return true;
    }

    public boolean onVihertava() {
        return false;
    }
}
