
// PredatorBoid.java
// Andrew Davison, April 2005, ad@fivedots.coe.psu.ac.th
// Sirinart Sakarin, March 2003, s4210315@calvin.coe.psu.ac.th

/* Predátor má žluté tělo a může být hladový.
     Je-li poblíž kořisti (a je-li hladový), sežere ji.
     Je-li hladový, zamíří ke kořisti.
*/

import javax.media.j3d.*;
import javax.vecmath.*;


public class PredatorBoid extends Boid
{
  private final static Color3f yellow = new Color3f(1.0f, 1.0f,0.6f);
  private final static int HUNGER_TRIGGER = 3;   // kdy začne hlad ovliňovat chování

  private int hungerCount;


  public PredatorBoid(Obstacles obs, PredatorBehavior beh)
  {
	super(yellow, 1.0f, obs, beh);   // žlutý agent, normální max. rychlost
	hungerCount = 0;
  }// konec metody: PredatorBoid()
  

  public void animateBoid()
  // rozšiří tuto metodu třídy Boid o pojídací chování
  {
	hungerCount++;
	if (hungerCount > HUNGER_TRIGGER)   // čas do svačiny
      hungerCount -= ((PredatorBehavior)beh).eatClosePrey(boidmos);
	super.animateBoid();
  } // konec metody: animateBoid()



  protected void doVelocityRules()
  /* Rozšíří tuto metodu třídy Boid o pravidlo pro
     pohyb směrem ke kořisti, je-li predátor hladový. 
  */
  { if (hungerCount > HUNGER_TRIGGER) {  // čas do svačiny
      Vector3f v = ((PredatorBehavior)beh).findClosePrey(boidmos);
      velChanges.add(v);
	}
    super.doVelocityRules();
  }  // konec metody: doVelocityRules()

} // konec třídy: PredatorBoid