]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/trainview.cpp
Add a forward toggle to TrainView
[r2c2.git] / source / engineer / trainview.cpp
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();