-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathluckyblock.cpp
80 lines (66 loc) · 1.83 KB
/
luckyblock.cpp
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
#include "luckyblock.h"
#include "header.h"
#include "roomba.h"
#include "player.h"
#include "powerup.h"
#include <QDebug>
LuckyBlock::LuckyBlock()
{
}
LuckyBlock::LuckyBlock(int x, int y, const QMap<QString, Animation *> &animations, int obj)
{
QRectF hitbox(x*constants::TILE_WIDTH, y*constants::TILE_HEIGHT, constants::TILE_WIDTH, constants::TILE_HEIGHT);
QRectF posImage(x*constants::TILE_WIDTH, y*constants::TILE_HEIGHT, constants::TILE_WIDTH, constants::TILE_HEIGHT);
setImagePos(posImage);
setHitbox(hitbox);
addAnimation(animations["lucky"]);
addAnimation(animations["lucky_used"]);
setHealth(1);
objContained = obj;
}
void LuckyBlock::update(Level * const level)
{
if(activatedFor == 6) {
setVectorY(-getVectorY());
}
QRect limit(0, 0, level->getNbCols()*constants::TILE_WIDTH, level->getNbRows()*constants::TILE_HEIGHT);
move(level, limit);
if(activatedFor == 10) {
setVectorY(0);
setAnimPos(1);
}
if(activatedFor>0 && activatedFor<10) {
activatedFor++;
}
}
void LuckyBlock::collide(LivingEntity *e, Level * const l)
{
e->collide(this, l);
}
void LuckyBlock::collide(Roomba *r, Level * const l)
{
}
void LuckyBlock::collide(Player *p, Level * const l)
{
}
void LuckyBlock::endTurn()
{
}
void LuckyBlock::move(Level * const level, QRect limit)
{
QRectF pos = getHitbox();
setPosTmp(pos.left(), pos.top()+getVectorY());
validatePos();
}
void LuckyBlock::dropItem(Level * l)
{
if(getHealth()>0) {
setVectorY(-0.05*constants::TILE_HEIGHT);
activatedFor=1;
setHealth(0);
if(objContained == 1) {
PowerUp * pu = new PowerUp(getHitbox().left() + constants::TILE_WIDTH/4, getHitbox().top()-constants::TILE_HEIGHT/2, l->getAnimationMap()["bolt"]);
l->addLivingEntity(pu);
}
}
}