changes in arhitecture, some improvments, much optimising and simplify,
many bagfixes and new graphics engine
This commit is contained in:
52
adcore.cpp
52
adcore.cpp
@@ -4,36 +4,20 @@ AD_Core::AD_Core(QObject *parent) :
|
||||
QThread(parent)
|
||||
{
|
||||
step = 0;
|
||||
//admap = new Map(1);
|
||||
//addata = new Game_Data(admap);
|
||||
Loader * adloader = new Loader();
|
||||
adloader->load("data2.xml");
|
||||
//adloader->save("data2.xml");
|
||||
addata = adloader->loadlevel(1);
|
||||
delete adloader;
|
||||
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(QPoint)),adsplashes,SLOT(addSplash(QPoint)));
|
||||
// adaliens->addAlien(0);
|
||||
// adaliens->AddAlien(0);
|
||||
// adaliens->AddAlien(0);
|
||||
//adtowers->addTower(0,2,QPoint(15,1));
|
||||
for (int i=0; i<20;i++)
|
||||
// adtowers->addTower(0,1,QPoint(8,20-i));
|
||||
// for (int i=0; i<20; i++)
|
||||
// adtowers->addTower(0,0,QPoint(12,i));
|
||||
// for (int i=0; i<20;i++)
|
||||
// adtowers->addTower(0,1,QPoint(16,20-i));
|
||||
connect(addata->map,SIGNAL(recreateAlienPath(bool*)),addata->aliens,SLOT(retrace(bool*)));
|
||||
connect(adtowers,SIGNAL(shot(TowerType)),adsplashes,SLOT(addSplash(TowerType)));
|
||||
connect(adsplashes,SIGNAL(killAlien(int,int)),this,SLOT(killAlien(int,int)));
|
||||
waveInProgress = false;
|
||||
startTimer(20);
|
||||
waveEnd = false;
|
||||
startTimer(50);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +25,7 @@ void AD_Core::next()
|
||||
{
|
||||
adtowers->update();
|
||||
adsplashes->update();
|
||||
adaliens->update();
|
||||
addata->aliens->update();
|
||||
waveProcessing();
|
||||
step++;
|
||||
}
|
||||
@@ -58,6 +42,7 @@ void AD_Core::nextWave()
|
||||
if (waveInProgress) return;
|
||||
if (addata->curWave >= addata->waves.size()) {
|
||||
qDebug("level finished");
|
||||
waveEnd = false;
|
||||
return;
|
||||
}
|
||||
//wavetime = addata->waves.at(addata->curWave).timeout;
|
||||
@@ -69,13 +54,19 @@ void AD_Core::nextWave()
|
||||
|
||||
void AD_Core::waveProcessing()
|
||||
{
|
||||
if (addata->aliens->curAliens.isEmpty() && waveEnd)
|
||||
{
|
||||
addata->players.at(0)->money += addata->waves.at(addata->curWave-1).prise;
|
||||
waveEnd = false;
|
||||
}
|
||||
if (!waveInProgress) return;
|
||||
if (wavetime <= 0) {
|
||||
for (int i=0; i<addata->waves.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->aliens->addAlien(addata->waves.at(addata->curWave).types.at(i));
|
||||
addata->waves[addata->curWave].counts[i]--;
|
||||
wavetime = addata->waves.at(addata->curWave).timeout;
|
||||
waveEnd = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -85,3 +76,18 @@ void AD_Core::waveProcessing()
|
||||
wavetime--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void AD_Core::killAlien(int playerId, int alienId)
|
||||
{
|
||||
addata->players.at(playerId)->money += addata->aliens->curAliens[alienId].src->prise;
|
||||
addata->aliens->delAlien(alienId);
|
||||
}
|
||||
|
||||
|
||||
void AD_Core::setScene(QGraphicsScene *scene)
|
||||
{
|
||||
addata->aliens->setScene(scene);
|
||||
adtowers->setScene(scene);
|
||||
adsplashes->setScene(scene);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user