+#include <msp/time/utils.h>
#include "control.h"
#include "layout.h"
#include "trafficmanager.h"
#include "turnout.h"
using namespace std;
+using namespace Msp;
namespace Marklin {
delete *i;
}
-Block *TrafficManager::get_block_by_track(const Track *t) const
+Block &TrafficManager::get_block_by_track(const Track &t) const
{
for(BlockSeq::const_iterator i=blocks.begin(); i!=blocks.end(); ++i)
{
const set<Track *> &tracks=(*i)->get_tracks();
- if(tracks.count(const_cast<Track *>(t)))
- return *i;
+ if(tracks.count(const_cast<Track *>(&t)))
+ return **i;
}
- return 0;
+ throw InvalidParameterValue("Unknown track");
}
void TrafficManager::add_train(Train *t)
trains.push_back(t);
}
+void TrafficManager::tick()
+{
+ Time::TimeStamp t=Time::now();
+
+ for(list<Train *>::iterator i=trains.begin(); i!=trains.end(); ++i)
+ (*i)->tick(t);
+}
+
void TrafficManager::turnout_route_changed(unsigned, Turnout *)
{
}