forked from capocattiveria/Super_mario
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFixedBlock.cpp
70 lines (51 loc) · 1.78 KB
/
FixedBlock.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
#include "FixedBlock.h"
#include "Sprites.h"
#include <QPainter>
#include <iostream>
FixedBlock::FixedBlock(QPoint pos, std::string _type) : Inert()
{
if (_type != "ice" && _type != "wood" && _type !="collider-up" && _type !="collider-side")
std::cerr << "Type not valid\n";
// set position
setPos(pos);
if (_type == "collider-up")
{
QPixmap pixmap = Sprites::instance()->get("collider-up");
// make background color (224, 163, 216) transparent
pixmap.setMask(pixmap.createMaskFromColor(QColor(237, 28, 36)));
setPixmap(pixmap);
}
else if (_type == "collider-side")
{
QPixmap pixmap = Sprites::instance()->get("collider-side");
// make background color (224, 163, 216) transparent
pixmap.setMask(pixmap.createMaskFromColor(QColor(237, 28, 36)));
setPixmap(pixmap);
}
else if (_type == "ice")
{
// create collage texture
QPixmap collage(32, 32);
QPainter painter(&collage);
//border
painter.drawPixmap( 0, 0, Sprites::instance()->get("ice-block-NW"));
painter.drawPixmap(16, 0, Sprites::instance()->get("ice-block-NE"));
painter.drawPixmap( 0, 16, Sprites::instance()->get("ice-block-SW"));
painter.drawPixmap(16, 16, Sprites::instance()->get("ice-block-SE"));
// end painting (necessary for setMask)
painter.end();
// make background color (224, 163, 216) transparent
collage.setMask(collage.createMaskFromColor(QColor(224, 163, 216)));
// set pixmap
setPixmap(collage);
}
else
{
QPixmap pixmap = Sprites::instance()->get("wood-block");
// make background color (224, 163, 216) transparent
pixmap.setMask(pixmap.createMaskFromColor(QColor(224, 163, 216)));
setPixmap(pixmap);
}
// set a high z-value so it is displayed on top of other objects
setZValue(2);
}