]> git.tdb.fi Git - r2c2.git/blobdiff - source/network/client.cpp
Don't crash if a train has no router
[r2c2.git] / source / network / client.cpp
index 33e7feac274ea9628d6688ed9758fd81a3305dc4..15d0b407691fbb3e526f365aa877b55d105aa053 100644 (file)
@@ -1,10 +1,4 @@
-/* $Id$
-
-This file is part of R²C²
-Copyright © 2009  Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
+#include <msp/core/maputils.h>
 #include "client.h"
 
 using namespace std;
@@ -12,7 +6,7 @@ using namespace Msp;
 
 namespace R2C2 {
 
-Client::Client(const Catalogue &c):
+Client::Client(Catalogue &c):
        catalogue(c),
        socket(0),
        comm(0),
@@ -63,10 +57,7 @@ void Client::set_halt(bool h)
 
 NetTrain &Client::get_train(unsigned addr) const
 {
-       map<unsigned, NetTrain *>::const_iterator i = trains.find(addr);
-       if(i==trains.end())
-               throw KeyError("Unknown train");
-       return *i->second;
+       return *get_item(trains, addr);
 }
 
 void Client::receive(const DriverStatePacket &pkt)
@@ -105,6 +96,11 @@ void Client::receive(const TrainFunctionPacket &pkt)
        get_train(pkt.address).process_packet(pkt);
 }
 
+void Client::receive(const TrainAIControlPacket &pkt)
+{
+       get_train(pkt.address).process_packet(pkt);
+}
+
 void Client::receive(const TrainStatusPacket &pkt)
 {
        get_train(pkt.address).process_packet(pkt);