#include <edge.h>


Edge::Edge(Node* nodeA_, Node* nodeB_):QGraphicsItem(0), nodeA(nodeA_), nodeB(nodeB_)
{

	
	objectType=edge;
	inProgress=0;
	
	rotation=(atan2(nodeA->centerX-nodeB->centerX,nodeA->centerY-nodeB->centerY))*180.0/PI;
	
	length=sqrt(pow(nodeA->centerX-nodeB->centerX,2)+pow(nodeA->centerY-nodeB->centerY,2));
	
	setPos(nodeA->centerX,nodeA->centerY);
	setRotation(180-rotation);
}

QRectF Edge::boundingRect() const
{
//	 return QRectF(0,-5,length,15);
	 return QRectF(0,-5,15,length);
}

 QPainterPath Edge::shape() const
{

	QPainterPath path;

	path.addRect(boundingRect());
	
	return path;

}

void Edge::addBonus(int value_)
{

	qreal distance=0.5*length;
	
	std::cout<<length<<std::endl;
	bonuses.push_back(new Bonus(value_,nodeA->centerX+distance*tan(rotation),100));

}


void Edge::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{

	setZValue(-1);
	painter->save();
	
	QPen pen;
	pen.setWidth(6);
	pen.setColor(inProgress? Qt::green : Qt::red);
	
	painter->setPen(pen);
	
	painter->drawLine(0,0,0,length);
//	painter->drawRect(boundingRect());
	painter->restore();
	
}


void Edge::advance(int step)
{
	if (!step)
		return;

	rotation=(atan2(nodeA->centerX-nodeB->centerX,nodeA->centerY-nodeB->centerY))*180.0/PI;
	
	length=sqrt(pow(nodeA->centerX-nodeB->centerX,2)+pow(nodeA->centerY-nodeB->centerY,2));
	
	setPos(nodeA->centerX,nodeA->centerY);
	setRotation(180-rotation);


}

			
