last changes

This commit is contained in:
2020-06-15 22:22:46 +03:00
parent 5f405ca403
commit 259f321df4
53 changed files with 3368 additions and 842 deletions

View File

@@ -54,7 +54,8 @@ void Splashes::addSplash(srcTowerType *srctower, int id, QPointF pos, QPointF de
else spl.src = &(gameData->srcSplashes[id]);
spl.id = nextId;
spl.towerId = towerId;
spl.PlayerId = srctower->PlayerId;
//qDebug() << "player"<< srctower->PlayerId;
spl.PlayerId = gameData->curTowers[towerId].PlayerId;
spl.AlienId = aim;
spl.pos = pos;
spl.destination = dest;
@@ -125,11 +126,13 @@ void Splashes::update()
bool keep = spl->src->keepOnAlien;
if (spl->src->keepOnAlien)
{
// qDebug() << "keep on alien start";
if (gameData->aliens->curAliens.contains(spl->AlienId))
{
spl->pos = gameData->aliens->curAliens[spl->AlienId].pos;
spl->angle = gameData->aliens->curAliens[spl->AlienId].angle;
} else deadIndexes.insert(spl->id,spl->id);
// qDebug() << "keep on alien done";
} else {
if (spl->src->autoControl && spl->AlienId != -1)
{
@@ -178,10 +181,14 @@ void Splashes::update()
for (QHash<int,DeadAlienIndex>::iterator j = dead.begin();
j != dead.end(); ++j)
{
// qDebug() << j->tower;
gameData->curTowers[j->tower].experience += gameData->curTowers[j->tower].src->expByKill;
// qDebug() << "emit1";
emit killAlien(j->player,j->id);
// qDebug() << "emit2";
}
dead.clear();
// qDebug() << "finish";
}
@@ -200,6 +207,7 @@ void Splashes::doTriggerOnTimer(QHash<int, SplashType>::iterator
for(QList<TriggerOnTimer>::iterator i = spl->trigsOnTimer.begin();
i != spl->trigsOnTimer.end(); ++i)
{
// qDebug() << "timer trigger start";
srcTriggerType * strig = i->src;
i->timer++;
if (i->timer >= strig->timer)
@@ -215,8 +223,11 @@ void Splashes::doTriggerOnTimer(QHash<int, SplashType>::iterator
if (gameData->aliens->curAliens.contains(spl->AlienId))
{
hh = gameData->aliens->curAliens[spl->AlienId].health -= dmg;
// qDebug() << "shot from" << spl->towerId << spl->AlienId;
if (hh <= 0) dead.insert(spl->AlienId, DeadAlienIndex(spl->AlienId, spl->PlayerId, spl->towerId));
else gameData->curTowers[spl->towerId].experience += hh * gameData->curTowers[spl->towerId].src->expByDamage;
} else {
deadIndexes->insert(spl->id,spl->id);
}
} else {
for (QHash<int, AlienType>::iterator
@@ -251,6 +262,7 @@ void Splashes::doTriggerOnTimer(QHash<int, SplashType>::iterator
}
}
}
// qDebug() << "timer trigger stop";
}
}
@@ -317,12 +329,12 @@ void Splashes::doTriggerOnDest(QHash<int, SplashType>::iterator
void Splashes::doTriggerOnAlien(QHash<int, SplashType>::iterator spl, QHash<int, int> *deadIndexes)
{
foreach(TriggerOnAlien t, spl->trigsOnAlien)
for (int n=0; n<spl->trigsOnAlien.size(); n++)
{
TriggerOnAlien * t = &spl->trigsOnAlien[n];
/// TODO: different aims for childs
if (t.src->delParent) deadIndexes->insert(spl->id,spl->id);
float dmg = t.src->damage;
float rad = t.src->radius;
float dmg = t->src->damage;
float rad = t->src->radius;
if (dmg > 0 && rad > 0)
{
float hh;
@@ -330,24 +342,25 @@ void Splashes::doTriggerOnAlien(QHash<int, SplashType>::iterator spl, QHash<int,
i = gameData->aliens->curAliens.begin();
i != gameData->aliens->curAliens.end(); ++i)
{
if (distance2(spl->pos, i->pos) < rad*rad)
if (distance2(spl->pos, i->pos) < rad*rad && !t->triggerAliens.contains(i->id))
{
if (t->src->delParent) deadIndexes->insert(spl->id,spl->id);
hh = i->health -= dmg;
if (hh <= 0) dead.insert(i->id, DeadAlienIndex(i->id, spl->PlayerId, spl->towerId));
else gameData->curTowers[spl->towerId].experience += hh * gameData->curTowers[spl->towerId].src->expByDamage;
if (t.src->count > 0 && t.src->childId > 0)
if (t->src->count > 0 && t->src->childId > 0)
{
if (!t.triggerAliens.contains(i->id))
{
for (int j=0; j<t.src->count; ++j)
// if (!t.triggerAliens.contains(i->id))
// {
for (int j=0; j<t->src->count; ++j)
{
/// TODO: randomRadiusPos
addSplash(spl->srcTow,t.src->childId,
addSplash(spl->srcTow,t->src->childId,
spl->pos,i->pos,i->id,spl->towerId);
}
t.triggerAliens.append(i->id);
}
// }
}
t->triggerAliens.append(i->id);
}
}
}