using Chess; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows; namespace ChessPanel { public class Queen : Piece { public Queen(PieceColor color, Vector position, Grid fields) : base(position, fields) { type = (PieceType)Enum.Parse(typeof(PieceType), this.GetType().Name); this.color = color; this.image = (Image)ChessPanel.Properties.Resources.ResourceManager.GetObject($"{this.type.ToString()}{this.color.ToString()}"); } internal override bool EndageresFieldWithVirtualMove(Grid fields, Field possibleEndageredField, Piece movePiece, Field targetPos) { return Rook.StaticEndageresFieldWithVirtualMove(fields, this.field, possibleEndageredField, movePiece, targetPos, color) || Bishop.StaticEndageresFieldWithVirtualMove(fields, this.field, possibleEndageredField, movePiece, targetPos, color); } internal override Dictionary GetTargetFields(Grid fields, Field field, PieceColor color) { Dictionary targetFields = Rook.StaticGetTargetFields(fields, field, this.color); // Take Rook fields targetFields = targetFields.Concat(Bishop.StaticGetTargetFields(fields, field, this.color) // Add Bishop; Rook + Bishop = Queen .Where(kvp => !targetFields.ContainsKey(kvp.Key))) .OrderBy(c => c.Value) .ToDictionary(c => c.Key, c => c.Value); return targetFields; } } // FINALIZED }