#include "adpainter.h" adpainter::adpainter(int width, int height, int adpcellsize) { cellsize = adpcellsize; buff = new QPixmap(width,height); background = new QPixmap(width,height); pen = new QPen(); brush = new QBrush(); loadPixmaps(); //AnimAlien = 0; //StepAlien = 0; } void adpainter::loadPixmaps() { QString str; QPixmap tmpAlPixmap; int i=1; str.setNum(i); while (i != 0) { str.setNum(i); tmpAlPixmap.load(":/aliens/images/Aliens/Al_00_" + str + ".png"); if (!tmpAlPixmap.isNull()) { AlienPix.push_back(tmpAlPixmap); tmpAlPixmap = 0; i++; } else i = 0; } qDebug() << "pictures:" << AlienPix.size(); } void adpainter::clear() { QPainter painter(background); pen->setColor(QColor::fromRgb(qRgb(150,150,150))); painter.setPen(*pen); painter.fillRect(buff->rect(),QColor::fromRgb(qRgb(150,150,150))); painter.end(); } void adpainter::drawgrid() { int i; QPainter painter(background); pen->setColor(QColor::fromRgb(qRgb(100,100,100))); painter.setPen(*pen); for (i = 0;iwidth()/cellsize;i++) { painter.drawLine(i*cellsize,0,i*cellsize,background->height()); } for (i = 0;iheight()/cellsize;i++) { painter.drawLine(0,i*cellsize,background->width(),i*cellsize); } painter.end(); } void adpainter::drawAlien(Alien * al) { //float tmpdx,tmpdy,arctg,tmpdx1,tmpdy1; //unsigned char dd[4]; //int gg; //arctg = 0; //qDebug() << path.size(); //QTransform rotated; al->update(); if (al->indexPix() >= AlienPix.size()) al->resetIndexPic(); QPainter painter(buff); pen->setColor(QColor::fromRgb(qRgb(80,200,100))); brush->setColor(QColor::fromRgb(qRgb(230,10,10))); brush->setStyle(Qt::SolidPattern); painter.setPen(*pen); painter.setBrush(*brush); painter.drawPixmap(0,0,*background); for (int i = 0; i < al->path.size(); i++){ painter.drawEllipse(al->path.at(i).x() * cellsize +4, al->path.at(i).y() * cellsize +4, cellsize - 8, cellsize - 8); } /*tmpdx = position->pnt.x() - path[StepAlien].x()*cellsize; tmpdy = position->pnt.y() - path[StepAlien].y()*cellsize; if (StepAlien + 1 < path.size()) { tmpdx1 = position->pnt.x() - path[StepAlien+1].x()*cellsize; tmpdy1 = position->pnt.y() - path[StepAlien+1].y()*cellsize; } arctg = atanf(tmpdx1/tmpdy1); //memcpy(&gg,&arctg,4); position->angle = 180*(-arctg)/3.1415; if (tmpdy1 < 0) position->angle = 180 + position->angle; if (AlienPix.size() > 0) {*/ //painter.rotate((arctg/3.1415)*180); //rotated.rotateRadians(arctg/* + 3.1415/2*/); //qDebug() << "angle:" << position->angle; //rotated.reset(); /*if (qAbs(tmpdx) < 1 && qAbs(tmpdy) < 1) StepAlien++; else { if (qAbs(tmpdx) <= qAbs(tmpdy)) { if (tmpdy < 0) { position->pnt.ry()++; //position->angle = - position->angle; } else { position->pnt.ry()--; } } if (qAbs(tmpdx) >= qAbs(tmpdy)) { if (tmpdx < 0) { position->pnt.rx()++; //position->angle = - position->angle; } else position->pnt.rx()--; } }*/ //painter.save(); painter.translate(al->Pos().x()+cellsize/2, al->Pos().y()+cellsize/2); //if (arctg == 0) painter.rotate(90); //memcpy(dd,&gg,4); //dd[0]=0xFF; //qDebug() << "angle:" << position->angle; //qDebug() << dd[0] << dd[1] << dd[2] << dd[3]; painter.rotate(al->Angl()); //position->pnt.setX(path.at(0).x()); //position->pnt.setY(path.at(0).y()); painter.drawPixmap(-cellsize, -cellsize, cellsize*2, cellsize*2, AlienPix[al->indexPix()]); //AnimAlien++; //painter.restore(); //if (AnimAlien >= AlienPix.size()) AnimAlien = 0; //if (StepAlien >= path.size()) StepAlien = 0; //qDebug() << StepAlien; //} painter.end(); } void adpainter::drawcell(QPoint pnt) { QPainter painter(background); pen->setColor(QColor::fromRgb(qRgb(0,0,0))); brush->setColor(QColor::fromRgb(qRgb(0,0,0))); brush->setStyle(Qt::SolidPattern); painter.setPen(*pen); painter.setBrush(*brush); painter.drawRect(pnt.x()*cellsize+1,pnt.y()*cellsize+1,cellsize - 2, cellsize - 2); painter.end(); } void adpainter::clearcell(QPoint pnt) { QPainter painter(background); pen->setColor(QColor::fromRgb(qRgb(150,150,150))); brush->setColor(QColor::fromRgb(qRgb(150,150,150))); brush->setStyle(Qt::SolidPattern); painter.setPen(*pen); painter.setBrush(*brush); painter.drawRect(pnt.x()*cellsize+1,pnt.y()*cellsize+1,cellsize - 2, cellsize - 2); painter.end(); } QPixmap * adpainter::getPixmap() { return buff; }