-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgame.cpp
More file actions
104 lines (81 loc) · 2.38 KB
/
game.cpp
File metadata and controls
104 lines (81 loc) · 2.38 KB
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
99
100
101
102
103
104
#include "game.h"
game::game(View* gameView, QObject *parent) :
QObject(parent)
{
this->gameView = gameView;
//TODO DRAW WELCOME screen
}
void game::startDraw(){
gameView->setBackground(QColor("Black"));
}
void game::drawLine(QPolygonF line){
if(paintOnce){
gameView->setBackground(QColor("Black"));
path.addPolygon(line.mid(0,line.length()/2));
QGraphicsItem* graphicsLine = new GameLine(line); //Filled line
gameView->addItem(graphicsLine);
enemyHelp = new enemyHelper(&path);
wavesMgr = new waveManager(&enemies,gameView,enemyHelp,this);
QObject::connect(wavesMgr, SIGNAL(newWave()), this, SLOT(wave()));
QObject::connect(wavesMgr, SIGNAL(enemyDown(baseEnemy*)), this, SLOT(enemyDown(baseEnemy*)));
//QObject::connect(wavesMgr) (times between waves)
QObject::connect(&moneyTimer, SIGNAL(timeout()), this, SLOT(UpdateMoney()));
moneyTimer.start(6000);
gameStarted = true;
paintOnce = false;
}
}
void game::glyphLoc(QPointF loc, int id){
if(gameStarted){
if(towers.contains(id)){
towers[id]->setCenterPos(loc);
} else {
if(money >= 2000){
addTower(id);
towers[id]->setCenterPos(loc);
money = money - 2000;
emit updateUI(UIupdate::money);
}
}
}else{
//detect start / stop glyph
}
}
void game::addTower(int id) {
baseTower* tower = new baseTower(0,0,&enemies);
tower->setFlag(QGraphicsItem::ItemIsMovable, true);
towers.insert(id,tower);
gameView->addItem(tower);
}
void game::addLaserTower(int id) {
laserTower* tower2 = new laserTower(0,0,&enemies);
tower2->setFlag(QGraphicsItem::ItemIsMovable, true);
towers.insert(id,tower2);
gameView->addItem(tower2);
}
void game::enemyDown(baseEnemy *enemy){
enemies.removeOne(enemy);
if(!enemy->getKilled()){
life--;
emit updateUI(UIupdate::life);
//TODO more substraction based on enemy
}
enemy->deleteLater();
}
void game::wave(){
wave_stat++;
emit updateUI(UIupdate::wave);
}
void game::UpdateMoney(){
money += 250; //add money after every wave
emit updateUI(UIupdate::money);
}
qreal game::getLife(){
return life;
}
qreal game::getMoney(){
return money;
}
qreal game::getWave(){
return wave_stat;
}