public virtual void SetupForPuzzle(Puzzle puzzle)
 {
     switch (factoryArg.ToLowerInvariant())
     {
     case "index":
         var master = new BitmapMaskedIndex.Master(puzzle.ToMap(puzzle.Definition.AllFloors));
         factoryClone  = x => new BitmapMaskedIndex(master, x);;
         factoryBySize = x => new BitmapMaskedIndex(master);
         break;
     }
 }
示例#2
0
        public void BitmapMaskedIndex()
        {
            var stringMask10_10 =
                @"##########
##########
##########
##########
##########
##########
##########
##########
##########
##########";
            var ref10 = SokoSolve.Core.Primitives.Bitmap.Create(stringMask10_10, x => x != '.');

            Assert.Equal(new VectorInt2(10), ref10.Size);
            var master = new BitmapMaskedIndex.Master(ref10);

            var stringMask11_11 =
                @"###########
###########
###########
###########
###########
###########
###########
###########
###########
###########
###########";
            var ref11 = SokoSolve.Core.Primitives.Bitmap.Create(stringMask11_11, x => x != '.');

            Assert.Equal(new VectorInt2(11), ref11.Size);
            var master11 = new BitmapMaskedIndex.Master(ref11);


            CheckBasic(new BitmapMaskedIndex(master));
            CheckUsingFactory(x =>
            {
                if (x.X == 10 && x.Y == 10)
                {
                    return((IBitmap) new BitmapMaskedIndex(master));
                }
                if (x.X == 11 && x.Y == 11)
                {
                    return((IBitmap) new BitmapMaskedIndex(master11));
                }
                throw new NotSupportedException(x.ToString());
            });
        }
        private BitmapMaskedIndex.Master BuildMaster(Puzzle p)
        {
            var floors = p.ToMap(p.Definition.AllFloors);
            var master = new BitmapMaskedIndex.Master(floors);

            outp.WriteLine(master.Reference.ToString());

            outp.WriteLine($"Size: {master}");
            outp.WriteLine($"Size.Bitmap: {Bitmap.SizeInBytes(master.Reference.Size)}");
            outp.WriteLine($"Size.BitmapByteSeq: {BitmapByteSeq.SizeInBytes(master.Reference.Size)}");

            outp.WriteLine(new FluentString().ForEach(master.MapIn));
            outp.WriteLine(new FluentString(Environment.NewLine).ForEach(master.MapOut.WithIndex()));

            return(master);
        }