]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/engineer.h
Convert engineer to use mspgbase instead of SDL
[r2c2.git] / source / engineer / engineer.h
index ac5ce2c94d45d3b1fbef42162e075d71a5ccea9e..1575c0c31e381ad1d18a0a9727b2727746fff3db 100644 (file)
@@ -2,8 +2,10 @@
 #define ENGINEER_H_
 
 #include <msp/core/application.h>
+#include <msp/gbase/glcontext.h>
 #include <msp/gl/font.h>
 #include <msp/gltk/resources.h>
+#include <msp/gltk/root.h>
 #include "libmarklin/catalogue.h"
 #include "libmarklin/control.h"
 #include "libmarklin/trafficmanager.h"
@@ -12,6 +14,7 @@
 
 class MainPanel;
 class TrainPanel;
+class TrainProperties;
 
 class Engineer: public Msp::Application
 {
@@ -20,12 +23,16 @@ public:
        ~Engineer();
 
        Marklin::Control &get_control()    { return control; }
-       void     add_train(unsigned);
+       Marklin::Train   *add_train(unsigned);
        int      main();
        void     quit() { exit(0); }
 private:
        typedef std::list<TrainPanel *> TrainPanelSeq;
 
+       Msp::Graphics::Display   *dpy;
+       Msp::Graphics::Window    *wnd;
+       Msp::Graphics::GLContext *glc;
+       Msp::GLtk::Root          *root;
        unsigned           screen_w;
        unsigned           screen_h;
        bool               fullscreen;
@@ -38,25 +45,27 @@ private:
        Msp::GLtk::Resources ui_res;
        MainPanel          *main_panel;
        TrainPanelSeq      train_panels;
-       std::string        status_text;
        bool               no_lighting;
        Marklin::TrafficManager *trfc_mgr;
        Marklin::Train     *placing_train;
        Marklin::Block     *placing_block;
-       const Marklin::Block::Endpoint *placing_entry;
+       unsigned           placing_entry;
        bool               simulate;
+       TrainProperties    *train_prop;
+       bool               train_prop_stale;
 
        void tick();
-       void key_press(unsigned, unsigned);
-       void button_press(int, int, unsigned);
-       void button_release(int, int, unsigned);
+       void key_press(unsigned, unsigned, wchar_t);
+       void button_press(int, int, unsigned, unsigned);
+       void button_release(int, int, unsigned, unsigned);
        void pointer_motion(int, int);
        void view_all();
        void set_block_color(const Marklin::Block &, const Marklin::Color &);
-       void sensor_event(unsigned, bool);
+       void sensor_event(bool, Marklin::Sensor *);
        void block_reserved(const Marklin::Block &, const Marklin::Train *);
        void project_3d();
        Marklin::Track3D *pick_track(int, int);
+       void dismiss_train_prop();
 
        static Msp::Application::RegApp<Engineer> reg;
 };