104 lines
2.5 KiB
C++
104 lines
2.5 KiB
C++
/* [CONSTRUCTOR] Initialisation de la liste de xSprite
|
|
=========================================================*/
|
|
xSpriteGroup::xSpriteGroup(){
|
|
}
|
|
|
|
/* [DESTRUCTOR] Efface la liste de xSprite
|
|
=========================================================*/
|
|
xSpriteGroup::~xSpriteGroup(){
|
|
// Lors de la suppression, on libere toutes les textures
|
|
for( int i = _sprites.size()-1 ; i >= 0 ; i-- ){
|
|
|
|
delete _sprites[i];
|
|
_sprites[i] = 0;
|
|
|
|
_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;
|
|
}
|
|
}
|
|
|
|
/* [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(string index){
|
|
_index = index;
|
|
|
|
string newIndex;
|
|
|
|
for( int i = 0 ; i < _sprites.size() ; i++ ){
|
|
newIndex = index;
|
|
newIndex += to_string(i);
|
|
_sprites[i]->push(newIndex);
|
|
}
|
|
}
|
|
|
|
/* [PULL] Retire une sprite de la surface parents
|
|
=========================================================*/
|
|
void xSpriteGroup::pull(string index){
|
|
_index = index;
|
|
|
|
string newIndex;
|
|
|
|
for( int i = 0 ; i < _sprites.size() ; i++ ){
|
|
newIndex = index;
|
|
newIndex += to_string(i);
|
|
_sprites[i]->pull(newIndex);
|
|
}
|
|
}
|
|
|
|
/* [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];
|
|
}
|