Example #1
0
        // colorFlip:
        // 1. color 0 becomes color 15
        // 1. color 15 becomes color 0
        // 1. all of color 15 are now transparent
        public void Render(string name, Bitmap bitmap, BobDefinition definition, int planeCount, BobMode colorFlip,
                           Destination destination = Destination.Executable)
        {
            _definition   = definition;
            _planeCount   = planeCount;
            _bobWordWidth = (_definition.Width / 8 + 1) / 2;
            _colorFlip    = colorFlip == BobMode.ColorFlip;

            var width = definition.Width;

            if (width % 8 != 0)
            {
                throw new ConversionException("Bob width must be a multiple of 8.");
            }

            _writer.StartObject(destination == Destination.Disk ? ObjectType.Chip : ObjectType.Bob, name);

            try
            {
                SaveBobsWithMasks(bitmap, 0);
            }
            catch (ConversionException ex)
            {
                throw new ConversionException($"Converting bob {name}: {ex.Message}");
            }

            _writer.EndObject();
        }
        private void ConvertBobToDisk(string name, BobDefinition bob, LevelDefinition definition, Bitmap bobPalette)
        {
            var offset = _writer.GetCurrentOffset(ObjectType.Chip);

            _bobConverter.ConvertBob(name, bob, definition.BobPlaneCount, bobPalette.Palette,
                                     _definition.BobPaletteFlip0AndLast ? BobMode.ColorFlip : BobMode.NoColorFlip, Destination.Disk);

            _items.Add(ItemTypes.Bob, name, offset);
        }
        public void ConvertBob(string name, BobDefinition definition, int planes, ColorPalette palette, BobMode colorFlip, Destination destination)
        {
            var image = definition.ImageFile.FromInputFolder().LoadIndexedBitmap(palette);

            _bobRenderer.Render(name, image, definition, planes, colorFlip, destination);
        }