1 #ifndef R2C2_NET_TRAIN_H_
2 #define R2C2_NET_TRAIN_H_
4 #include <sigc++/signal.h>
5 #include "libr2c2/vehicletype.h"
15 sigc::signal<void, const std::string &> signal_name_changed;
16 sigc::signal<void, const std::string &, float> signal_control_changed;
17 sigc::signal<void, unsigned, bool> signal_function_changed;
18 sigc::signal<void, float> signal_target_speed_changed;
19 sigc::signal<void, bool> signal_reverse_changed;
20 sigc::signal<void, const std::string &> signal_route_changed;
21 sigc::signal<void, const std::string &> signal_status_changed;
25 const VehicleType &loco_type;
28 std::map<std::string, float> controls;
36 NetTrain(Client &, const TrainInfoPacket &);
38 Client &get_client() const { return client; }
39 const VehicleType &get_loco_type() const { return loco_type; }
40 unsigned get_address() const { return address; }
41 const std::string &get_name() const { return name; }
42 void set_control(const std::string &, float);
43 float get_control(const std::string &) const;
44 void set_target_speed(float);
45 void set_reverse(bool);
46 float get_target_speed() const { return target_speed; }
47 bool get_reverse() const { return reverse; }
48 void set_function(unsigned, bool);
49 bool get_function(unsigned i) const { return (functions>>i)&1; }
50 void set_route(const std::string &);
51 const std::string &get_route() const { return route; }
52 const std::string &get_status() const { return status; }
54 void process_packet(const TrainControlPacket &);
55 void process_packet(const TrainFunctionPacket &);
56 void process_packet(const TrainAIControlPacket &);
57 void process_packet(const TrainRoutePacket &);
58 void process_packet(const TrainStatusPacket &);