]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/aicontrol.h
Add missing initializer
[r2c2.git] / source / libr2c2 / aicontrol.h
index 0d84218875848f69b111cb668ab25348f5150118..a9f9de14c92c0bff35ab3dfb1357486eb524d075 100644 (file)
@@ -1,45 +1,44 @@
-/* $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 <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:
-       Train &train;
-       Controller *next_ctrl;
-       Control target_speed;
-       bool blocked;
-       bool approach;
+       enum State
+       {
+               NORMAL,
+               APPROACH,
+               BLOCKED,
+               FOLLOW
+       };
+
+       float target_speed;
+       bool reverse;
+       bool pending_reverse;
+       State state;
+       bool need_update;
 
 public:
-       AIControl(Train &, Controller *);
-       virtual ~AIControl();
-
-       virtual void set_control(const std::string &, float);
-       virtual const Control &get_control(const std::string &) const;
+       AIControl(Train &);
 
-       virtual float get_speed() const;
-       virtual bool get_reverse() const;
-       virtual float get_braking_distance() 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 void message(const Message &);
        virtual void tick(const Msp::Time::TimeDelta &);
+       virtual bool has_intent_to_move() const;
 
 private:
-       void control_changed(const Control &);
-       void arrived();
+       void event(TrainAI &, const Message &);
 };
 
 } // namespace R2C2