public DirectionLayout(Spriteset sprite, Direction direction, SpritesetEditView parent) { InitializeComponent(); NameTextBox.Text = direction.Name; NameLabel.Text = direction.Name; _sprite = sprite; _direction = direction; _parent_editor = parent; _showDelay = _parent_editor.Settings.GetBoolean("spriteset-showdelay", false); foreach (Frame f in direction.Frames) { AddImage(f); } }
public void AddNewDirection() { Direction d = new Direction("Direction_" + DirectionHolder.Controls.Count); d.Frames.Add(new Frame()); _sprite.Directions.Add(d); DirectionLayout layout = new DirectionLayout(_sprite, d, this); layout.OnFrameClick += layout_OnFrameClick; layout.Modified += Modified; layout.Zoom = _zoom; DirectionHolder.Controls.Add(layout); layout.Location = new Point(2, DirectionHolder.Controls.Count - 1 * (layout.Height + 2) + 2); IsDirty = true; }
/// <summary> /// Attempts to load the spriteset from the given filename. /// </summary> /// <param name="filename">The filename of the Spriteset to load.</param> /// <returns>True if successful.</returns> public bool Load(String filename) { if (!File.Exists(filename)) return false; using (BinaryReader stream = new BinaryReader(File.OpenRead(filename))) { // purge anything already inside this object: Purge(); // start reading the header // string sig = new string(stream.ReadChars(4)); if (sig != ".rss") return false; _version = stream.ReadInt16(); short numImages = stream.ReadInt16(); _frameWidth = stream.ReadInt16(); _frameHeight = stream.ReadInt16(); short numDirs = stream.ReadInt16(); // read sprite base // _spriteBase.X1 = stream.ReadInt16(); _spriteBase.Y1 = stream.ReadInt16(); _spriteBase.X2 = stream.ReadInt16(); _spriteBase.Y2 = stream.ReadInt16(); // reserved // stream.ReadBytes(106); switch (_version) { case 3: BitmapLoader loader = new BitmapLoader(_frameWidth, _frameHeight); int amt = _frameWidth * _frameHeight * 4; while (numImages-- > 0) _images.Add(loader.LoadFromStream(stream, amt)); loader.Close(); while (numDirs-- > 0) { short numFrames = stream.ReadInt16(); stream.ReadBytes(6); short length = stream.ReadInt16(); string name = new String(stream.ReadChars(length)).Substring(0, length - 1); Direction dir = new Direction(name); while (numFrames-- > 0) { Frame f = new Frame {Index = stream.ReadInt16(), Delay = stream.ReadInt16()}; dir.Frames.Add(f); stream.ReadBytes(4); } _directions.Add(dir); } break; } } return true; }