ScriptDynamicSprite* DynamicSprite_CreateFromExistingSprite(int slot, int preserveAlphaChannel) { int gotSlot = spriteset.findFreeSlot(); if (gotSlot <= 0) return NULL; if (!spriteset.doesSpriteExist(slot)) quitprintf("DynamicSprite.CreateFromExistingSprite: sprite %d does not exist", slot); // create a new sprite as a copy of the existing one Bitmap *newPic = BitmapHelper::CreateBitmapCopy(spriteset[slot]); if (newPic == NULL) return NULL; bool hasAlpha = (preserveAlphaChannel) && ((game.spriteflags[slot] & SPF_ALPHACHANNEL) != 0); // replace the bitmap in the sprite set add_dynamic_sprite(gotSlot, newPic, hasAlpha); ScriptDynamicSprite *new_spr = new ScriptDynamicSprite(gotSlot); return new_spr; }
ScriptDynamicSprite* DynamicSprite_CreateFromExistingSprite(int slot, int preserveAlphaChannel) { int gotSlot = spriteset.findFreeSlot(); if (gotSlot <= 0) return NULL; if (!spriteset.doesSpriteExist(slot)) quitprintf("DynamicSprite.CreateFromExistingSprite: sprite %d does not exist", slot); // create a new sprite as a copy of the existing one Bitmap *newPic = BitmapHelper::CreateBitmap(spritewidth[slot], spriteheight[slot], spriteset[slot]->GetColorDepth()); if (newPic == NULL) return NULL; newPic->Blit(spriteset[slot], 0, 0, 0, 0, spritewidth[slot], spriteheight[slot]); bool hasAlpha = (preserveAlphaChannel) && ((game.spriteflags[slot] & SPF_ALPHACHANNEL) != 0); // replace the bitmap in the sprite set add_dynamic_sprite(gotSlot, newPic, hasAlpha); ScriptDynamicSprite *new_spr = new ScriptDynamicSprite(gotSlot); GlobalReturnValue.SetDynamicObject(new_spr, new_spr); return new_spr; }