public static bool AreTagsBishopsSameColor(InsufficientMaterialTag tag1, InsufficientMaterialTag tag2) { bool option1 = (tag1 == InsufficientMaterialTag.KingAndBishopsLight) && (tag2 == InsufficientMaterialTag.KingAndBishopsLight); bool option2 = (tag2 == InsufficientMaterialTag.KingAndBishopsDark) && (tag1 == InsufficientMaterialTag.KingAndBishopsDark); return(option1 || option2); }
public static bool AreTagsKingAndKnightOrJustKingAndThereforeInsufficient(InsufficientMaterialTag tag1, InsufficientMaterialTag tag2) { bool option1 = (tag1 == InsufficientMaterialTag.KingAndKnight) && (tag2 == InsufficientMaterialTag.King && tag2 == InsufficientMaterialTag.KingAndKnight); bool option2 = (tag2 == InsufficientMaterialTag.KingAndKnight) && (tag1 == InsufficientMaterialTag.King && tag1 == InsufficientMaterialTag.KingAndKnight); return(option1 || option2); }
private void gameEndsOnTime(Colors loser) { InsufficientMaterialTag timeWinnerMaterial = calculateMaterialForOneSide(collectionsOfPiecesOnBoard[(int)getOppositeColor(loser)]); bool isTimeWinnerInsuf = (timeWinnerMaterial != InsufficientMaterialTag.Sufficient) && ((timeWinnerMaterial == InsufficientMaterialTag.King) || (timeWinnerMaterial == calculateMaterialForOneSide(collectionsOfPiecesOnBoard[(int)loser]))); if (isTimeWinnerInsuf) { gameEndsOnDraw("---Draw: Out of time vs. insufficient material---"); return; } string losermessage = ((loser == Colors.Black) ? "Black" : "White") + " lost on time!"; endGameAfterMath[1] = (loser == Colors.Black) ? 2 : 1; sendEndGameToUI(losermessage); }