internal static Int32 ep(LoFlags flo) { var x = (Int32)(flo & LoFlags.EPFile); var bWTM = (flo & LoFlags.WTM) != 0; //[Note]EPFile identifies a Black pawn when it is White to move, and vice versa return((Int32)(bWTM ? sq.a6 : sq.a3) + x); }
public static String FormatFlags(LoFlags flo) { var en = loFlags.Where(f => (f & flo) != 0); var s = Join(sSpace, en); if ((flo & LoFlags.Passed) != 0) { var sPrefix = IsNullOrEmpty(s) ? Empty : sSpace; s += sPrefix + (sq)ep(flo) + sSpace + LoFlags.Passed; } return(s); }
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)); }