Bonjour à tous
Voila mon pti problème : dans le cadre d'un moteur de jeu 2D (avec la lib SFML) je souhaite réaliser un SpriteManager qui gère l'affichage des sprites, les collisions entre eux... qu'ils soient statiques ou pas.
Voici le code de la classe :
Mon problème est comme vous pouvez le voir que les méthodes RegisterSprite et DeleteSprite attendent en paramètres un POINTEUR sur un objet sprite ce qui veut dire que pour l'utilisateur tous les sprites qu'il veut créer et enregistrer dans le SpriteManager devront être des pointeurs sur des objets sprite et non des objets simples.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #ifndef __CSpriteManager_h__ #define __CSpriteManager_h__ #include <iostream> #include <vector> #include <SFML/Graphics.hpp> #include "CSingleton.h" #include "CSprite.h" namespace SLE { class CSpriteManager : public CSingleton<CSpriteManager> { friend class CSingleton<CSpriteManager>; public: //Enregistre un sprite void RegisterSprite(CSprite *pSprite); //Dessine tous les sprites selon leur ZOrder void DrawAll(sf::RenderWindow *pWindow); //Supprime un sprite du conteneur void DeleteSprite(CSprite *pSprite); private: CSpriteManager(); virtual ~CSpriteManager(); typedef std::vector<CSprite*> m_Vector; m_Vector m_SpriteVector; //Conteneur des sprites m_Vector::iterator m_SpriteIter; //Itérateur de parcours du conteneur }; } #endif
Comment puis-je faire pour que l'utilisateur puisse enregistrer les 2 types de sprites ? (au début j'ai pensé faire 2 méthodes Register : une RegisterPointerSprite et une RegisterSprite mais ceci implique que je dois aussi utiliser 2 conteneurs de sprites, un pour les pointeurs sur objet sprite et un pour les objets sprites normaux).
PS : sf::RenderWindow *pWindow signifie que l'on attend un pointeur sur la fenêtre SFML de destination
Partager