]> git.tdb.fi Git - r2c2.git/blob - source/engineer/controlpanel.h
Better visualization for placing a train
[r2c2.git] / source / engineer / controlpanel.h
1 #ifndef CONTROLPANEL_H_
2 #define CONTROLPANEL_H_
3
4 #include <map>
5 #include <msp/gltk/panel.h>
6 #include <msp/gltk/toggle.h>
7 #include "libr2c2/blockiter.h"
8 #include "libr2c2/train.h"
9
10 class Engineer;
11 class PlacementGhost;
12
13 class ControlPanel: public Msp::GLtk::Panel
14 {
15 private:
16         Engineer &engineer;
17         R2C2::Train &train;
18         bool updating;
19         std::map<unsigned, Msp::GLtk::Toggle *> tgl_funcs;
20         sigc::connection pick_conn;
21
22         bool placing;
23         std::vector<PlacementGhost *> ghosts;
24         R2C2::BlockIter place_location;
25
26 public:
27         ControlPanel(Engineer &, R2C2::Train &);
28
29 private:
30         void ui_function_toggled(bool, unsigned);
31         void train_function_changed(unsigned, bool);
32         void place_clicked();
33         void place_pick_done(R2C2::Track *, unsigned);
34         void take_clicked();
35         void view_clicked();
36
37         virtual void button_press(int, int, unsigned);
38         virtual void pointer_motion(int, int);
39 };
40
41 #endif