last changes
This commit is contained in:
39
splashes.cpp
39
splashes.cpp
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user