/* $Id$
This file is part of R²C²
-Copyright © 2009 Mikkosoft Productions, Mikko Rasa
+Copyright © 2009-2011 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
catalogue(c),
socket(0),
comm(0),
- event_disp(0)
+ event_disp(0),
+ power(false),
+ halt(false)
{ }
Client::~Client()
comm = new Net::Communicator(*socket, proto, *this);
}
+void Client::set_power(bool p)
+{
+ DriverStatePacket pkt;
+ pkt.power = p;
+ pkt.halt = halt;
+ send(pkt);
+}
+
+void Client::set_halt(bool h)
+{
+ DriverStatePacket pkt;
+ pkt.power = power;
+ pkt.halt = h;
+ send(pkt);
+}
+
NetTrain &Client::get_train(unsigned addr) const
{
map<unsigned, NetTrain *>::const_iterator i = trains.find(addr);
return *i->second;
}
+void Client::receive(const DriverStatePacket &pkt)
+{
+ if(pkt.power!=power)
+ {
+ power = pkt.power;
+ signal_power_changed.emit(power);
+ }
+ if(pkt.halt!=halt)
+ {
+ halt = pkt.halt;
+ signal_halt_changed.emit(halt);
+ }
+}
+
+void Client::receive(const EmergencyPacket &pkt)
+{
+ signal_emergency.emit(pkt.message);
+}
+
void Client::receive(const TrainInfoPacket &pkt)
{
NetTrain *train = new NetTrain(*this, pkt);