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();
}
|