106 lines
2.2 KiB
C++
106 lines
2.2 KiB
C++
#include "aliens.h"
|
|
|
|
Aliens::Aliens(games *parent)
|
|
{
|
|
game = parent;
|
|
int x = loadPixmaps();
|
|
if (x > 0) qDebug() << "Found" << x << "alien pictures";
|
|
else qDebug() << "ERROR alien pictures not found!!";
|
|
testAlien = new Alien(game);
|
|
}
|
|
|
|
|
|
bool Aliens::AddAlien()
|
|
{
|
|
curAliens.push_back(new Alien(game,0.2));
|
|
return !curAliens.isEmpty();
|
|
}
|
|
|
|
/*
|
|
void Aliens::clearAliens()
|
|
{
|
|
curAliens.clear();
|
|
}
|
|
*/
|
|
|
|
|
|
bool Aliens::retrace()
|
|
{
|
|
for (int i = 0; i < game->size.width(); i++)
|
|
{
|
|
for (int j = 0; j < game->size.height(); j++)
|
|
{
|
|
if (game->Cells[i][j] == 5) game->Cells[i][j]=0;
|
|
}
|
|
}
|
|
if (!testAlien->RecreatePath()) return false;
|
|
for (int i=0; i < curAliens.size(); i ++)
|
|
if (!curAliens.at(i)->RecreatePath()) return false;
|
|
return true;
|
|
}
|
|
|
|
|
|
int Aliens::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;
|
|
}
|
|
return AlienPix.size();
|
|
}
|
|
|
|
|
|
void Aliens::drawAliens()
|
|
{
|
|
int n=0;
|
|
while (n < curAliens.size())
|
|
{
|
|
if (!curAliens.at(n)->update()) DelAlien(n);
|
|
else
|
|
{
|
|
if (curAliens.at(n)->indexPix() >= AlienPix.size())
|
|
curAliens.at(n)->resetIndexPic();
|
|
n++;
|
|
}
|
|
}
|
|
QPainter painter(game->buff);
|
|
QPen pen(QColor(80,200,100));
|
|
QBrush brush(QColor(230,10,10),Qt::SolidPattern);
|
|
painter.setPen(pen);
|
|
painter.setBrush(brush);
|
|
painter.drawPixmap(0,0,*game->background);
|
|
for (int i=0; i < curAliens.size(); i ++)
|
|
{
|
|
/*for (int j = 0; j < curAliens.at(i)->path.size(); j++)
|
|
painter.drawEllipse(curAliens.at(i)->path.at(j).x()*game->cellsize +4,
|
|
curAliens.at(i)->path.at(j).y()*game->cellsize +4,
|
|
game->cellsize - 8,
|
|
game->cellsize - 8);*/
|
|
painter.save();
|
|
painter.translate(curAliens.at(i)->Pos().x()+game->cellsize/2,
|
|
curAliens.at(i)->Pos().y()+game->cellsize/2);
|
|
painter.rotate(curAliens.at(i)->Angl());
|
|
painter.drawPixmap(-game->cellsize, -game->cellsize,
|
|
game->cellsize*2, game->cellsize*2,
|
|
AlienPix[curAliens.at(i)->indexPix()]);
|
|
painter.restore();
|
|
}
|
|
painter.end();
|
|
}
|
|
|
|
|
|
void Aliens::DelAlien(int index)
|
|
{
|
|
curAliens.remove(index);
|
|
}
|