aboutsummaryrefslogtreecommitdiff
path: root/src/LevelSelectionScene.cpp
blob: 02516b1292f426152d01772d24d8713aac5a1637 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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();
}