- TrainRoutePacket pkt;
- pkt.address = train.get_address();
- if(route)
- pkt.route = route->get_name();
- send(pkt);
-}
-
-void Server::train_status_changed(const Train &train, const string &status)
-{
- TrainStatusPacket pkt;
- pkt.address = train.get_address();
- pkt.status = status;
- send(pkt);
+ if(ev.type=="route-changed")
+ {
+ TrainRoutePacket pkt;
+ pkt.address = train.get_address();
+ if(const Route *route = ev.value.value<const Route *>())
+ pkt.route = route->get_name();
+ send(pkt);
+ }
+ else if(ev.type=="status-changed")
+ {
+ TrainStatusPacket pkt;
+ pkt.address = train.get_address();
+ pkt.status = ev.value.value<std::string>();
+ send(pkt);
+ }
+ else if(ev.type=="target-speed-changed" || ev.type=="reverse-changed")
+ {
+ AIControl *control = dynamic_cast<AIControl *>(&ai);
+ if(control)
+ {
+ TrainAIControlPacket pkt;
+ pkt.address = train.get_address();
+ pkt.target_speed = control->get_target_speed();
+ pkt.reverse = control->get_reverse();
+ send(pkt);
+ }
+ }