public bool CanDropCard(IntPoint gridPos, CardBase card) { if (MyCardGrid.IsOccupied(gridPos.Y, gridPos.X)) { return(false); } CardNeighbours neighbours = MyCardGrid.GetNeighbours(gridPos.Y, gridPos.X); if (neighbours.NumNeighbours() == 0) { return(false); } if (neighbours.North != null) { if (!CardEdgesEqual(neighbours.North.EdgeSouth, card.EdgeNorth)) { return(false); } } if (neighbours.East != null) { if (!CardEdgesEqual(neighbours.East.EdgeWest, card.EdgeEast)) { return(false); } } if (neighbours.West != null) { if (!CardEdgesEqual(neighbours.West.EdgeEast, card.EdgeWest)) { return(false); } } if (neighbours.South != null) { if (!CardEdgesEqual(neighbours.South.EdgeNorth, card.EdgeSouth)) { return(false); } } return(true); }