From kde-commits Sat Oct 10 18:08:30 2009 From: Mathias Kraus Date: Sat, 10 Oct 2009 18:08:30 +0000 To: kde-commits Subject: playground/games/granatier/src Message-Id: <1255198110.158009.13908.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=125519811630996 SVN commit 1033667 by mkraus: improve explosion a little bit M +29 -8 bombexplosionitem.cpp M +3 -1 bombexplosionitem.h M +4 -4 gamescene.cpp --- trunk/playground/games/granatier/src/bombexplosionitem.cpp #1033666:1033667 @@ -22,30 +22,25 @@ #include #include -BombExplosionItem::BombExplosionItem(Bomb* p_model, Direction direction, int i) : QGraphicsSvgItem() +BombExplosionItem::BombExplosionItem(Bomb* p_model, Direction direction, int bombPower) : QGraphicsSvgItem() { - QTransform transform; m_direction = direction; + m_bombPower = bombPower; switch(m_direction) { case NORTH: setElementId("bomb_exploded_north"); - transform.translate(0, 20); break; case EAST: setElementId("bomb_exploded_east"); - transform.translate(-20, 0); break; case SOUTH: setElementId("bomb_exploded_south"); - transform.translate(0, -20); break; case WEST: setElementId("bomb_exploded_west"); - transform.translate(20, 0); break; } - setTransform(transform); setVisible(true); } @@ -61,7 +56,7 @@ QRectF rect = boundingRect(); // Calculation of the shape - QRectF shapeRect = QRectF( rect.x()+rect.width()/4, rect.y()+rect.height()/4, rect.width()/2, rect.height()/2 ); + QRectF shapeRect = QRectF(rect.x(), rect.y(), rect.width(), rect.height()); path.addEllipse(shapeRect); return path; } @@ -73,4 +68,30 @@ qreal y = p_y - boundingRect().height() / 2; // Updates the view coordinates setPos(x, y); + + QTransform transform; + switch(m_direction) + { + case NORTH: + transform.translate(boundingRect().width() / 2.0, 0); + transform.scale(1 + 0.1 * m_bombPower, 1); + transform.translate(-boundingRect().width() / 2.0, 20); + break; + case EAST: + transform.translate(0, boundingRect().height() / 2.0); + transform.scale(1, 1 + 0.1 * m_bombPower); + transform.translate(-20, -boundingRect().height() / 2.0); + break; + case SOUTH: + transform.translate(boundingRect().width() / 2.0, 0); + transform.scale(1 + 0.1 * m_bombPower, 1); + transform.translate(-boundingRect().width() / 2.0, -20); + break; + case WEST: + transform.translate(0, boundingRect().height() / 2.0); + transform.scale(1, 1 + 0.1 * m_bombPower); + transform.translate(20, -boundingRect().height() / 2.0); + break; + } + setTransform(transform); } --- trunk/playground/games/granatier/src/bombexplosionitem.h #1033666:1033667 @@ -44,6 +44,8 @@ protected: Direction m_direction; + + int m_bombPower; public: @@ -51,7 +53,7 @@ * Creates a new BombExplosionItem instance. * @param p_model the Bomb model */ - BombExplosionItem(Bomb* p_model, Direction direction, int i); + BombExplosionItem(Bomb* p_model, Direction direction, int bombPower); /** * Deletes the BombExplosionItem instance. --- trunk/playground/games/granatier/src/gamescene.cpp #1033666:1033667 @@ -691,7 +691,7 @@ } } } - bombExplosionItem = new BombExplosionItem (bomb, BombExplosionItem::NORTH, i); + bombExplosionItem = new BombExplosionItem (bomb, BombExplosionItem::NORTH, nBombPower - i); bombExplosionItem->setSharedRenderer(m_rendererBombItems); bombExplosionItem->update(bomb->getX(), bomb->getY() - (i+1)*Cell::SIZE); bombExplosionItem->setZValue(300 + nBombPower+3 - i); @@ -740,7 +740,7 @@ } } } - bombExplosionItem = new BombExplosionItem (bomb, BombExplosionItem::EAST, i); + bombExplosionItem = new BombExplosionItem (bomb, BombExplosionItem::EAST, nBombPower - i); bombExplosionItem->setSharedRenderer(m_rendererBombItems); bombExplosionItem->update(bomb->getX() + (i+1)*Cell::SIZE, bomb->getY()); bombExplosionItem->setZValue(300 + nBombPower+3 - i); @@ -789,7 +789,7 @@ } } } - bombExplosionItem = new BombExplosionItem (bomb, BombExplosionItem::SOUTH, i); + bombExplosionItem = new BombExplosionItem (bomb, BombExplosionItem::SOUTH, nBombPower - i); bombExplosionItem->setSharedRenderer(m_rendererBombItems); bombExplosionItem->update(bomb->getX(), bomb->getY() + (i+1)*Cell::SIZE); bombExplosionItem->setZValue(300 + nBombPower+3 - i); @@ -838,7 +838,7 @@ } } } - bombExplosionItem = new BombExplosionItem (bomb, BombExplosionItem::WEST, i); + bombExplosionItem = new BombExplosionItem (bomb, BombExplosionItem::WEST, nBombPower - i); bombExplosionItem->setSharedRenderer(m_rendererBombItems); bombExplosionItem->update(bomb->getX() - (i+1)*Cell::SIZE, bomb->getY()); bombExplosionItem->setZValue(300 + nBombPower+3 - i);