#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*))); connect(adtowers,SIGNAL(shot(srcSplashType,int,TowerType)),adsplashes,SLOT(addSplash(srcSplashType,int,TowerType))); // 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)); 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--; } }