/* [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]; }