-
Notifications
You must be signed in to change notification settings - Fork 1
/
randomkilltool.cpp
55 lines (40 loc) · 1.13 KB
/
randomkilltool.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
#include "randomkilltool.h"
#include "gamesound.h"
#include "gamebonus.h"
#include "scene_if.h"
RandomKillTool::RandomKillTool(int x, int y, int score) : GameTool(x,y, score, "bolt")
{
bonusInfo = new BonusInfo(1000, myPixmap, tr("Bolt"),
tr("Randomly removes items from the field"));
}
bool RandomKillTool::checkToolClick()
{
if (myProgress++ == 10)
{
myProgress = 0;
return false;
}
// skip every 2nd frame
if (myProgress & 1)
return true;
const PlaceInfo *data = scene->data();
const int max = MAX_COLS*MAX_ROWS;
QList<int> list;
for (int i = 0; i < max; i++)
{
if (data[i].itemCanBeHighlighted())
list.append(i);
}
for (int i = 0; i < 5; i++)
{
int i1 = list.at(qrand() % list.count());
list.removeAt(i1);
int row = i1 / MAX_COLS;
int col = i1 % MAX_COLS;
scene->removeAndCountItem(row, col);
scene->createPixmapPopup(scene->col2x(col), scene->row2y(row), 0, 5, myPixmap, 5);
// scene->createPixmapPopup(scene->col2x(col), scene->row2y(row), 0, -5, myPixmap, 5);
}
sndEngine->playSound(GameSound::sndRandomKill);
return true;
}