public static ScatteredArrangerModel MapToModel(this ScatteredArranger arranger, Dictionary <IProjectResource, string> resourceMap) { var model = new ScatteredArrangerModel() { Name = arranger.Name, ArrangerElementSize = arranger.ArrangerElementSize, ElementPixelSize = arranger.ElementPixelSize, Layout = arranger.Layout, ColorType = arranger.ColorType }; model.ElementGrid = new ArrangerElementModel[model.ArrangerElementSize.Width, model.ArrangerElementSize.Height]; for (int x = 0; x < model.ElementGrid.GetLength(0); x++) { for (int y = 0; y < model.ElementGrid.GetLength(1); y++) { if (arranger.GetElement(x, y) is ArrangerElement el) { model.ElementGrid[x, y] = MapToModel(el, x, y); } } } return(model); ArrangerElementModel MapToModel(ArrangerElement el, int elemX, int elemY) { var model = new ArrangerElementModel { FileAddress = el.SourceAddress, PositionX = elemX, PositionY = elemY, CodecName = el.Codec.Name, Mirror = el.Mirror, Rotation = el.Rotation }; if (el.Source is not null && resourceMap.TryGetValue(el.Source, out var dataFileKey)) { model.DataFileKey = dataFileKey; } if (el.Palette is not null && resourceMap.TryGetValue(el.Palette, out var paletteKey)) { model.PaletteKey = paletteKey; } return(model); } }
public void Setup() { _df = new MemoryDataSource("MemoryDataSource"); _sourceIndexed = new ScatteredArranger("source", PixelColorType.Indexed, ElementLayout.Tiled, 6, 6, 8, 8); for (int y = 0; y < _sourceIndexed.ArrangerElementSize.Height; y++) { for (int x = 0; x < _sourceIndexed.ArrangerElementSize.Width; x++) { if (_sourceIndexed.GetElement(x, y) is ArrangerElement element) { element = element.WithTarget(_df, new BitAddress(x * y), new Snes3bppCodec(8, 8), null); _sourceIndexed.SetElement(element, x, y); } } } }