#include "adcore.h" AD_Core::AD_Core(QObject *parent) : QThread(parent) { step = 0; //admap = new Map(1); //addata = new Game_Data(admap); adloader = new Loader(); adloader->load("data2.xml"); //adloader->save("data2.xml"); addata = adloader->loadlevel(1); if (addata != 0) qDebug("Sucsess"); else qFatal("Error"); Player * pl1 = new Player(0); // Player * pl2 = new Player(0); addata->players.push_back(pl1); // addata->players.push_back(pl2); adaliens = new Aliens(addata); adtowers = new Towers(addata); adsplashes = new Splashes(addata); connect(addata->map,SIGNAL(recreateAlienPath(bool*)),adaliens,SLOT(retrace(bool*))); // adaliens->addAlien(0); // adaliens->AddAlien(0); // adaliens->AddAlien(0); // for (int i=0; imapsize.width(),admap->mapsize.height()); i++) // adtowers->AddTower(0,0,QPoint(i,i)); // for (int i=0; imapsize.height();i++) // adtowers->AddTower(1,0,QPoint(admap->mapsize.width()-2,i)); waveInProgress = false; startTimer(50); } void AD_Core::next() { adtowers->update(); adsplashes->update(); adaliens->update(); waveProcessing(); step++; } void AD_Core::timerEvent(QTimerEvent * ) { next(); } void AD_Core::nextWave() { if (waveInProgress) return; if (addata->curWave >= addata->waves.size()) { qDebug("level finished"); return; } //wavetime = addata->waves.at(addata->curWave).timeout; qDebug() << tr("Next wave %1").arg(addata->curWave+1); wavetime = 0; waveInProgress = true; } void AD_Core::waveProcessing() { if (!waveInProgress) return; if (wavetime <= 0) { for (int i=0; iwaves.at(addata->curWave).counts.size(); i++) { if (addata->waves.at(addata->curWave).counts.at(i) > 0) { adaliens->addAlien(addata->waves.at(addata->curWave).types.at(i)); addata->waves[addata->curWave].counts[i]--; wavetime = addata->waves.at(addata->curWave).timeout; return; } } addata->curWave++; waveInProgress = false; } else { wavetime--; } }