/* 
   Project: coevolutionary GP moto driving
   Dana Vrajitoru
   agent_breaks.h
   
   An agent class controling the breaks. 
  
**/

#ifndef AGENT_BREAKS_H
#define AGENT_BREAKS_H

#include "agent.h"

class Agent_breaks : public Agent {
 protected:
  // Constants used to update the speed.
  float thr_speed, thr_speed_low, c_lat_speed, c_fr_speed, c_slope,
    c_dec_speed, c_dec_lat, c_dec_fr;
  float speed_pow_lat, speed_pow_fr;

  // Status constants to be taken from the manager.
  float fbreak, bbreak;
  
  // Set the number of configuration values. To be defined by the
  // derivate classes.
  virtual void set_nr_config();

 public:
  // constructor
  Agent_breaks();
  // output the values
  virtual void output_data();
  // Agent-specific set data to be defined in the derivate class.
  virtual void set_data(float values[]);
  // This will be specific to each agent.
  virtual void update_action();
};

#endif
