X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnetwork%2Ftrain.cpp;h=52eca849b30421c79591f6296ef6a266f125b6a0;hb=3b37ee041af581e47646c2487e7e302c55bd8cd7;hp=eb9563786aa982bd08eb299ae7e2252555cbc909;hpb=d15ac13f2e170f155b4bbd124df48400c339b644;p=r2c2.git diff --git a/source/network/train.cpp b/source/network/train.cpp index eb95637..52eca84 100644 --- a/source/network/train.cpp +++ b/source/network/train.cpp @@ -7,9 +7,11 @@ namespace R2C2 { NetTrain::NetTrain(Client &c, const TrainInfoPacket &pkt): client(c), - loco_type(client.get_catalogue().get_vehicle(pkt.loco_type)), + loco_type(client.get_catalogue().get(pkt.loco_type)), address(pkt.address), name(pkt.name), + target_speed(0), + reverse(false), functions(0) { } @@ -31,6 +33,24 @@ float NetTrain::get_control(const string &c) const return i!=controls.end() ? i->second : 0; } +void NetTrain::set_target_speed(float s) +{ + TrainAIControlPacket pkt; + pkt.address = address; + pkt.target_speed = s; + pkt.reverse = reverse; + client.send(pkt); +} + +void NetTrain::set_reverse(bool r) +{ + TrainAIControlPacket pkt; + pkt.address = address; + pkt.target_speed = target_speed; + pkt.reverse = r; + client.send(pkt); +} + void NetTrain::set_function(unsigned i, bool set) { TrainFunctionPacket pkt; @@ -69,6 +89,21 @@ void NetTrain::process_packet(const TrainFunctionPacket &pkt) signal_function_changed.emit(i, (functions>>i)&1); } +void NetTrain::process_packet(const TrainAIControlPacket &pkt) +{ + if(pkt.target_speed!=target_speed) + { + target_speed = pkt.target_speed; + signal_target_speed_changed.emit(target_speed); + } + + if(pkt.reverse!=reverse) + { + reverse = pkt.reverse; + signal_reverse_changed.emit(reverse); + } +} + void NetTrain::process_packet(const TrainStatusPacket &pkt) { status = pkt.status;