public CollisionType EvaluateNextMove(MoveType move, IFigure figure) { var collision = CollisionType.None; IFigure movedFigure; switch (move) { case MoveType.RowAdded: collision = ResolveRowAdded(); break; case MoveType.MoveRight: movedFigure = figure.MoveRight(); collision = ResolveMoveRight(movedFigure); break; case MoveType.MoveLeft: movedFigure = figure.MoveLeft(); collision = ResolveMoveLeft(movedFigure); break; case MoveType.MoveDown: movedFigure = figure.MoveDown(); collision = ResolveMoveDown(movedFigure); break; case MoveType.TossDown: // for now do nothing break; case MoveType.Rotate: var rotatedFigure = figure.RotateClockwise(); collision = ResolveRotate(rotatedFigure); break; default: throw new NotImplementedException("unknown movement type: " + move); } return collision; }