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; } }
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); }