-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrobotgraphicsitem.cpp
More file actions
101 lines (83 loc) · 3.57 KB
/
robotgraphicsitem.cpp
File metadata and controls
101 lines (83 loc) · 3.57 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "robotgraphicsitem.h"
RobotGraphicsItem::RobotGraphicsItem(const QPixmap &pixmap, QGraphicsItem *parent, QList<QPoint> &path, QPoint end) : QGraphicsPixmapItem(pixmap,parent), path(path) {
qDebug("RobotGraphicsItem::RobotGraohicsItem() => called...");
this->path = path;
this->actualPosition = this->path.takeFirst();
this->calculatePosition(this->actualPosition);
this->end = end;
this->isFinished = false;
this->setPos(actualScenePosition.x(),actualScenePosition.y());
qDebug("RobotGraphicsItem::RobotGraohicsItem() => finished...");
}
void RobotGraphicsItem::calculatePosition(QPoint point) {
this->actualPosition = point;
if(this->actualPosition.x() % 2 == 0)
this->actualScenePosition = QPoint(this->actualPosition.x()*54,this->actualPosition.y()*71);
else
this->actualScenePosition = QPoint(this->actualPosition.x()*54,(this->actualPosition.y()*71)+35);
}
QPoint RobotGraphicsItem::takeFirstPathItem() {
return this->path.takeFirst();
}
QPoint RobotGraphicsItem::getActualPosition() {
return this->actualPosition;
}
QPoint RobotGraphicsItem::getScenePosition() {
return this->actualScenePosition;
}
void RobotGraphicsItem::setActualPosition(QPoint terget) {
this->actualPosition = terget;
}
RobotGraphicsItem::~RobotGraphicsItem()
{
}
RobotGraphicsObject::RobotGraphicsObject(const QPixmap &pixmap, QGraphicsItem *parent, QList<QPoint> &path, QPoint end): RobotGraphicsItem(pixmap,parent,path,end){
qDebug("RobotGraphicsObject::RobotGraohicsObject() => called...");
this->posAnimation.setPropertyName("pos");
this->posAnimation.setTargetObject(this);
this->connect(&posAnimation, SIGNAL(finished()), SLOT(animationFinished()));
//this->animationFinished();
//this->posAnimation.start();
qDebug("RobotGraphicsObject::RobotGraohicsObject() => initialized without errors...");
}
RobotGraphicsObject::~RobotGraphicsObject(){
}
void RobotGraphicsObject::animationFinished() {
QList<QPoint> *list = &path;
if(!list->isEmpty()) {
qDebug("RobotGraphicsObject::animationFinished() => called...");
this->posAnimation.setStartValue(this->getPosition());
qDebug("{%d}{%d}", this->getPosition().x(),this->getPosition().y());
QPoint tmp = list->takeFirst();
this->setPosition(tmp);
this->calculatePosition(tmp);
this->posAnimation.setEndValue(this->getPosition());
qDebug("{%d}{%d}", this->getPosition().x(),this->getPosition().y());
this->posAnimation.start();
qDebug("RobotGraphicsObject::animationFinished() => running the animation...");
}
}
void RobotGraphicsObject::animation(QPoint start, QPoint end) {
qDebug("RobotGraphicsObject::animation() => called...");
this->setPosition(start);
this->calculatePosition(start);
this->posAnimation.setStartValue(this->getPosition());
qDebug("{%d}{%d}", this->getPosition().x(),this->getPosition().y());
this->setPosition(end);
this->calculatePosition(end);
this->posAnimation.setEndValue(this->getPosition());
qDebug("{%d}{%d}", this->getPosition().x(),this->getPosition().y());
this->posAnimation.start();
qDebug("RobotGraphicsObject::animation() => running the animation...");
}
QPropertyAnimation RobotGraphicsObject::getAnimation() {
//return this->posAnimation;
}
QPoint RobotGraphicsObject::getPosition() {
return this->getScenePosition();
}
void RobotGraphicsObject::setPosition(QPoint target) {
this->setActualPosition(target);
this->calculatePosition(target);
this->setPos(this->getPosition());
}