private void UpdateState(object sender, EventArgs e) { train.Update(clock.Interval / 1000.0); TrainState ts = train.GetState(); brakeBox.Checked = train.GetBrake(); emergencyBrakeBox.Checked = train.GetEmergencyBrake(); brakeFailureBox.Checked = ts.BrakeFailure; switch (ts.Direction) { case CommonLib.Direction.East: directionTextBox.Text = "East"; break; case CommonLib.Direction.North: directionTextBox.Text = "North"; break; case CommonLib.Direction.Northeast: directionTextBox.Text = "Northeast"; break; case CommonLib.Direction.Northwest: directionTextBox.Text = "Northwest"; break; case CommonLib.Direction.South: directionTextBox.Text = "South"; break; case CommonLib.Direction.Southeast: directionTextBox.Text = "Southeast"; break; case CommonLib.Direction.Southwest: directionTextBox.Text = "Southwest"; break; case CommonLib.Direction.West: directionTextBox.Text = "West"; break; default: break; // Unreachable } progressTextBox.Text = String.Format("{0:F0}", (ts.BlockProgress / ts.CurrentBlock.LengthMeters) * 100); speedTextBox.Text = String.Format("{0:F3}", ts.Speed); accelerationTextBox.Text = String.Format("{0:F3}", train.GetAcceleration()); }