aboutsummaryrefslogtreecommitdiff
path: root/src/LevelSelectionScene.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/LevelSelectionScene.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/LevelSelectionScene.cpp')
-rw-r--r--src/LevelSelectionScene.cpp98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/LevelSelectionScene.cpp b/src/LevelSelectionScene.cpp
new file mode 100644
index 0000000..02516b1
--- /dev/null
+++ b/src/LevelSelectionScene.cpp
@@ -0,0 +1,98 @@
+#include <QApplication>
+#include <QDir>
+#include <QSettings>
+#include <QDebug>
+
+#include "ParallaxScrollerStatic.h"
+#include "GraphicsButtonObject.h"
+#include "GameView.h"
+#include "ActionScene.h"
+
+#include "LevelSelectionScene.h"
+
+LevelSelectionScene::LevelSelectionScene(const QString &name, const QRectF &rect, GameView *parent)
+ : GameScene(name, parent)
+{
+ setSceneRect(rect);
+
+ QString appDir = qApp->applicationDirPath();
+
+ m_background = new ParallaxScrollerStatic(this);
+ m_background->setLayerWidth(rect.width());
+ m_background->addParallaxScrollItem(QString(appDir + "/gfx/bg/layer1.png"), QPointF(0,0), -2, 6);
+ m_background->addParallaxScrollItem(QString(appDir + "/gfx/bg/layer2.png"), QPointF(0,0), -1, 4);
+
+ initializeScene();
+}
+
+LevelSelectionScene::~LevelSelectionScene()
+{
+ delete m_background;
+}
+
+void LevelSelectionScene::initializeScene()
+{
+ addTitle("Level Selection");
+
+ QSettings settings;
+
+ QDir levelDirectory(settings.value("path/levels").toString());
+
+ /* TODO: check levels directory for levels (should be 6) and create corresponding buttons
+ that react when pressed and lauch the level
+ */
+ int yoff = 200;
+ int xoff = 50;
+ int count = 1;
+
+ Q_FOREACH(QString f, levelDirectory.entryList(QDir::Files, QDir::Name))
+ {
+ QString lvlNum;
+ lvlNum.setNum(count);
+ GraphicsButtonObject *btn = new GraphicsButtonObject(lvlNum, 0, this);
+ btn->setPos(210 + xoff, yoff);
+ btn->setProperty("level_path", levelDirectory.filePath(f));
+
+ qDebug() << levelDirectory.filePath(f);
+
+ connect(btn, SIGNAL(clicked()), this, SLOT(levelSelection()));
+
+// if(count % 4 == 0)
+// {
+// yoff += btn->boundingRect().bottom() + 20;
+// xoff = 50;
+// }
+
+ count++;
+ //xoff += btn->boundingRect().bottom() + 20;
+ yoff += btn->boundingRect().bottom() + 10;
+ }
+
+ GraphicsButtonObject *btn;
+ btn = new GraphicsButtonObject(QPixmap(QApplication::applicationDirPath() + "/gfx/buttons/back-arrow1.png"), 0, this);
+ btn->setPressedPixmap(QPixmap(QApplication::applicationDirPath() + "/gfx/buttons/back-arrow2.png"));
+ btn->setPos(720, 400);
+ btn->setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
+ btn->setZValue(2);
+
+ connect(btn, SIGNAL(clicked()), gameView(), SLOT(showMenuScene()));
+}
+
+void LevelSelectionScene::levelSelection()
+{
+ QVariant level_path = sender()->property("level_path");
+
+ Q_ASSERT(level_path.isValid());
+
+ QString levelPath = level_path.toString();
+
+ gameView()->getActionScene()->loadMap(levelPath);
+ gameView()->showActionScene();
+}
+
+void LevelSelectionScene::updateLogic()
+{
+ advance();
+ update();
+}
+