8 NetTrain::NetTrain(Client &c, const TrainInfoPacket &pkt):
10 loco_type(client.get_catalogue().get<VehicleType>(pkt.loco_type)),
18 void NetTrain::set_control(const string &c, float v)
23 TrainControlPacket pkt;
24 pkt.address = address;
30 float NetTrain::get_control(const string &c) const
32 map<string, float>::const_iterator i = controls.find(c);
33 return i!=controls.end() ? i->second : 0;
36 void NetTrain::set_target_speed(float s)
38 TrainAIControlPacket pkt;
39 pkt.address = address;
41 pkt.reverse = reverse;
45 void NetTrain::set_reverse(bool r)
47 TrainAIControlPacket pkt;
48 pkt.address = address;
49 pkt.target_speed = target_speed;
54 void NetTrain::set_function(unsigned i, bool set)
56 TrainFunctionPacket pkt;
57 pkt.address = address;
58 pkt.functions = functions;
60 pkt.functions |= 1<<i;
62 pkt.functions &= ~(1<<i);
66 void NetTrain::set_route(const string &r)
72 pkt.address = address;
77 void NetTrain::process_packet(const TrainControlPacket &pkt)
79 controls[pkt.control] = pkt.value;
80 signal_control_changed.emit(pkt.control, pkt.value);
83 void NetTrain::process_packet(const TrainFunctionPacket &pkt)
85 unsigned old_funcs = functions;
86 functions = pkt.functions;
87 for(unsigned i=0; i<9; ++i)
88 if(((functions^old_funcs)>>i)&1)
89 signal_function_changed.emit(i, (functions>>i)&1);
92 void NetTrain::process_packet(const TrainAIControlPacket &pkt)
94 if(pkt.target_speed!=target_speed)
96 target_speed = pkt.target_speed;
97 signal_target_speed_changed.emit(target_speed);
100 if(pkt.reverse!=reverse)
102 reverse = pkt.reverse;
103 signal_reverse_changed.emit(reverse);
107 void NetTrain::process_packet(const TrainStatusPacket &pkt)
110 signal_status_changed.emit(status);
113 void NetTrain::process_packet(const TrainRoutePacket &pkt)
116 signal_route_changed.emit(route);