A Sphere map layer.
Example #1
0
        public void Refresh(Layer target, Tileset tileset, bool shownums = false)
        {
            if (tileset.IsDisposed) return;

            TargetLayer = target;
            for (int i = 0; i < _cells.Length; ++i) _cells[i].Redraw(target, tileset);
        }
Example #2
0
 public LayerForm(Layer layer)
 {
     InitializeComponent();
     this.layer = layer;
     plxXSlide.SetRange(-160, 160);
     plxYSlide.SetRange(-160, 160);
     scrollXSlide.SetRange(-160, 160);
     scrollYSlide.SetRange(-160, 160);
     parallaxCheck.Checked = layer.Parallax;
 }
Example #3
0
            public void Redraw(Layer layer, Tileset tileset)
            {
                if (_canvas == null) return;

                int tile, tx, ty;
                for (int x = 0; x < _mul; ++x)
                {
                    tx = x * _tile_w;
                    for (int y = 0; y < _mul; ++y)
                    {
                        tile = layer.GetTile(x + Offset.X, y + Offset.Y);
                        if (tile < 0) continue;

                        ty = y * _tile_h;
                        _canvas.DrawImageUnscaled(tileset.Tiles[tile].Graphic, tx, ty);
                    }
                }
            }
Example #4
0
 public GraphicalLayer(Layer target, int tile_width, int tile_height)
 {
     TargetLayer = target;
     Resize(tile_width, tile_height);
 }
Example #5
0
            public void Allocate(Layer layer, Tileset tileset)
            {
                if (_canvas != null) return;

                Image = new Bitmap(_mul * _tile_w, _mul * _tile_h, PixelFormat.Format32bppPArgb);
                _canvas = Graphics.FromImage(Image);
                _canvas.CompositingMode = CompositingMode.SourceCopy;
                _canvas.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
                _canvas.SmoothingMode = SmoothingMode.None;
                _canvas.CompositingQuality = CompositingQuality.HighSpeed;
                _canvas.InterpolationMode = InterpolationMode.NearestNeighbor;

                Redraw(layer, tileset);
            }
Example #6
0
        /// <summary>
        /// Creates a new map with values.
        /// </summary>
        /// <param name="width">The width in tiles.</param>
        /// <param name="height">The height in tiles.</param>
        /// <param name="tileWidth">The tilewidth in pixels.</param>
        /// <param name="tileHeight">The tileheight in pixels.</param>
        /// <param name="tilesetPath">The path to the tileset.</param>
        public void CreateNew(short width, short height, short tileWidth, short tileHeight, string tilesetPath)
        {
            for (int i = 0; i < 9; ++i) Scripts.Add("");

            // create a base layer:
            Layer layer = new Layer();
            layer.CreateNew(width, height);
            Layers.Add(layer);

            // create a starting tile:
            Tileset = new Tileset();

            if (string.IsNullOrEmpty(tilesetPath))
                Tileset.CreateNew(tileWidth, tileHeight);
            else
            {
                Tileset = Tileset.FromFile(tilesetPath);
                Scripts[0] = Path.GetFileName(tilesetPath);
            }
        }
Example #7
0
        /// <summary>
        /// Creates a proper Sphere from a data stream.
        /// </summary>
        /// <param name="reader">BinaryReader to use.</param>
        /// <returns>Sphere Layer object.</returns>
        public static Layer FromBinary(BinaryReader reader)
        {
            Layer layer = new Layer
            {
                Width = reader.ReadInt16(),
                Height = reader.ReadInt16(),
                Flags = reader.ReadInt16()
            };

            layer.Visible = (~layer.Flags & 1) == 1;
            layer.Parallax = (layer.Flags & 2) == 2;
            layer.ParallaxX = reader.ReadSingle();
            layer.ParallaxY = reader.ReadSingle();
            layer.ScrollX = reader.ReadSingle();
            layer.ScrollY = reader.ReadSingle();
            int segs = reader.ReadInt32();
            layer.Reflective = reader.ReadBoolean();
            reader.ReadBytes(3); // reserved

            short length = reader.ReadInt16();
            layer.Name = new string(reader.ReadChars(length));

            layer._tiles = new short[layer.Width, layer.Height];
            for (int y = 0; y < layer.Height; ++y)
                for (int x = 0; x < layer.Width; ++x)
                    layer._tiles[x, y] = reader.ReadInt16();

            while (segs-- > 0) layer.Segments.Add(new Segment(reader));
            return layer;
        }