private static void ParseBoardState(string boardState, BoardState result) { var ranks = boardState.Split('/'); var position = new Position(0, 7); for (var rank = 0; rank < 8; rank++) { for (var file = 0; file < ranks[rank].Length; file++) { var c = ranks[rank][file]; if (char.IsLetter(c)) { var piece = ConvertToPiece(c); var color = ConvertToColor(c); result.AddPiece(color, piece, (byte)position.ToFieldIndex()); position += new Position(1, 0); } else if (char.IsDigit(c)) { position += new Position(c - '0', 0); } } position = new Position(0, position.Y - 1); } }