#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); }