]> git.tdb.fi Git - r2c2.git/commitdiff
Add a forward toggle to TrainView
authorMikko Rasa <tdb@tdb.fi>
Sat, 30 Oct 2010 19:50:33 +0000 (19:50 +0000)
committerMikko Rasa <tdb@tdb.fi>
Sat, 30 Oct 2010 19:50:33 +0000 (19:50 +0000)
source/engineer/trainview.cpp
source/engineer/trainview.h

index b27136c59a7e9d6887b0e278f5ac83445e4b8935..af2243c92fd2a5e41c1669d38a255e3f2a514f29 100644 (file)
@@ -22,6 +22,7 @@ TrainView::TrainView(Engineer &e, const Train &t):
        engineer(e),
        train(t),
        mode(SIDE),
+       forward(true),
        pipeline(280, 280, false),
        stale(false)
 {
@@ -63,6 +64,11 @@ TrainView::TrainView(Engineer &e, const Train &t):
        btn->set_geometry(GLtk::Geometry(82, 10, 36, 25));
        btn->signal_clicked.connect(sigc::bind(sigc::mem_fun(this, &TrainView::set_mode), HEAD));
 
+       add(*(tgl_forward = new GLtk::Toggle(res, "Fwd")));
+       tgl_forward->set_geometry(GLtk::Geometry(118, 8, 36, 27));
+       tgl_forward->set_value(true);
+       tgl_forward->signal_toggled.connect(sigc::mem_fun(this, &TrainView::set_forward));
+
        add(*(btn = new GLtk::Button(res, "Close")));
        btn->set_geometry(GLtk::Geometry(geom.w-46, 10, 36, 25));
        btn->signal_clicked.connect(sigc::mem_fun(this, &TrainView::close_clicked));
@@ -80,11 +86,18 @@ void TrainView::set_mode(Mode m)
        mode = m;
 }
 
+void TrainView::set_forward(bool f)
+{
+       forward = f;
+}
+
 void TrainView::prepare()
 {
        const Vehicle &veh = train.get_vehicle(0);
        const Point &pos = veh.get_position();
        float angle = veh.get_direction();
+       if(!forward)
+               angle += M_PI;
        float c = cos(angle);
        float s = sin(angle);
        float l = veh.get_type().get_length();
index 16a1ef978ac46480099894b5521fdd139c1e7e20..a452a71912cca03e0bde0a946301e12d489cac1d 100644 (file)
@@ -12,6 +12,7 @@ Distributed under the GPL
 #include <msp/gl/framebuffer.h>
 #include <msp/gl/texture2d.h>
 #include <msp/gltk/panel.h>
+#include <msp/gltk/toggle.h>
 #include "libmarklin/train.h"
 
 class Engineer;
@@ -29,7 +30,9 @@ public:
 private:
        Engineer &engineer;
        const Marklin::Train &train;
+       Msp::GLtk::Toggle *tgl_forward;
        Mode mode;
+       bool forward;
        Msp::GL::Framebuffer fbo;
        Msp::GL::Texture2D tex;
        Msp::GL::Renderbuffer depth;
@@ -42,6 +45,7 @@ public:
        ~TrainView();
 
        void set_mode(Mode);
+       void set_forward(bool);
        void prepare();
 private:
        virtual void button_release(int, int, unsigned);