loco_type(client.get_catalogue().get_locomotive(pkt.loco_type)),
address(pkt.address),
name(pkt.name),
- speed(0),
- reverse(0),
functions(0)
{ }
-void NetTrain::set_speed(unsigned s)
+void NetTrain::set_control(const string &c, float v)
{
- if(s==speed)
+ if(v==controls[c])
return;
- TrainSpeedPacket pkt;
+ TrainControlPacket pkt;
pkt.address = address;
- pkt.speed = s;
- pkt.reverse = reverse;
- client.send(pkt);
-}
-
-void NetTrain::set_reverse(bool r)
-{
- if(r==reverse)
- return;
-
- TrainSpeedPacket pkt;
- pkt.address = address;
- pkt.speed = speed;
- pkt.reverse = r;
+ pkt.control = c;
+ pkt.value = v;
client.send(pkt);
}
client.send(pkt);
}
-void NetTrain::process_packet(const TrainSpeedPacket &pkt)
+void NetTrain::process_packet(const TrainControlPacket &pkt)
{
- if(pkt.speed!=speed)
- {
- speed = pkt.speed;
- signal_speed_changed.emit(speed);
- }
- if(pkt.reverse!=reverse)
- {
- reverse = pkt.reverse;
- signal_reverse_changed.emit(reverse);
- }
+ controls[pkt.control] = pkt.value;
+ signal_control_changed.emit(pkt.control, pkt.value);
}
void NetTrain::process_packet(const TrainFunctionPacket &pkt)