-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtetrispanel.cpp
More file actions
executable file
·84 lines (69 loc) · 1.77 KB
/
Copy pathtetrispanel.cpp
File metadata and controls
executable file
·84 lines (69 loc) · 1.77 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
#include "tetrispanel.h"
#include "tetris.h"
#include "tetrispainter.h"
#include "menupainter.h"
TetrisPanel::TetrisPanel(QApplication& app, QWidget *parent) :
QWidget(parent) {
//Tetris tet;
//tet.swap();
app.installEventFilter(this);
QApplication::setKeyboardInputInterval(0);
main = new MenuPainter(this);
mtetris = new TetrisPainter(this);
current = main;
setFixedSize(800, 500);
this->setMouseTracking(true);
current->repaint();
}
TetrisPanel::~TetrisPanel() {
delete main;
delete mtetris;
}
QSize TetrisPanel::sizeHint() const {
return QSize(800, 500);
}
bool TetrisPanel::eventFilter(QObject *, QEvent *ev) {
if (ev->type() == QEvent::ActivationChange &&
current == mtetris &&
!mtetris->paused)
mtetris->paused = !mtetris->paused;
return false;
}
void TetrisPanel::paintEvent(QPaintEvent *) {
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
current->paint(painter);
}
void TetrisPanel::keyPressEvent(QKeyEvent *ev) {
current->key(ev);
}
void TetrisPanel::mouseMoveEvent(QMouseEvent *ev) {
current->mouseMove(ev);
}
void TetrisPanel::mousePressEvent(QMouseEvent *ev) {
current->mousePress(ev);
}
void TetrisPanel::focusOutEvent(QFocusEvent *) {
if (current == mtetris)
mtetris->paused = true;
}
void TetrisPanel::openMenu() {
current = main;
repaint();
}
void TetrisPanel::openTetris() {
current = mtetris;
mtetris->paused = false;
repaint();
}
void TetrisPanel::restartTetris() {
current = mtetris;
if (mtetris->started)
mtetris->stopTetris();
mtetris->start();
mtetris->paused = false;
repaint();
}
void TetrisPanel::setStarted(bool started) {
main->setStarted(started);
}