current_row = depart;
for(list<Row>::const_iterator i=depart; i!=rows.end(); ++i)
{
- if(i->type==ARRIVE)
- {
- train.ai_message(Message("set-destination", i->target));
- break;
- }
- else if(i->type==DEPART)
+ if(i->type==DEPART)
{
Time::TimeDelta dt = i->time-clock.get_current_time();
while(dt<Time::zero)
dt += Time::day;
train.ai_message(Message("set-departure-delay", dt/clock.get_rate()));
}
- else if(i->type==THROUGH)
- train.ai_message(Message("add-waypoint", i->target));
+ else
+ {
+ train.ai_message(Message("add-waypoint", TrainRouter::Waypoint(*i->target, i->direction)));
+ if(i->type==ARRIVE)
+ break;
+ }
}
list<Row>::iterator next_depart = find_trip(arrive, 0);
Timetable::Row::Row():
type(ARRIVE),
- target(0)
+ target(0),
+ direction(TrackChain::UNSPECIFIED)
{ }
void Timetable::Row::save(list<DataFile::Statement> &st) const
st.push_back((DataFile::Statement("type"), type));
st.push_back((DataFile::Statement("time"), time.raw()));
st.push_back(target->save_reference());
+ if(direction)
+ st.push_back((DataFile::Statement("direction"), direction));
}
layout(l)
{
add("block", &Loader::block);
+ add("direction", &Row::direction);
add("time", &Loader::time);
add("type", &Row::type);
add("zone", &Loader::zone);