|
@@ -31,14 +31,17 @@ void RepaintAgent::init()
|
31
|
31
|
|
32
|
32
|
void RepaintAgent::move()
|
33
|
33
|
{
|
|
34
|
+ int vXMove;
|
|
35
|
+ int vYMove;
|
|
36
|
+ int fMovementsCount = fMovements.size();
|
34
|
37
|
|
35
|
38
|
fValidMovementIndexes.clear();
|
36
|
|
- for (int i = 0; i < static_cast<int>(fMovements.size()); i++)
|
|
39
|
+ for (int i = 0; i < static_cast<int>(fMovementsCount); i++)
|
37
|
40
|
{
|
38
|
|
- int vXMove = fMovements.at(i).at(0);
|
39
|
|
- int vYMove = fMovements.at(i).at(1);
|
|
41
|
+ vXMove = fXPos + fMovements.at(i).at(0);
|
|
42
|
+ vYMove = fYPos + fMovements.at(i).at(1);
|
40
|
43
|
if (
|
41
|
|
- colorCloseEnough(fEnvironment->getCellOriginal(fXPos + vXMove, fYPos + vYMove)) && fEnvironment->getCell(fXPos + vXMove, fYPos + vYMove) != fColor.toInteger())
|
|
44
|
+ vXMove > 0 && vYMove > 0 && vXMove < fEnvWidth && vYMove < fEnvHeight && fEnvironment->getCell(vXMove, vYMove) != fColor.toInteger() && colorCloseEnough(fEnvironment->getCellOriginal(vXMove, vYMove)))
|
42
|
45
|
{
|
43
|
46
|
fValidMovementIndexes.push_back(i);
|
44
|
47
|
}
|
|
@@ -49,6 +52,7 @@ void RepaintAgent::move()
|
49
|
52
|
fCurrentMovement = fMovements.at(fValidMovementIndexes.at(vRandIndex));
|
50
|
53
|
fXPos += fCurrentMovement.at(0);
|
51
|
54
|
fYPos += fCurrentMovement.at(1);
|
|
55
|
+
|
52
|
56
|
}
|
53
|
57
|
else
|
54
|
58
|
{
|
|
@@ -70,11 +74,14 @@ void RepaintAgent::paint()
|
70
|
74
|
int vHalfBrush = fDotSize / 2;
|
71
|
75
|
int vXLoopIndex = fXPos - vHalfBrush;
|
72
|
76
|
int vYLoopIndex = fYPos - vHalfBrush;
|
73
|
|
- while (vXLoopIndex < (fXPos + vHalfBrush))
|
|
77
|
+ int vXMaxIndex = fXPos + vHalfBrush;
|
|
78
|
+ int vYMaxIndex = fYPos + vHalfBrush;
|
|
79
|
+ while (vXLoopIndex < (vXMaxIndex))
|
74
|
80
|
{
|
75
|
|
- while (vYLoopIndex < fYPos + vHalfBrush)
|
|
81
|
+ while (vYLoopIndex < (vYMaxIndex))
|
76
|
82
|
{
|
77
|
83
|
fEnvironment->paint(vXLoopIndex, vYLoopIndex, fColor);
|
|
84
|
+
|
78
|
85
|
vYLoopIndex++;
|
79
|
86
|
}
|
80
|
87
|
vYLoopIndex = fYPos - vHalfBrush;
|