diff --git a/ad_graphics.cpp b/ad_graphics.cpp index fa99cc3..e5633d1 100644 --- a/ad_graphics.cpp +++ b/ad_graphics.cpp @@ -51,7 +51,8 @@ void AD_Graphics::drawBackground(QPainter * p, const QRectF & ) brush.setColor(Qt::white); brush.setStyle(Qt::SolidPattern); int cel = data->map->cells().at(i).at(j); - if (cel == Map::Wall) { + if (cel == Map::Wall) + { pen.setColor(Qt::black); brush.setColor(Qt::black); } @@ -63,35 +64,39 @@ void AD_Graphics::drawBackground(QPainter * p, const QRectF & ) // pen.setColor(Qt::yellow); // brush.setColor(Qt::yellow); // } - if (cel >= Map::Player) { - pen.setColor(QColor(cel%255,(cel*100)%255,(cel+100)%255,50)); - brush.setColor(QColor(cel%255,(cel*100)%255,(cel+100)%255,50)); + if (cel >= Map::Player || (cel <= Map::PlayerTower && cel !=Map::Wall)) + { + pen.setColor(QColor(qAbs(cel)%255,(qAbs(cel)*100)%255,(qAbs(cel)+100)%255,50)); + brush.setColor(QColor(qAbs(cel)%255,(qAbs(cel)*100)%255,(qAbs(cel)+100)%255,50)); } p->setPen(pen); p->setBrush(brush); p->drawRect(i*cellSize,j*cellSize,cellSize,cellSize); } } - qDebug() << "t:" << data->curTowers.size(); - for (QHash::iterator i = data->curTowers.begin(); i != data->curTowers.end(); ++i) { + //qDebug() << "t:" << data->curTowers.size(); + for (QHash::iterator i = data->curTowers.begin(); i != data->curTowers.end(); ++i) + { //qDebug() << "draw alien"; //p->rotate(-90); //p->scale(cellSize, cellSize); //p->translate(rec.width()/2, rec.height()/2); //p->rotate(-90); //p->translate(-rec.height()/2, -rec.width()/2); - QBrush brush; - brush.setColor(Qt::darkRed); - brush.setStyle(Qt::DiagCrossPattern); - p->translate((*i).pos * cellSize+QPointF(10,10)); + //QBrush brush; + //brush.setColor(Qt::darkRed); + //brush.setStyle(Qt::DiagCrossPattern); + p->translate((*i).pos * cellSize+QPointF(20,20)); p->rotate((*i).angle); - p->setPen(QColor(0,0,0,0)); - p->setBrush(brush); - p->drawRect(QRect(-10,-10,20,20)); + //p->setPen(QColor(0,0,0,0)); + //p->setBrush(brush); + //p->drawRect(QRect(-10,-10,20,20)); + p->drawImage(QRect(-20,-20,40,40), images[itTowers][0]->at(0)); p->resetTransform(); } - qDebug() << "a:" << data->curAliens.size(); - for (QHash::iterator i = data->curAliens.begin(); i != data->curAliens.end(); ++i) { + //qDebug() << "a:" << data->curAliens.size(); + for (QHash::iterator i = data->curAliens.begin(); i != data->curAliens.end(); ++i) + { //qDebug() << "draw alien"; //p->rotate(-90); //p->scale(cellSize, cellSize); @@ -103,22 +108,24 @@ void AD_Graphics::drawBackground(QPainter * p, const QRectF & ) p->drawImage(QRect(-20,-20,40,40), images[itAliens][0]->at(0)); p->resetTransform(); } - qDebug() << "s:" << data->curSplashes.size(); - for (QHash::iterator i = data->curSplashes.begin(); i != data->curSplashes.end(); ++i) { + //qDebug() << "s:" << data->curSplashes.size(); + for (QHash::iterator i = data->curSplashes.begin(); i != data->curSplashes.end(); ++i) + { //qDebug() << "draw alien"; //p->rotate(-90); //p->scale(cellSize, cellSize); //p->translate(rec.width()/2, rec.height()/2); //p->rotate(-90); //p->translate(-rec.height()/2, -rec.width()/2); - QBrush brush; - brush.setColor(Qt::red); - brush.setStyle(Qt::SolidPattern); + //QBrush brush; + //brush.setColor(Qt::red); + //brush.setStyle(Qt::SolidPattern); p->translate((*i).pos * cellSize+QPointF(10,10)); p->rotate((*i).angle); - p->setBrush(brush); - p->setPen(QColor(0,0,0,0)); - p->drawEllipse(QPoint(),5,5); + //p->setBrush(brush); + //p->setPen(QColor(0,0,0,0)); + //p->drawEllipse(QPoint(),5,5); + p->drawImage(QRect(-10,-10,20,20), images[itSplashes][0]->at(0)); p->resetTransform(); } } @@ -138,8 +145,12 @@ void AD_Graphics::loadImages() for (int i = 0; i < images.size(); i++) { switch ((imagesType)i) { case itAliens: - images[i].push_back(new Animation(":/images/images/Aliens/Al_00_")); + images[i].push_back(new Animation(":/images/images/Aliens/Al_00_0.png")); break; + case itTowers: + images[i].push_back(new Animation(":/images/images/Towers/01_6.png")); + case itSplashes: + images[i].push_back(new Animation(":/images/images/Splashes/Rocket.png")); default: break; } } diff --git a/adcore.cpp b/adcore.cpp index 9e579a6..e70e382 100644 --- a/adcore.cpp +++ b/adcore.cpp @@ -24,11 +24,13 @@ AD_Core::AD_Core(QObject *parent) : // adaliens->addAlien(0); // adaliens->AddAlien(0); // adaliens->AddAlien(0); - adtowers->addTower(0,1,QPoint(9,9)); - for (int i=0; imap->rect().width(),addata->map->rect().height()); i++) - adtowers->addTower(0,1,QPoint(i,i)); - for (int i=0; imap->rect().width(),addata->map->rect().height());i++) - adtowers->addTower(0,0,QPoint(addata->map->rect().width()-2,i)); + adtowers->addTower(0,0,QPoint(19,7)); + for (int i=0; i<20;i++) + adtowers->addTower(0,0,QPoint(8,20-i)); + for (int i=0; i<20; i++) + adtowers->addTower(0,1,QPoint(12,i)); + for (int i=0; i<20;i++) + adtowers->addTower(0,0,QPoint(16,20-i)); waveInProgress = false; startTimer(50); } diff --git a/animation.cpp b/animation.cpp index ee3d461..8fc3ee3 100644 --- a/animation.cpp +++ b/animation.cpp @@ -5,14 +5,18 @@ Animation::Animation(const QString & path) { - int i = 0; - QString s = path + QString::number(i) + ".png"; - //qDebug() << "check " << s; - while (QFile::exists(s)) { - images.push_back(new QImage(s)); - s = path + QString::number(++i) + ".png"; +// int i = 0; +// QString s = path + QString::number(i) + ".png"; +// //qDebug() << "check " << s; +// while (QFile::exists(s)) { +// images.push_back(new QImage(s)); +// s = path + QString::number(++i) + ".png"; +// } +// qDebug() << "found " << images.size() << " images"; + if (QFile::exists(path)) + { + images.push_back(new QImage(path)); } - qDebug() << "found " << images.size() << " images"; } diff --git a/data2.xml b/data2.xml index 7806e97..2dc905d 100644 --- a/data2.xml +++ b/data2.xml @@ -1,9 +1,9 @@ - - - + + + @@ -61,8 +61,8 @@ - - + + @@ -73,7 +73,7 @@ - + diff --git a/images.qrc b/images.qrc index 4195584..cf225a4 100644 --- a/images.qrc +++ b/images.qrc @@ -20,5 +20,8 @@ images/Aliens/Al_00_17.png images/Aliens/Al_00_18.png images/Aliens/Al_00_19.png + images/Towers/00_0.png + images/Splashes/Rocket.png + images/Towers/01_6.png diff --git a/map.cpp b/map.cpp index 1e35539..1062ee8 100644 --- a/map.cpp +++ b/map.cpp @@ -80,27 +80,44 @@ void Map::removeAliensPath() bool Map::addTowerOnMap(int playerId, QPoint pos) { - qDebug() << pos; + //qDebug() << pos; if (playerId < 0 || playerId > players) return false; QRect r(QPoint(),mapSize); - if (!r.contains(pos)) return false; - if (Cells[pos.x()][pos.y()]==Player+playerId) + if (!r.contains(pos) || + !r.contains(pos+QPoint(1,0)) || + !r.contains(pos+QPoint(0,1)) || + !r.contains(pos+QPoint(1,1))) return false; + if (Cells[pos.x()][pos.y()]==Player+playerId && + Cells[pos.x()+1][pos.y()]==Player+playerId && + Cells[pos.x()][pos.y()+1]==Player+playerId && + Cells[pos.x()+1][pos.y()+1]==Player+playerId) { Cells[pos.x()][pos.y()]=PlayerTower-playerId; + Cells[pos.x()+1][pos.y()]=PlayerTower-playerId; + Cells[pos.x()][pos.y()+1]=PlayerTower-playerId; + Cells[pos.x()+1][pos.y()+1]=PlayerTower-playerId; for (int i=0; i dead; + for (QHash::iterator i = gameData->curAliens.begin(); i != gameData->curAliens.end(); ++i) + { + if (distance2(pos, (*i).pos) < srctrig.radius*srctrig.radius) + { + (*i).health -= srctrig.damage; + //qDebug() << "health=" << hh; + if ((*i).health < 0) dead.append((*i).id); + } + } + for (int i=0; icurAliens.remove(dead.at(i)); +} diff --git a/splashes.h b/splashes.h index 01f809b..d0af155 100644 --- a/splashes.h +++ b/splashes.h @@ -19,6 +19,8 @@ public slots: private: Game_Data *gameData; int nextId; + + void processTrigger(srcTriggerType srctrig,QPointF pos); }; #endif // SPLASHES_H diff --git a/towers.cpp b/towers.cpp index 8445e0e..f1919db 100644 --- a/towers.cpp +++ b/towers.cpp @@ -34,7 +34,7 @@ bool Towers::addTower(int playerId, int srcId, QPoint pos) if (gameData->map->addTowerOnMap(playerId,pos)) { tw.pos = pos; - qDebug() << "tw" << pos; + //qDebug() << "tw" << pos; //gameData->map->printMap(); gameData->curTowers.insert(tw.pos,tw); return true;