X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Faicontrol.h;fp=source%2Flibr2c2%2Faicontrol.h;h=0d84218875848f69b111cb668ab25348f5150118;hb=1ff06c5bc46a677fa389ef86c6b26664368f1653;hp=0000000000000000000000000000000000000000;hpb=9b05c573a38639827697fe393d55b7c76f5bde45;p=r2c2.git diff --git a/source/libr2c2/aicontrol.h b/source/libr2c2/aicontrol.h new file mode 100644 index 0000000..0d84218 --- /dev/null +++ b/source/libr2c2/aicontrol.h @@ -0,0 +1,47 @@ +/* $Id$ + +This file is part of R²C² +Copyright © 2010 Mikkosoft Productions, Mikko Rasa +Distributed under the GPL +*/ + +#ifndef LIBR2C2_AICONTROL_H_ +#define LIBR2C2_AICONTROL_H_ + +#include +#include "controller.h" + +namespace R2C2 { + +class Train; + +class AIControl: public Controller, public sigc::trackable +{ +private: + Train &train; + Controller *next_ctrl; + Control target_speed; + bool blocked; + bool approach; + +public: + AIControl(Train &, Controller *); + virtual ~AIControl(); + + virtual void set_control(const std::string &, float); + virtual const Control &get_control(const std::string &) const; + + virtual float get_speed() const; + virtual bool get_reverse() const; + virtual float get_braking_distance() const; + + virtual void tick(const Msp::Time::TimeDelta &); + +private: + void control_changed(const Control &); + void arrived(); +}; + +} // namespace R2C2 + +#endif