From 82a460ec90b4537926f31603219504bce8817ac2 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 27 Nov 2011 04:31:05 +0200 Subject: Improve luaentity sprite functionality (and add some random stuff) --- src/tile.cpp | 113 +++++++++++------------------------------------------------ 1 file changed, 21 insertions(+), 92 deletions(-) (limited to 'src/tile.cpp') diff --git a/src/tile.cpp b/src/tile.cpp index f7d577b1f..206d81289 100644 --- a/src/tile.cpp +++ b/src/tile.cpp @@ -1361,14 +1361,14 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg, } } /* - "[makealpha:R,G,B:filename.png" - Use an image with converting one color to transparent. + "[makealpha:R,G,B" + Convert one color to transparent. */ else if(part_of_name.substr(0,11) == "[makealpha:") { - if(baseimg != NULL) + if(baseimg == NULL) { - errorstream<<"generate_image(): baseimg!=NULL " + errorstream<<"generate_image(): baseimg==NULL " <<"for part_of_name=\""<getOrLoad(filename, device); + core::dimension2d dim = baseimg->getDimension(); - if(image == NULL) - { - errorstream<<"generate_image(): Loading file \"" - < dim = image->getDimension(); - baseimg = driver->createImage(video::ECF_A8R8G8B8, dim); - - // Blit - image->copyTo(baseimg); - - image->drop(); - - for(u32 y=0; ygetPixel(x,y); - u32 r = c.getRed(); - u32 g = c.getGreen(); - u32 b = c.getBlue(); - if(!(r == r1 && g == g1 && b == b1)) - continue; - c.setAlpha(0); - baseimg->setPixel(x,y,c); - } - } - } - /* - "[makealpha2:R,G,B;R2,G2,B2:filename.png" - Use an image with converting two colors to transparent. - */ - else if(part_of_name.substr(0,12) == "[makealpha2:") - { - if(baseimg != NULL) - { - errorstream<<"generate_image(): baseimg!=NULL " - <<"for part_of_name=\""<createImage(video::ECF_A8R8G8B8, dim); + oldbaseimg->copyTo(baseimg); + oldbaseimg->drop();*/ - /*infostream<<"generate_image(): Loading filename \""<getOrLoad(filename, device); - - if(image == NULL) - { - errorstream<<"generate_image(): Loading file \"" - < dim = image->getDimension(); - baseimg = driver->createImage(video::ECF_A8R8G8B8, dim); - - // Blit - image->copyTo(baseimg); - - image->drop(); - - for(u32 y=0; ygetPixel(x,y); - u32 r = c.getRed(); - u32 g = c.getGreen(); - u32 b = c.getBlue(); - if(!(r == r1 && g == g1 && b == b1) && - !(r == r2 && g == g2 && b == b2)) - continue; - c.setAlpha(0); - baseimg->setPixel(x,y,c); - } + video::SColor c = baseimg->getPixel(x,y); + u32 r = c.getRed(); + u32 g = c.getGreen(); + u32 b = c.getBlue(); + if(!(r == r1 && g == g1 && b == b1)) + continue; + c.setAlpha(0); + baseimg->setPixel(x,y,c); } } /* -- cgit v1.2.3