class Timetable;
class Vehicle;
class VehicleType;
+class Zone;
class Train: public sigc::trackable
{
std::string name;
int priority;
const Train *yielding_to;
+ const Train *preceding_train;
std::vector<Vehicle *> vehicles;
BlockList blocks;
BlockList::iterator cur_blocks_end;
void set_priority(int);
void yield_to(const Train &);
int get_priority() const { return priority; }
+ const Train *get_preceding_train() const { return preceding_train; }
Controller &get_controller() const { return *controller; }
void add_vehicle(const VehicleType &);
bool set_route(const Route *);
bool go_to(Track &);
+ bool go_to(const Zone &);
bool divert(Track &);
const Route *get_route() const;
void place(Block &, unsigned);