private Dictionary <string, List <int> > GetAllBlackPossibleMovesDict(bool isInitialized) { var results = new Dictionary <string, List <int> >(); foreach (var item in BlackDictionary) { var moves = new List <int>(); var pieceInfo = item.Value + item.Key; var input = pieceInfo.ToCharArray(); switch (item.Value) { case "p": _pawnUnit = new Pawn(UnitColor.Black, ProtectKingMoves.ProtectWhiteKingMoves, ProtectKingMoves.ProtectBlackKingMoves, ProtectKingMoves.PotentialBlackMoves); moves = _pawnUnit.GetValidMoves(input, isInitialized); break; case "q": _queenUnit = new Queen(UnitColor.Black, ProtectKingMoves.ProtectWhiteKingMoves, ProtectKingMoves.ProtectBlackKingMoves, ProtectKingMoves.CoverKingMoves, ProtectKingMoves.PotentialBlackMoves); moves = _queenUnit.GetValidMoves(input, isInitialized); break; case "r": _rookUnit = new Rook(UnitColor.Black, ProtectKingMoves.ProtectWhiteKingMoves, ProtectKingMoves.ProtectBlackKingMoves, ProtectKingMoves.CoverKingMoves, ProtectKingMoves.PotentialBlackMoves); moves = _rookUnit.GetValidMoves(input, isInitialized); break; case "b": _bishopUnit = new Bishop(UnitColor.Black, ProtectKingMoves.ProtectWhiteKingMoves, ProtectKingMoves.ProtectBlackKingMoves, ProtectKingMoves.CoverKingMoves, ProtectKingMoves.PotentialBlackMoves); moves = _bishopUnit.GetValidMoves(input, isInitialized); break; case "k": _kingUnit = new King(UnitColor.Black, ProtectKingMoves.PotentialBlackMoves); moves = _kingUnit.GetPossibleMoves(input); break; case "n": _knightUnit = new Knight(UnitColor.Black, ProtectKingMoves.ProtectWhiteKingMoves, ProtectKingMoves.ProtectBlackKingMoves, ProtectKingMoves.PotentialBlackMoves); moves = _knightUnit.GetValidMoves(input, isInitialized); break; } results.Add(pieceInfo, moves); } return(results); }