From: Laszlo T. <ave...@us...> - 2006-02-26 12:31:08
|
Update of /cvsroot/gemrb/gemrb/gemrb/plugins/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1883 Modified Files: TileOverlay.cpp Log Message: fixed rendering of overlays in bg1 (transparency still not done) Index: TileOverlay.cpp =================================================================== RCS file: /cvsroot/gemrb/gemrb/gemrb/plugins/Core/TileOverlay.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** TileOverlay.cpp 22 Feb 2006 18:38:20 -0000 1.19 --- TileOverlay.cpp 26 Feb 2006 12:30:58 -0000 1.20 *************** *** 51,54 **** --- 51,56 ---- void TileOverlay::Draw(Region viewport, std::vector< TileOverlay*> &overlays) { + //half transparency + Color tint = {255,255,255,0}; // if the video's viewport is partially outside of the map, bump it back bool bump = false; *************** *** 86,104 **** for (int x = sx; x < dx && x < w; x++) { Tile* tile = tiles[( y* w ) + x]; - //draw base tile vid->BlitSprite( tile->anim[0]->NextFrame(), viewport.x + ( x * 64 ), viewport.y + ( y * 64 ), false, &viewport ); ! //draw overlay tiles int mask = 2; for (int z = 1;z<5;z++) { TileOverlay * ov = overlays[z]; ! if(ov) { Tile *ovtile = ov->tiles[0]; //allow only 1x1 tiles now if (tile->om & mask) { ! vid->BlitSprite( ovtile->anim[0]->NextFrame(), viewport.x + ( x * 64 ), viewport.y + ( y * 64 ), ! false, &viewport ); } } --- 88,108 ---- for (int x = sx; x < dx && x < w; x++) { Tile* tile = tiles[( y* w ) + x]; vid->BlitSprite( tile->anim[0]->NextFrame(), viewport.x + ( x * 64 ), viewport.y + ( y * 64 ), false, &viewport ); + if (!tile->om) { + continue; + } ! //draw overlay tiles, they should be half transparent int mask = 2; for (int z = 1;z<5;z++) { TileOverlay * ov = overlays[z]; ! if (ov) { Tile *ovtile = ov->tiles[0]; //allow only 1x1 tiles now if (tile->om & mask) { ! vid->BlitSpriteTinted( ovtile->anim[0]->NextFrame(), viewport.x + ( x * 64 ), viewport.y + ( y * 64 ), ! tint, NULL, &viewport ); } } *************** *** 106,114 **** } ! //this should be drawn semi transparent if (tile->anim[1]) { ! vid->BlitSprite( tile->anim[1]->NextFrame(), viewport.x + ( x * 64 ), viewport.y + ( y * 64 ), ! false, &viewport ); } } --- 110,123 ---- } ! //original frame should be drawn over it if (tile->anim[1]) { ! vid->BlitSpriteTinted( tile->anim[1]->NextFrame(), viewport.x + ( x * 64 ), viewport.y + ( y * 64 ), ! tint, NULL, &viewport ); ! } else { ! //bg1 redraws the original frame ! vid->BlitSpriteTinted( tile->anim[0]->NextFrame(), ! viewport.x + ( x * 64 ), viewport.y + ( y * 64 ), ! tint, NULL, &viewport ); } } |