public void SetTrackBlockInfo(TrackBlock block)
{
if (block == null) return;
m_displayedBlock = block;
m_displayedTrain = null;
Dictionary<string, string> info = new Dictionary<string, string>();
if (block.Authority != null)
{
info.Add("Authority:", block.Authority.Authority.ToString());
}
if (block.Authority != null)
{
info.Add("CTC Speed Limit:", block.Authority.SpeedLimitKPH.ToString() + " " + KPH);
}
info.Add("Static Speed Limit:", block.StaticSpeedLimit.ToString() + " " + KPH);
if (block.Status.TrainPresent)
{
info.Add("Train present:", "yes");
}
else
{
info.Add("Train present:", "no");
}
info.Add("Signal:", block.Status.SignalState.ToString());
info.Add("Start Elevation:", block.StartElevationMeters.ToString() + " " + METERS);
info.Add("End Elevation", block.EndElevationMeters.ToString() + " " + METERS);
info.Add("Grade", block.Grade.ToString() + "%");
info.Add("Length:", block.LengthMeters.ToString() + " " + METERS);
if (block.HasTunnel)
{
info.Add("Has Tunnel:", "yes");
}
else
{
info.Add("Has Tunnel:", "no");
}
if (block.RailroadCrossing)
{
info.Add("Has RR Crossing:", "yes");
}
else
{
info.Add("Has RR Crossing:", "no");
}
if (block.Transponder != null) //Could use block.HasTransponder property, but check for null to be on the safe side...
{
if (block.Transponder.DistanceToStation != 0)
{
info.Add("Transponder:", block.Transponder.StationName + "in " + block.Transponder.DistanceToStation.ToString() + " block(s)");
}
else
{
info.Add("Transponder:", "At " + block.Transponder.StationName);
}
}
else
{
info.Add("Transponder:", "none");
}
KeyValuePair<string, string> failure = GetBlockFailureStateString(block);
info.Add(failure.Key, failure.Value);
#if DEBUG
info.Add("Start Point", block.StartPoint.X + ", " + block.StartPoint.Y);
info.Add("End Point", block.EndPoint.X + ", " + block.EndPoint.Y);
#endif
SetInfo(block.Name, info);
}