Beispiel #1
0
        internal void Move(TrainPosition position)
        {
            switch (this.Direction)
            {
            case TrackDirection.Horizontal: TrainMovement.MoveHorizontal(position); break;

            case TrackDirection.Vertical: TrainMovement.MoveVertical(position); break;

            case TrackDirection.LeftUp: TrainMovement.MoveLeftUp(position); break;

            case TrackDirection.RightUp: TrainMovement.MoveRightUp(position); break;

            case TrackDirection.RightDown: TrainMovement.MoveRightDown(position); break;

            case TrackDirection.LeftDown: TrainMovement.MoveLeftDown(position); break;

            case TrackDirection.RightUp_RightDown: MoveRightUpDown(position); break;

            case TrackDirection.RightDown_LeftDown: MoveLeftRightDown(position); break;

            case TrackDirection.LeftDown_LeftUp: MoveLeftUpDown(position); break;

            case TrackDirection.LeftUp_RightUp: MoveLeftRightUp(position); break;

            case TrackDirection.Cross: MoveCross(position); break;

            default: throw new InvalidOperationException("I don't know what that track is!");
            }
        }
Beispiel #2
0
 private static void MoveCross(TrainPosition position)
 {
     if ((position.Angle > 45.0f && position.Angle < 135.0f) ||
         (position.Angle > 225.0f && position.Angle < 315.0f))
     {
         TrainMovement.MoveVertical(position);
     }
     else
     {
         TrainMovement.MoveHorizontal(position);
     }
 }