Exemplo n.º 1
0
    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);
        }
    }
Exemplo n.º 2
0
    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);
                }
            }
        }
    }