Avec la version 1.6 de SFML, j'effectuais un SetSubRect sur un Sprite qui contenait ma "carte" (il s'agissait en fait seulement d'un png sur lequel j'avais dessiné des pixels). Puis en passant ce Sprite dans une méthode, il m'en ressortait un tableau de string (avec l'aide de getPixel évidemment). Avec ce tableau de string il m'était ensuite possible d'effectuer mon Tile Mapping.
Or, maintenant je dois utiliser une Image au lieu d'un Sprite, puisque c'est de cette classe-ci que "getPixel" est membre. Il m'est donc impossible d'utiliser un setTextureRect sur l'Image, et donc impossible d'effectuer un changement de map une fois dans le jeu.
Je me rends compte que mes explications ne sont pas très claires ! Je vais donc donner un bout de mon code actuel
Fonction permettant de créer le tableau de string
void TileMap::DefinirMapAvecCarte()
{
m_tableau[0] = "";
m_tableau[1] = "";m_tableau[2] = "";m_tableau[3] = "";m_tableau[4] = "";m_tableau[5] = "";m_tableau[6] = "";m_tableau[7] = "";m_tableau[8] = "";m_tableau[9] = "";m_tableau[10] = "";m_tableau[11] = "";m_tableau[12] = "";m_tableau[13] = "";m_tableau[14] = "";m_tableau[15] = "";m_tableau[16] = "";m_tableau[17] = "";m_tableau[18] = "";m_tableau[19] = "";m_tableau[20] = "";m_tableau[21] = "";m_tableau[22] = "";m_tableau[23] = "";m_tableau[24] = "";m_tableau[25] = "";m_tableau[26] = "";m_tableau[27] = "";m_tableau[28] = "";m_tableau[29] = "";m_tableau[30] = "";m_tableau[31] = "";
Color Couleur;
string LigneCompleteString;
m_LigneEnCours = 0;
for ( m_LigneEnCours;m_LigneEnCours<m_nbreTileHauteur;m_LigneEnCours++)
{
LigneCompleteString = "";
int i=0;
for(i;i<=m_nbreTileLargeur;i++)
{
Couleur = m_carteImage.getPixel(i, m_LigneEnCours);
if(Couleur == Couleur.White)
{
m_tableau[m_LigneEnCours].append("0");
}
else if(Couleur == Couleur.Black)
{
m_tableau[m_LigneEnCours].append("1");
}
Fonction qui me permettait de changer de carte, quand je pouvais encore utiliser getPixel sur un Sprite :
void TileMap::ReDefinirCarte(int PosX, int PosY)
{
m_carte.setTextureRect(IntRect(PosX,PosY,m_nbreTileLargeur,m_nbreTileHauteur));
}
Dans tous les cas, merci beaucoup pour votre aide !