本文整理汇总了C++中Laser::deactivate方法的典型用法代码示例。如果您正苦于以下问题:C++ Laser::deactivate方法的具体用法?C++ Laser::deactivate怎么用?C++ Laser::deactivate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Laser
的用法示例。
在下文中一共展示了Laser::deactivate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handle
void BulletArray::handle(Player *p)
{
bool destroyBullet;
// Bullets
for(int i = 0; i < MAX_BULLET; i++)
{
Bullet *cb = &data[i];
destroyBullet = false;
if(cb->isActive())
{
if(cb->hurtsPlayer() && !p->isDying())
{
// Check collisions with player if he's not dead already
if(cb->getPolarity() != p->getPolarity())
{
// the player has a 1px hitbox (for now) (but that actually seems to be enough)
if(p->x >= cb->x - itofix(cb->img[0] / 2) && p->x < cb->x + itofix(cb->img[0] / 2)
&& p->y >= cb->y - itofix(cb->img[1] / 2) && p->y < cb->y + itofix(cb->img[1] / 2))
{
p->hurt();
destroyBullet = true;
}
}
else
{
if(sq(fixtoi(cb->x - p->x)) + sq(fixtoi(cb->y - p->y)) < sq(19)) // sqrt(player.w/2 ^2 + player.h/2 ^2)
{
destroyBullet = true;
G_score += 100;
G_power += G_power < MAX_POWER;
}
}
}
else
{
// Check collisions with enemies (there are much more enemies than players)
for(int j = 0; j < MAX_ENEMY; j++)
{
if(G_enemiesArray[j]->isActive())
{
if(cb->x - itofix(cb->img[0] / 2) <= G_enemiesArray[j]->getx() + itofix(G_enemiesArray[j]->img[0] / 2) &&
cb->x + itofix(cb->img[0] / 2) >= G_enemiesArray[j]->getx() - itofix(G_enemiesArray[j]->img[0] / 2) &&
cb->y - itofix(cb->img[1] / 2) <= G_enemiesArray[j]->gety() + itofix(G_enemiesArray[j]->img[1] / 2) &&
cb->y + itofix(cb->img[1] / 2) >= G_enemiesArray[j]->gety() - itofix(G_enemiesArray[j]->img[1] / 2))
{
G_enemiesArray[j]->damage(p, cb->getPolarity(), 1, this);
G_score += 20;
if(cb->getPolarity() != G_enemiesArray[j]->getPolarity()) G_score += 20;
destroyBullet = true;
// The same bullet can destroy several enemies if it hits them in the same frame !
}
}
}
}
if(destroyBullet)
deactivate(i);
else
{
if(cb->handle())
deactivate(i);
else if(!G_skipFrame)
cb->draw();
}
}
else break;
}
// Power fragments
for(int i = 0; i < MAX_FRAGMENT; i++)
{
PowerFragment *cf = &data_fragment[i];
destroyBullet = false;
if(cf->isActive())
{
if(cf->hurtsPlayer() && !p->isDying())
{
// Check collisions with player
if(cf->getPolarity() != p->getPolarity())
{
// the player has a 1px hitbox (for now) (but that actually seems to be enough)
// power fragments have a 8*8 hitbox
if(p->x >= cf->x - itofix(4) && p->x < cf->x + itofix(4)
&& p->y >= cf->y - itofix(4) && p->y < cf->y + itofix(4))
{
p->hurt();
destroyBullet = true;
}
}
else
{
if(sq(fixtoi(cf->x - p->x)) + sq(fixtoi(cf->y - p->y)) < sq(p->img[0][0] / 2))
{
destroyBullet = true;
G_score += 100;
G_power = min(G_power + 10, MAX_POWER);
}
}
}
else
//.........这里部分代码省略.........