aboutsummaryrefslogtreecommitdiff
path: root/src/ParallaxScrollerItem.cpp
diff options
context:
space:
mode:
authorSamu Laaksonen <laaksonen.sj@gmail.com>2012-09-25 20:00:41 +0300
committerSamu Laaksonen <laaksonen.sj@gmail.com>2012-09-25 20:00:41 +0300
commit685fe05def77b039221edf06c74af74915d536c5 (patch)
tree9c1a14b8f68bc0f801bdec3edc447d04fdbf7a4c /src/ParallaxScrollerItem.cpp
parent29eabac0670574efd384182c065f53d08c42a483 (diff)
downloadprism-685fe05def77b039221edf06c74af74915d536c5.tar.gz
prism-685fe05def77b039221edf06c74af74915d536c5.zip
Initial code commit
Added some stuff for project base - tiled sources - few Qt based classes for gfx
Diffstat (limited to 'src/ParallaxScrollerItem.cpp')
-rw-r--r--src/ParallaxScrollerItem.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/ParallaxScrollerItem.cpp b/src/ParallaxScrollerItem.cpp
new file mode 100644
index 0000000..0480b29
--- /dev/null
+++ b/src/ParallaxScrollerItem.cpp
@@ -0,0 +1,47 @@
+#include "ParallaxScrollerItem.h"
+
+#include <QGraphicsView>
+#include <QGraphicsScene>
+#include <QScrollBar>
+
+#include <QPainter>
+#include <QDebug>
+
+ParallaxScrollerItem::ParallaxScrollerItem(QString layer, QPointF pos,
+ qreal depthFactor, qreal speed,
+ qreal factor, QGraphicsScene *scene,
+ QGraphicsItem *parent)
+ : QGraphicsPixmapItem(parent, scene), m_scrollSpeed(speed), m_factor(factor)
+{
+ m_scrollingSpeedSlowingFactor = 0;
+ m_layer.load(layer);
+ setPixmap(m_layer);
+ setPos(pos);
+ setZValue(depthFactor);
+}
+
+ParallaxScrollerItem::~ParallaxScrollerItem()
+{
+
+}
+
+void ParallaxScrollerItem::advance(int phase)
+{
+ if(phase == 1)
+ {
+ m_scrollingSpeedSlowingFactor++;
+ if(m_scrollingSpeedSlowingFactor % m_factor == 0)
+ {
+ m_scrollingSpeedSlowingFactor = 0;
+ setPos(x()-m_scrollSpeed, y());
+
+ QGraphicsView* v = scene()->views().first();
+ QPointF p = v->mapToScene(v->viewport()->x(), 0);
+
+ if(x() <= p.x()-pixmap().width())
+ {
+ setPos(p.x()+pixmap().width()-m_scrollSpeed, y());
+ }
+ }
+ }
+}