Bonjour.
J'ai besoin d'un p'tit coup de main sur l'élaboration de ma sf::Drawable. Je préfère être honnête, il y a certainement quelques notions de c++ qui devront intervenir pour pouvoir m'aider
.
a vo't bon coeur messieurs dames
voila: je stock des adresses d'EI (EntitesImages) dans un std::multiset, dans le but de les trier au fur et a mesure en fonction de leur "m_z", ou zOrder.
J'ai donc mon objet dérivé de sf::Drawable et un froncteur, mais qui ne marche pas. Il compare donc certainement des adresse, et non des m_z , pour zOrder, ou d'autres explication que je ne comprend pas.
Il me semble qu'il faille pour ce faire, appel a une template, (chose que, j’avoue, je ne maîtrise pas, et d'autant plus que je n'ai pas construit la class sf::Drawable ) .
Voici ma sf::Drawable:
class EI : public sf::Drawable
{
public:
friend struct MonFoncteur;
void recoitTexture(sf::Texture *texture)
{
m_texture = texture;
m_actif = true;
}
void recoitVertex(sf::Vertex vertex[4])
{
m_tableauVertex[0] = vertex[0];
m_tableauVertex[1] = vertex[1];
m_tableauVertex[2] = vertex[2];
m_tableauVertex[3] = vertex[3];
}
void active(bool actif)
{
m_actif = actif;
}
void recoitZ(int z)
{
m_z = z;
}
private:
virtual void draw(sf::RenderTarget& cible, sf::RenderStates states) const
{
if(m_actif)
{
cible.draw(m_tableauVertex,4, sf::Quads, m_texture);
}
}
bool m_actif;
float m_z;
sf::Vertex m_tableauVertex[4];
sf::Texture *m_texture;
};
struct MonFoncteur
{
bool operator() (const EI* (*un), const EI* (*deux)) const
{
if( (*un)->m_z == (*deux)->m_z)
{
return (*un)->m_z;
}
else
return (*un)->m_z < (*deux)->m_z;
}
};
J'ai essayé pleins de possibilités différentes avec le foncteur, mais sans résultat (cette version est sans doute une des plus artistique
).
Merci beaucoup si vous pouvez m'aider voir , ca me rendrait grand service et me ferait gagner du temps, m'apporter une solution..
Merci