Example #1
0
 private Board GenerateBoardFromGrid(Grid currentState)
 {
     Board b = new Board(false);
     List<Tuple<char, int>> HaveAlreadyMoved = new List<Tuple<char, int>>();
     //0 Special Pawn
     foreach (Pawn pawn in currentState.PawnLocations)
     {
         if(pawn.Coord.x < 1 || pawn.Coord.y < 1){
             //Special Pawn!
             if (pawn.Name == EnPassantSpecialName)
             {
                 b.EnPassant = new Tuple<char, int>(Board.Columns_Inv[Math.Abs(pawn.Coord.x)], Math.Abs(pawn.Coord.y));
             }
             else
             {
                 if (pawn.Name == HaveAlreadyMovedSpecialName)
                 {
                     var hasAlreadyMoved = new Tuple<char, int>(Board.Columns_Inv[Math.Abs(pawn.Coord.x)], Math.Abs(pawn.Coord.y));
                     HaveAlreadyMoved.Add(hasAlreadyMoved);
                 }
                 else
                 {
                     throw new Exception(String.Format("Piece Unknown ({0}) or badly located: [{1},{2}]", pawn.Name, pawn.Coord.x, pawn.Coord.y));
                 }
             }
         }
         else{
             if (pawn.Coord.x < 9 && pawn.Coord.y < 9)
             {
                 var p = GetPiece(pawn);
                 b.PutPiece(p, Board.Columns_Inv[pawn.Coord.x], pawn.Coord.y);
             }
         }
     }
     foreach (var hasAlreadyMoved in HaveAlreadyMoved)
     {
         var piece = b.GetPiece(hasAlreadyMoved.Item1, hasAlreadyMoved.Item2);
         ((IHasAlreadyMoved)piece).HasAlreadyMoved = true;
     }
     return b;
 }