void DrawBlastObject(BlastObject eo)
{
var objnum = GetObjectIndex(eo.Number);
if (objnum == -1)
throw new NotSupportedException(string.Format("DrawBlastObject: GetObjectIndex on BlastObject {0} failed", eo.Number));
if (_objs[objnum].Images.Count == 0)
return;
var index = eo.Image >= _objs[objnum].Images.Count ? 0 : eo.Image < 0 ? 0 : eo.Image;
var img = _objs[objnum].Images[index];
if (!img.IsBomp)
throw new NotSupportedException(string.Format("object {0} is not a blast object", eo.Number));
var bdd = new BompDrawData();
bdd.Src = img.Data;
bdd.Dst = new PixelNavigator(MainVirtScreen.Surfaces[0]);
bdd.Dst.GoTo(MainVirtScreen.XStart, 0);
bdd.X = eo.Rect.Left;
bdd.Y = eo.Rect.Top;
bdd.Width = _objs[objnum].Width;
bdd.Height = _objs[objnum].Height;
bdd.ScaleX = eo.ScaleX;
bdd.ScaleY = eo.ScaleY;
if ((bdd.ScaleX != 255) || (bdd.ScaleY != 255))
{
bdd.ShadowMode = 0;
}
else
{
bdd.ShadowMode = eo.Mode;
}
bdd.ShadowPalette = _shadowPalette;
bdd.DrawBomp();
MarkRectAsDirty(MainVirtScreen, new Rect(bdd.X, bdd.X + bdd.Width, bdd.Y, bdd.Y + bdd.Height));
}