Example #1
0
        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);
            }
        }