Пример #1
0
        public static void ReplaceSprite(Sprite sprite, Bitmap bmp, bool alpha, bool remapColours, bool useRoomBackground,
                                         SpriteImportTransparency transparency, SpriteSheet spritesheet = null, int frame = 0, string filename = "")
        {
            if (spritesheet != null)
            {
                Rectangle selection = spritesheet.GetFirstSpriteSelection(new Size(bmp.Width, bmp.Height));

                if (!selection.IsEmpty)
                {
                    Bitmap replacement = bmp.Clone(selection, bmp.PixelFormat);
                    ReplaceSprite(sprite, replacement, alpha, remapColours, useRoomBackground, transparency, filename,
                                  frame, selection.Left, selection.Top);
                    replacement.Dispose();
                }
                else
                {
                    string message = String.Format("Tiled selection for sprite {0} was out-of-bounds for image '{1}'", sprite.Number, sprite.SourceFile);
                    throw new InvalidOperationException(message);
                }
            }
            else
            {
                ReplaceSprite(sprite, bmp, alpha, remapColours, useRoomBackground, transparency, filename, frame);
            }
        }
Пример #2
0
        /// <summary>
        /// Tries to create bitmap from file, following Sprite's import settings.
        /// Returns null on failure.
        /// </summary>
        public static Bitmap LoadBitmapForSprite(Sprite spr, string filename, int frame)
        {
            Bitmap bmp;

            try
            {
                bmp = LoadFrameImageFromFile(filename, frame);
                if (bmp == null)
                {
                    return(null);
                }
            }
            catch (Exception)
            {
                return(null);
            }

            if (spr.ImportAsTile)
            {
                SpriteSheet spritesheet;
                spritesheet = new SpriteSheet(new Point(spr.OffsetX, spr.OffsetY), new Size(spr.ImportWidth, spr.ImportHeight));
                Rectangle selection = spritesheet.GetFirstSpriteSelection(new Size(bmp.Width, bmp.Height));
                if (selection.IsEmpty)
                {
                    return(null);
                }
                return(bmp.Clone(selection, bmp.PixelFormat));
            }
            return(bmp);
        }