lab.cpp/SDL#4/xSDL/xSpriteGroup.cpp

59 lines
1.6 KiB
C++

/* [CONSTRUCTOR] Initialisation de la liste de xSprite
=========================================================*/
xSpriteGroup::xSpriteGroup(){
// _sprites = new vector<xSprite*>(0);
}
/* [ADD] Ajoute un xSprite au groupe
=========================================================*/
void xSpriteGroup::add(xSprite *s){
_sprites.push_back( s );
}
/* [REMOVE] Suppression d'un xSprite du groupe
=========================================================*/
void xSpriteGroup::remove(xSprite *s){
int index = -1; // on cherche l'indice du sprite
// On parcours la liste pour trouver l'indice
for( int i = 0 ; i < _sprites.size() ; i++ )
if( _sprites[i] == s ) index = i;
// Si on a pas trouve l'indice
if( index == -1 ) return;
// On supprime le sprite de la liste
_sprites.erase(_sprites.begin() + index );
}
/* [PUSH] Ajoute tous les xSprite du groupe a une surface parente
=========================================================*/
void xSpriteGroup::push(){
for( int i = 0 ; i < _sprites.size() ; i++ )
_sprites[i]->push();
}
/* [PULL] Retire une sprite de la surface parents
=========================================================*/
void xSpriteGroup::pull(){
for( int i = 0 ; i < _sprites.size() ; i++ )
_sprites[i]->pull();
}
/* [UPDATE] Mise a jour du rendu
=========================================================*/
void xSpriteGroup::update(){
if( _sprites.size() > 0 )
_sprites[0]->update();
}
/* [GET] Retourne le xSprite d'index donne
=========================================================*/
xSprite* xSpriteGroup::get(int i){
return _sprites[i];
}