public override List <BoardTile> XRay(Piece target) { var pos = this.CurrentPosition; List <BoardTile> tiles = new List <BoardTile>(); if (pos.row == target.CurrentPosition.row) { if (pos.col < target.CurrentPosition.col) { tiles = XRayHelpers.XRayHorizontalLR(this, target); } else { tiles = XRayHelpers.XRayHorizontalRL(this, target); } } else if (pos.col == target.CurrentPosition.col) { if (pos.row < target.CurrentPosition.row) { tiles = XRayHelpers.XRayVerticalUD(this, target); } else { tiles = XRayHelpers.XRayVerticalDU(this, target); } } return(tiles); }
public override List <BoardTile> XRay(Piece target) { var pos = this.CurrentPosition; var tiles = new List <BoardTile>(); if (pos.row < target.CurrentPosition.row) { if (pos.col < target.CurrentPosition.col) { tiles = XRayHelpers.XRayDiagonalBLTR(this, target); } else { tiles = XRayHelpers.XRayDiagonalTRBL(this, target); } } else { if (pos.col < target.CurrentPosition.col) { tiles = XRayHelpers.XRayDiagonalTLBR(this, target); } else { tiles = XRayHelpers.XRayDiagonalBRTL(this, target); } } return(tiles); }
public override List <BoardTile> XRay(Piece target) { var pos = this.CurrentPosition; List <BoardTile> tiles = new List <BoardTile>(); // note: order of the checks here are important. if it were reversed, horizontal/vertical pins would trip diagonal pin checks. if (pos.row == target.CurrentPosition.row) { if (pos.col < target.CurrentPosition.col) { tiles = XRayHelpers.XRayHorizontalLR(this, target); } else { tiles = XRayHelpers.XRayHorizontalRL(this, target); } } else if (pos.col == target.CurrentPosition.col) { if (pos.row < target.CurrentPosition.row) { tiles = XRayHelpers.XRayVerticalUD(this, target); } else { tiles = XRayHelpers.XRayVerticalDU(this, target); } } else if (pos.row < target.CurrentPosition.row) { if (pos.col < target.CurrentPosition.col) { tiles = XRayHelpers.XRayDiagonalBLTR(this, target); } else { tiles = XRayHelpers.XRayDiagonalTRBL(this, target); } } else { if (pos.col < target.CurrentPosition.col) { tiles = XRayHelpers.XRayDiagonalTLBR(this, target); } else { tiles = XRayHelpers.XRayDiagonalBRTL(this, target); } } return(tiles); }