public ChessMove Move(ref ChessGameField.Cell[,] field, Point posFrom, Point posTo, ChessMove lastMove) { if (CanMove(field, posFrom, posTo, lastMove)) { ChessMove move = new ChessMove(); if (field[posTo.X, posTo.Y].figure != null) { move.AddAction(new ChessMove.RemoveAction(posTo)); } move.AddAction(new ChessMove.MoveAction(posFrom, posTo)); return move; } return null; }