LynnaLab.GfxViewer.SetGraphicsState C# (CSharp) Method

SetGraphicsState() public method

public SetGraphicsState ( GraphicsState state, int offsetStart, int offsetEnd, int width = -1, int scale = 2 ) : void
state GraphicsState
offsetStart int
offsetEnd int
width int
scale int
return void
        public void SetGraphicsState(GraphicsState state, int offsetStart, int offsetEnd, int width=-1, int scale=2)
        {
            GraphicsState.TileModifiedHandler tileModifiedHandler = delegate(int bank, int tile)
            {
                draw(tile+bank*0x180);
            };

            if (graphicsState != null)
                graphicsState.RemoveTileModifiedHandler(tileModifiedHandler);
            if (state != null)
                state.AddTileModifiedHandler(tileModifiedHandler);

            graphicsState = state;

            int size = (offsetEnd-offsetStart)/16;
            if (width == -1)
                width = (int)Math.Sqrt(size);
            int height = size/width;

            this.offsetStart = offsetStart;
            this.offsetEnd = offsetEnd;

            Width = width;
            Height = height;
            TileWidth = 8;
            TileHeight = 8;
            Scale = scale;

            image = new Bitmap(Width*TileWidth,Height*TileHeight);

            for (int i=offsetStart/16; i<offsetEnd/16; i++)
                draw(i);
        }

Usage Example

示例#1
0
        void SetArea(Area a)
        {
            Area.TileModifiedHandler handler = delegate(int tile) {
                if (tile == subTileEditor.subTileViewer.TileIndex)
                {
                    subTileEditor.subTileViewer.QueueDraw();
                }
            };

            if (area != null)
            {
                area.TileModifiedEvent -= handler;
            }
            a.TileModifiedEvent += handler;

            area = a;
            subTileEditor.SetArea(area);
            if (area != null)
            {
                subTileGfxViewer.SetGraphicsState(area.GraphicsState, 0x2000, 0x3000);
            }

            area.DrawInvalidatedTiles = true;

            areaviewer1.SetArea(area);

            areaviewer1.TileSelectedEvent += delegate(object sender) {
                subTileEditor.SetTileIndex(areaviewer1.SelectedIndex);
            };

            areaSpinButton.Value = area.Index;
            SetFlags1(a.Flags1);
            SetFlags2(a.Flags2);
            SetUniqueGfx(a.UniqueGfxString);
            SetMainGfx(a.MainGfxString);
            SetPaletteHeader(a.PaletteHeaderString);
            SetTileset(a.TilesetIndex);
            SetLayoutGroup(a.LayoutGroup);
            SetAnimation(a.AnimationIndex);
        }