void Enemy::setTopBullets() { topBullet = setBullet(type->barrage[barragePatternIdx], 0); for (int i = 0; i < type->batteryNum; ++i) { Battery* b = &battery[i]; if (b->shield <= 0) continue; const BatteryType* bt = &(type->batteryType[i]); float xr = 1; for (int j = 0; j < bt->batteryNum; ++j) { b->topBullet[j] = setBullet(bt->barrage[barragePatternIdx], &(bt->batteryPos[j]), xr); if (bt->xReverseAlternate) xr *= -1; } } }
Bullet::Bullet(Circle circle, Item *p) : QBody(p) { setPosition(QPointF(circle.pos())); setLinearDamping(0); setBullet(true); setBodyType(Dynamic); auto fixture = std::make_unique<Box2DCircle>(this); fixture->setShadowCaster(false); fixture->setRadius(circle.radius()); fixture->setGroupIndex(-1); addFixture(std::move(fixture)); }
// addBullet // searches the bullet list for an empty slot, adds one if available void addBullet(int x, int y, byte direction, char vx, char vy) { byte id; for(id=0; id<BULLET_MAX; id++) { if(setBullet( bullets[id], x - BULLET_WIDTH/2, y - BULLET_HEIGHT/2, vx + BulletXVelocities[direction], vy + BulletXVelocities[(direction+6)%8])) { arduboy.tunes.tone(440, 20); break; } } }
void Warship::initializeBullet() { setBullet(new EnemyBullet); }
tr1::shared_ptr<BulletActor> Enemy::setBullet(const Barrage& br, const Vector* ofs) { return setBullet(br, ofs, 1); }