Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }