2016-03-12 23:22:28 +00:00
|
|
|
/* [CONSTRUCTOR] Initialisation de la liste de xSprite
|
|
|
|
=========================================================*/
|
|
|
|
xSpriteGroup::xSpriteGroup(){
|
2016-03-13 13:53:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* [DESTRUCTOR] Efface la liste de xSprite
|
|
|
|
=========================================================*/
|
|
|
|
xSpriteGroup::~xSpriteGroup(){
|
|
|
|
for( int i = _sprites.size()-1 ; i >= 0 ; i-- )
|
|
|
|
_sprites.erase( _sprites.begin() + i );
|
|
|
|
}
|
|
|
|
|
|
|
|
/* [MOVE] Deplace toutes les sprites
|
|
|
|
=========================================================*/
|
|
|
|
void xSpriteGroup::move(int x, int y){
|
|
|
|
for( int i = 0 ; i < _sprites.size() ; i++ ){
|
|
|
|
|
|
|
|
SDL_Rect *dest = _sprites[i]->dst();
|
|
|
|
|
|
|
|
(*dest).x += x;
|
|
|
|
(*dest).y += y;
|
|
|
|
}
|
2016-03-12 23:22:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* [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];
|
|
|
|
}
|