// 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); }