class LocoType;
class Route;
+class Vehicle;
class Train: public sigc::trackable
{
Block *block;
unsigned entry;
- BlockRef(Block *s, unsigned e): block(s), entry(e) { }
+ BlockRef(Block *, unsigned);
+ BlockRef next() const;
};
struct RealSpeed
const LocoType &loco_type;
unsigned address;
std::string name;
+ std::vector<Vehicle *> vehicles;
std::list<BlockRef> cur_blocks;
std::list<BlockRef> rsv_blocks;
Block *pending_block;
Msp::Time::TimeStamp stop_timeout;
unsigned functions;
const Route *route;
+ const Route *next_route;
bool end_of_route;
std::string status;
bool pure_speed;
std::vector<RealSpeed> real_speed;
- Track *cur_track;
- unsigned cur_track_ep;
- float offset;
- Point pos;
-
public:
Train(Layout &, const LocoType &, unsigned);
~Train();
void set_name(const std::string &);
const std::string &get_name() const { return name; }
+ Vehicle &get_vehicle(unsigned);
+ const Vehicle &get_vehicle(unsigned) const;
+
void set_speed(unsigned);
void set_reverse(bool);
void set_function(unsigned, bool);
int get_entry_to_block(Block &) const;
const std::string &get_status() const { return status; }
- const Point &get_position() const { return pos; }
void tick(const Msp::Time::TimeStamp &, const Msp::Time::TimeDelta &);