-/* $Id$
-
-This file is part of R²C²
-Copyright © 2010-2011 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
#include "aicontrol.h"
#include "catalogue.h"
#include "layout.h"
state(NORMAL),
need_update(false)
{
- train.signal_arrived.connect(sigc::mem_fun(this, &AIControl::arrived));
+ train.signal_ai_event.connect(sigc::mem_fun(this, &AIControl::event));
}
void AIControl::set_target_speed(float s)
{
- if(s && !train.is_active())
- train.set_active(true);
-
target_speed = s;
need_update = true;
signal_event.emit(Message("target-speed-changed", target_speed));
set_reverse(!reverse);
}
-void AIControl::tick(const Time::TimeStamp &, const Time::TimeDelta &)
+void AIControl::tick(const Time::TimeDelta &)
{
float scale = train.get_layout().get_catalogue().get_scale();
float rsv_dist = train.get_reserved_distance();
speed_limit = 0;
else if(state==APPROACH)
speed_limit = approach_speed;
- else if(state==FOLLOW && train.get_preceding_train()->is_active())
+ else if(state==FOLLOW && train.get_preceding_train()->get_block_allocator().is_active())
speed_limit = train.get_preceding_train()->get_speed();
if(speed_limit>=0 && target_speed>speed_limit)
reverse = pending_reverse;
train.set_control("reverse", reverse);
}
+}
- if(!target_speed && !train.get_controller().get_speed() && train.is_active())
- train.set_active(false);
+bool AIControl::has_intent_to_move() const
+{
+ return target_speed;
}
-void AIControl::arrived()
+void AIControl::event(TrainAI &, const Message &ev)
{
- set_target_speed(0);
+ if(ev.type=="arrived")
+ set_target_speed(0);
}
} // namespace R2C2