Hello!
I have a problem whit a game that I am developing, i want to spawn random enemies across time, but only one of them appears in screen. Someone can help me?
I made this classes, entidad(entity), entidadmanager(entitymanager) and partida.
entidad::entidad() {
static Texture *tex = 0;
if(tex == 0){
tex = new Texture();
tex->loadFromFile("meteorito.png");
}
Sprite ast;
ast.setTexture(*tex);
m_sprite = ast;
m_sprite.setScale(0.03f,0.03f);
m_pos.x = rand () % 800 + 30;;
m_pos.y = -10;
m_sprite.setPosition(m_pos.x,m_pos.y);
}
void entidad::actualizar(){
m_sprite.move(0,0.3);
}
void entidad::dibujar(RenderWindow &w){
w.draw(m_sprite);
}
Vector2f entidad::verposi(){
Vector2f charpos = m_sprite.getPosition();
return charpos;
}
entidadmanager::entidadmanager() {
vector<entidad> v;
m_v = v;
Clock reloj;
m_reloj = reloj;
}
void entidadmanager::actualizar(){
if(m_reloj.getElapsedTime().asMilliseconds() >= 1000){
entidad aux;
m_v.push_back(aux);
}
for(size_t i=0;i<m_v.size();i++) {
m_v[i].actualizar();
Vector2f charaux;
charaux = m_v[i].verposi();
if(charaux.y > 900){
auto it = next(m_v.begin(),i);
m_v.erase(it);
}
}
m_reloj.restart();
}
void entidadmanager::dibujar(RenderWindow &w){
for(size_t i=0;i<m_v.size();i++) {
entidad aux;
aux = m_v[i];
aux.dibujar(w);
}
Partida::Partida() {
nave n1;
entidadmanager met;
}
bool fuera(disparo &d){
Vector2f p = d.verPosicion();
if(p.x<0 or p.x>1600) return true;
if(p.y<0 or p.y>900) return true;
return false;
}
void Partida::actualizar(juego &j) {
n1.actualizar();
met.actualizar();
if(n1.dispara()) vd.push_back(n1.dispGen());
for(disparo &d : vd) d.actualizar();
auto it2 = remove_if(vd.begin(),vd.end(),fuera);
vd.erase(it2,vd.end());
}
void Partida::dibujar(RenderWindow &w, Sprite fondo) {
w.clear(Color(220,220,180,255));
w.draw(fondo);
n1.dibujar(w);
met.dibujar(w);
for(disparo &d : vd) d.dibujar(w);
}
I guess that the problem is in entidadmanager::actualizar, but I can`t find it.