Example #1
0
        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);
        }
Example #2
0
        internal Area(Project p, int i)
            : base(p, i)
        {
            areaFile = Project.GetFileWithLabel("areaData");

            areaData = areaFile.GetData("areaData", Index * 8);

            // Initialize graphics state
            graphicsState = new GraphicsState();
            // Global palettes
            PaletteHeaderGroup globalPaletteHeaderGroup =
                Project.GetIndexedDataType<PaletteHeaderGroup>(0xf);
            graphicsState.AddPaletteHeaderGroup(globalPaletteHeaderGroup, PaletteGroupType.Common);

            Data data = areaData;
            flags1 = p.EvalToInt(data.GetValue(0));

            data = data.NextData;
            flags2 = p.EvalToInt(data.GetValue(0));

            data = data.NextData;
            SetUniqueGfx(Project.EvalToInt(data.GetValue(0)));

            data = data.NextData;
            SetMainGfx(Project.EvalToInt(data.GetValue(0)));

            data = data.NextData;
            SetPaletteHeader(Project.EvalToInt(data.GetValue(0)));

            data = data.NextData;
            SetTileset(Project.EvalToInt(data.GetValue(0)));

            data = data.NextData;
            layoutGroup = Project.EvalToInt(data.GetValue(0));

            data = data.NextData;
            SetAnimation((byte)Project.EvalToInt(data.GetValue(0)));
        }