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); }
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; }
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); } } }
public GraphicalLayer(Layer target, int tile_width, int tile_height) { TargetLayer = target; Resize(tile_width, tile_height); }
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); }
/// <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); } }
/// <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; }