X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftimetable.h;h=17a418ebab2b7c4da358a7a0e5fd78623b67936a;hb=3dd660ffad729fbd6e75e6401f5c7f27b9013faf;hp=da16d3c0d488c23cffc7d3879fcf2c367e611141;hpb=a34347c6642d89a44960aeddc372891744cded15;p=r2c2.git diff --git a/source/libr2c2/timetable.h b/source/libr2c2/timetable.h index da16d3c..17a418e 100644 --- a/source/libr2c2/timetable.h +++ b/source/libr2c2/timetable.h @@ -2,12 +2,12 @@ #define LIBR2C2_TIMETABLE_H_ #include +#include "trackchain.h" #include "trainai.h" namespace R2C2 { class Layout; -class TrackChain; class Timetable: public TrainAI { @@ -49,6 +49,7 @@ public: RowType type; TrackChain *target; + TrackChain::Direction direction; Msp::Time::TimeDelta time; Row(); @@ -56,6 +57,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; @@ -64,6 +74,7 @@ private: std::list rows; std::list::iterator current_row; bool update_pending; + bool sync_to_clock; public: Timetable(Train &); @@ -81,7 +92,8 @@ public: void save(std::list &) const; private: - void check_update(std::list::const_iterator); + void check_update(const 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();