public EGFlags getEndGameFlags() { EGFlags feg = default; if (isAlone(Side[Black])) { feg |= EGFlags.BlackAlone; } if (isAlone(Side[White])) { feg |= EGFlags.WhiteAlone; } if ((feg & EGFlags.KingAlone) == 0) { if (isKQvKPEndgame()) { feg |= EGFlags.KQvKP; } } else if (RectPiece == 0) // No Rooks or Queens { feg |= EGFlags.OutsideSquare; var bWhiteAttacking = (feg & EGFlags.BlackAlone) != 0; var attacker = getSide(bWhiteAttacking); if (isKBNvKEndgame2(attacker)) { feg |= EGFlags.KBNvK; } } return(feg); }
public static String FormatFlags( ModeFlags fmd, DrawFlags fdr, EGFlags feg, HiFlags fBlackHi, HiFlags fWhiteHi, LoFlags flo) { if (fmd == 0 && fdr == 0 && feg == 0 && fBlackHi == 0 && fWhiteHi == 0 && flo == 0) { return("None"); } var sBlackHi = FormatFlags(fBlackHi); var sWhiteHi = FormatFlags(fWhiteHi); var sBlackHiLabelled = IsNullOrEmpty(sBlackHi) ? Empty : $"Black[{sBlackHi}]"; var sWhiteHiLabelled = IsNullOrEmpty(sWhiteHi) ? Empty : $"White[{sWhiteHi}]"; const Int32 nCapacity = 4; var sFlags = new List <String>(nCapacity) .AddNotEmpty(FormatFlags(fmd)) .AddNotEmpty(FormatFlags(fdr)) .AddNotEmpty(FormatFlags(feg)) .AddNotEmpty(sBlackHiLabelled) .AddNotEmpty(sWhiteHiLabelled) .AddNotEmpty(FormatFlags(flo)); return(Join(sSpace, sFlags)); }
public static String FormatFlags(EGFlags feg) { var en = egFlags.Where(f => (f & feg) != 0); return(Join(sSpace, en)); }