hm.... new global restruct... i think it last!

This commit is contained in:
2010-07-28 23:07:42 +04:00
parent 52a5384e6f
commit 2869e716b3
32 changed files with 721 additions and 1375 deletions

View File

@@ -1,105 +1,13 @@
#include "aliens.h"
Aliens::Aliens(games *parent)
Aliens::Aliens(Game_Data *gamedata, QObject *parent) :
QObject(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);
GameData = gamedata;
}
bool Aliens::AddAlien()
void Aliens::update()
{
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);
}