X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftimetable.h;h=f3d62399e09b11a1e3d03843470229e957bb1e6b;hb=e8d2abb48b5236cc3455a035628292ae7908240e;hp=b67e5fb3c2baa4761b639dae6a55e3902795e014;hpb=9ad36841021cdd5c7f14d52e946d8ecdb602cf78;p=r2c2.git diff --git a/source/libr2c2/timetable.h b/source/libr2c2/timetable.h index b67e5fb..f3d6239 100644 --- a/source/libr2c2/timetable.h +++ b/source/libr2c2/timetable.h @@ -7,7 +7,7 @@ namespace R2C2 { class Layout; -class Zone; +class TrackChain; class Timetable: public TrainAI { @@ -27,7 +27,8 @@ public: enum RowType { ARRIVE = 1, - DEPART + DEPART, + THROUGH }; struct Row @@ -41,12 +42,13 @@ public: Loader(Row &, Layout &); private: - void zone(const std::string &, unsigned); + void block(unsigned); void time(Msp::Time::RawTime); + void zone(const std::string &, unsigned); }; RowType type; - Zone *zone; + TrackChain *target; Msp::Time::TimeDelta time; Row(); @@ -54,6 +56,15 @@ public: void save(std::list &) const; }; + struct RowTypeMatch + { + RowType type; + + RowTypeMatch(RowType t): type(t) { } + + bool operator()(const Row &r) const { return r.type==type; } + }; + sigc::signal signal_row_added; sigc::signal signal_row_modified; sigc::signal signal_row_removed; @@ -80,8 +91,10 @@ public: private: void check_update(std::list::const_iterator); + std::list::iterator find_trip(const std::list::iterator &, std::list::iterator *); void update_route(); void event(TrainAI &, const Message &); + void record_time(); }; } // namespace R2C2