/* $Id$
This file is part of R²C²
-Copyright © 2010 Mikkosoft Productions, Mikko Rasa
+Copyright © 2010-2011 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
#define LIBR2C2_AICONTROL_H_
#include <sigc++/trackable.h>
-#include "controller.h"
+#include "trainai.h"
namespace R2C2 {
class Train;
-class AIControl: public Controller, public sigc::trackable
+class AIControl: public TrainAI, public sigc::trackable
{
private:
enum State
FOLLOW
};
- Train &train;
- Controller *next_ctrl;
- Control target_speed;
+ float target_speed;
+ bool reverse;
+ bool pending_reverse;
State state;
+ bool need_update;
public:
- AIControl(Train &, Controller *);
- virtual ~AIControl();
+ AIControl(Train &);
- virtual const char *enumerate_controls(unsigned) const;
- virtual void set_control(const std::string &, float);
- virtual const Control &get_control(const std::string &) const;
+ void set_target_speed(float);
+ float get_target_speed() const { return target_speed; }
+ void set_reverse(bool);
+ bool get_reverse() const { return reverse; }
- virtual float get_speed() const;
- virtual bool get_reverse() const;
- virtual float get_braking_distance() const;
-
- virtual void tick(const Msp::Time::TimeDelta &);
+ virtual void message(const Message &);
+ virtual void tick(const Msp::Time::TimeStamp &, const Msp::Time::TimeDelta &);
private:
- void control_changed(const Control &);
void arrived();
};