Voici la méthode permettant de créer une bullet et de la positionner sur la tourelle. Un son est sensé être joué ( mais ne fonctionne pas )
la constante PATH_SOUND est déjà utilisé ailleurs est fonctionne.
void Trap::shoot(TileMap *map, Player *player)
{
sf::Time wait = sf::microseconds(250000);
if(p_dir==0 && p_pos.x-player->getPos().x<=150)
{
printf("FONCTION SHOOT TRAP \n");
sf::sleep(wait);
sf::SoundBuffer buffer;
buffer.loadFromFile(PATH_SOUND);
sf::Sound sound;
sound.setBuffer(buffer);
sound.setAttenuation(80.f);
Bullet bullet(sf::Color::Blue);
bullet.shoot(p_pos,p_dir); //positionne la bullet
addBullet(); // ajoute la bullet au vector<Bullet> de Trap avec passage par référence
sound.play(); // ne fonctionne pas
}
for(unsigned int i=0; i<p_bullet.size();i++)
{
if(p_bullet[i].getIndex(map)==player->getIndex(map))
player->setAlive(false);
}
}
La fonction se déclenche bien puisque dans la console j'ai bien le message de mon printf. Et les bullet se créer puisque si je saute sur la tourelle je meurt.
Concernant l'affichage des bullet de mon Trap voici la fonction draw :
void Trap::draw(sf::RenderWindow &window, TileMap &map, int level[], sf::View &view, sf::Time deltaTime)
{
if(isDrawable())
{
if(p_type==1)
{
for(unsigned int i=0; i<p_bullet.size();i++)
{
if(!p_bullet[i].draw(&window,&map,level,view,deltaTime))
delBullet(i);
}
}
p_sprite.setPosition(p_pos);
window.draw(p_sprite);
}
}
Et la fonction draw de Bullet :
bool Bullet::draw(sf::RenderWindow *window, TileMap *map, int level[], sf::View &view, sf::Time deltaTime)
{
setIndex(map);
isVisible(view,p_dir,map,level); // check if the bullet is visible
printf("FONCTION DRAW BULLET \n");
if(p_isVisible)
{
switch(p_dir)
{
case 0:
p_circle.move(-SPEED_BULLET*deltaTime.asSeconds(),0);
break;
case 1:
p_circle.move(SPEED_BULLET*deltaTime.asSeconds(),0);
break;
case 2:
p_circle.move(0,-SPEED_BULLET*deltaTime.asSeconds());
break;
case 3:
p_circle.move(0,SPEED_BULLET*deltaTime.asSeconds());
break;
}
p_pos = p_circle.getPosition();
window->draw(p_circle);
return true;
}
printf("non Visible \n");
return false;
}
La fonction draw de Bullet ne se déclenche même pas ( pas le message dans la console )
Normalement cette dernière fonctionne parfaitement car déjà utilisé pour mon joueur et aucun soucis.