#include "route.h"
#include "simplecontroller.h"
#include "speedquantizer.h"
-#include "timetable.h"
#include "trackcircuit.h"
#include "trackiter.h"
#include "tracktype.h"
active = a;
if(active)
{
- stop_timeout = Time::TimeStamp();
+ stop_timeout = Time::zero;
allocator.reserve_more();
}
else
- stop_timeout = Time::now()+2*Time::sec;
+ stop_timeout = 2*Time::sec;
}
void Train::set_function(unsigned func, bool state)
allocator.reserve_more();
}
-void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt)
+void Train::tick(const Time::TimeDelta &dt)
{
- if(!active && stop_timeout && t>=stop_timeout)
+ if(!active && stop_timeout)
{
- allocator.release_noncurrent();
- stop_timeout = Time::TimeStamp();
+ stop_timeout -= dt;
+ if(stop_timeout<=Time::zero)
+ {
+ allocator.release_noncurrent();
+ stop_timeout = Time::TimeDelta();
+ }
}
+ travel_time += dt;
+
Driver &driver = layout.get_driver();
for(list<TrainAI *>::iterator i=ais.begin(); i!=ais.end(); ++i)
- (*i)->tick(t, dt);
+ (*i)->tick(dt);
controller->tick(dt);
float speed = controller->get_speed();
bool moving = speed>0;
router->save(ss.sub);
st.push_back(ss);
}
- else if(Timetable *timetable = dynamic_cast<Timetable *>(*i))
- {
- DataFile::Statement ss("timetable");
- timetable->save(ss.sub);
- st.push_back(ss);
- }
}
}
if(travel_distance>0)
{
- float travel_time_secs = (Time::now()-last_entry_time)/Time::sec;
+ float travel_time_secs = travel_time/Time::sec;
if(travel_time_secs>=2)
speed_quantizer->learn(current_speed_step, travel_distance/travel_time_secs, travel_time_secs);
}
last_entry_block = allocator.iter_for(*block);
- last_entry_time = Time::now();
+ travel_time = Time::zero;
pure_speed = true;
accurate_position = true;
overshoot_dist = 0;
add("name", &Loader::name);
add("quantized_speed", &Loader::quantized_speed);
add("router", &Loader::router);
- add("timetable", &Loader::timetable);
add("vehicle", &Loader::vehicle);
}
load_sub(*rtr);
}
-void Train::Loader::timetable()
-{
- Timetable *ttbl = new Timetable(obj);
- load_sub(*ttbl);
-}
-
void Train::Loader::vehicle(ArticleNumber art_nr)
{
const VehicleType &vtype = obj.layout.get_catalogue().get_vehicle(art_nr);