]> git.tdb.fi Git - r2c2.git/blobdiff - source/network/train.cpp
Foundations of using physics simulation for trains
[r2c2.git] / source / network / train.cpp
index 025dcf52a75268b1dcdaa6b40c3cdc41d2a84d9b..5c4b457bad9bb3093edb962887d567798e6d8777 100644 (file)
@@ -17,32 +17,18 @@ NetTrain::NetTrain(Client &c, const TrainInfoPacket &pkt):
        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);
 }
 
@@ -69,18 +55,10 @@ void NetTrain::set_route(const string &r)
        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)