]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/engineer.h
Add a common base class for dialogs that need to update dynamically
[r2c2.git] / source / engineer / engineer.h
index 7cf1cfcf475377bafc3a886e6cddee368997681f..333af73a871362d698903965b91319aad1d9f760 100644 (file)
 #include "3d/layout.h"
 #include "3d/overlay.h"
 #include "3d/path.h"
+#include "3d/trackchain.h"
 #include "3d/view.h"
 #include "network/server.h"
 #include "options.h"
 
 class MainWindow;
-class TrainView;
+class DynamicDialog;
 
 class Engineer: public Msp::RegisteredApplication<Engineer>
 {
@@ -47,9 +48,12 @@ private:
 
        MainWindow *main_wnd;
        std::list<R2C2::Train *> new_trains;
-       std::list<TrainView *> train_views;
+       std::list<DynamicDialog *> dyn_dialogs;
        Msp::Time::TimeStamp status_timeout;
        R2C2::Vector pointer;
+       std::list<R2C2::TrackChain3D *> emergencies;
+       Msp::Time::TimeStamp emergency_blink_timeout;
+       unsigned emergency_blink_state;
 
 public:
        Engineer(int argc, char **argv);
@@ -62,8 +66,8 @@ public:
        R2C2::Layout3D &get_layout_3d() { return layout_3d; }
        R2C2::View3D &get_main_view() { return main_view; }
        void set_status(const std::string &);
-       void add_train_view(TrainView &);
-       void remove_train_view(TrainView &);
+       void add_dynamic_dialog(DynamicDialog &);
+       void remove_dynamic_dialog(DynamicDialog &);
        int main();
        void quit() { exit(0); }
 private:
@@ -73,6 +77,7 @@ private:
        void view_all();
        R2C2::Object *pick_object(const R2C2::Vector &);
        void emergency(R2C2::Block *, const std::string &);
+       void halt_event(bool);
        void locomotive_detected(const R2C2::Driver::DetectedLocomotive &);
        void import_finished(int);
        void train_added(R2C2::Train &);