- const TrackType &ttype = track->get_type();
- string info = format("%d %s", ttype.get_article_number(), ttype.get_description());
- if(mode!=CATALOGUE && abs(track->get_slope())>1e-4)
- info += format(" (slope %.1f%%)", abs(track->get_slope()/ttype.get_total_length()*100));
- if(track->get_turnout_id())
- info += format(" (turnout %d)", track->get_turnout_id());
- else if(track->get_sensor_id())
- info += format(" (sensor %d)", track->get_sensor_id());
-
+ const ObjectType &otype = obj->get_type();
+ string info = format("%d %s", otype.get_article_number(), otype.get_name());
+ if(Track *track = dynamic_cast<Track *>(obj))
+ {
+ if(mode!=CATALOGUE && abs(track->get_tilt()).radians()>1e-4)
+ info += format(" (slope %.1f%%)", abs(tan(track->get_tilt())*100));
+ if(track->get_type().is_turnout())
+ info += format(" (turnout %d)", track->get_turnout_address());
+ else if(track->get_sensor_address())
+ info += format(" (sensor %d)", track->get_sensor_address());
+ }
+ if(mode==CATALOGUE)
+ {
+ const string &descr = otype.get_description();
+ if(!descr.empty())
+ {
+ info += '\n';
+ info += otype.get_description();
+ }
+ }