Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème organisation d'un tileset  (Lu 2857 fois)

0 Membres et 1 Invité sur ce sujet

mrpantalon

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
Problème organisation d'un tileset
« le: Avril 30, 2012, 06:54:10 pm »
Salut,
ce code est censer gérer le découpage de mon tileset situer plus haut pour les jonction entre deux tiles différent, mais le problème c'est que dans la cas d'un coin par exemple le tiles deviendra bien un coin mais le tiles au dessus lui ce transformera en jonction vers le bas .

Voici mon code :
//type des variable
boost::multi_array<std::pair<unsigned char,unsigned short> ,2> tiles;
unsigned short _type;
//code
    _sprite.setTexture(*(Engine::Manager::TextureManager::getInstance()->getTexture(texture)));
    sf::IntRect a(16,48,32,32);

    //TILE HAUT
    if(tiles[0][1].first != _type and tiles[1][2].first == _type and tiles[2][1].first == _type and tiles[1][0].first == _type)
    {
        a.top = 32;
        a.left = 16;
    }
    //TILE BAS
    else if(tiles[1][2].first != _type and tiles[0][1].first == _type and tiles[2][1].first == _type and tiles[1][0].first == _type)
    {
        a.top = 64;
        a.left = 16;
    }
    //TILE DROIT
    else if(tiles[2][1].first != _type and tiles[1][0].first == _type and tiles[1][2].first == _type and tiles[0][1].first == _type)
    {
        a.top = 48;
        a.left = 32;
    }
    //TILE GAUCHE
    else if(tiles[1][0].first != _type and tiles[2][1].first == _type and tiles[1][2].first == _type and tiles[0][1].first == _type)
    {
        a.top = 48;
        a.left = 0;
    }
    //COIN HAUT GAUCHE
    else if(tiles[1][0].first != _type and tiles[0][1].first != _type and tiles[1][2].first == _type and tiles[2][1].first == _type)
    {
            a.top = 32;
            a.left = 0;
    }
    //COIN BAS GAUCHE
    else if(tiles[1][0].first != _type and tiles[1][2].first != _type and tiles[2][1].first == _type and tiles[0][1].first == _type)
    {
            a.top = 64;
            a.left = 0;
    }
    //COIN HAUT DROIT
    else if(tiles[0][1].first != _type and tiles[2][1].first != _type and tiles[1][2].first == _type and tiles[1][0].first == _type)
    {
            a.top = 32;
            a.left = 32;
    }
    //COIN BAS DROIT
    else if(tiles[2][1].first != _type and tiles[1][2].first != _type and tiles[1][0].first == _type and tiles[0][1].first == _type)
    {
        a.top = 64;
        a.left = 32;
    }
    else if(tiles[2][1].first != _type and tiles[1][2].first != _type and tiles[1][0].first != _type and tiles[0][1].first != _type)
    {
        a.top = 0;
        a.left = 0;
    }
    _sprite.setTextureRect(a);
 
Voici l'organisation de mes cartes:
//Meta.xml
<?xml version="1.0" encoding="utf-8"?>
<Game>
        <mapheight>32</mapheight>
        <mapwidth>32</mapwidth>
</Game>
<Tiles>
        <nbid>3</nbid>
        <0>Blank.png</0>
        <1>Herbe.png</1>
        <2>Terre.png</2>
</Tiles>
 
//map.map
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;2;2;1;1;1;1;1;1;1;2;2;2;2;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;2;2;1;1;1;1;1;1;1;2;1;1;1;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;2;1;1;1;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;2;1;1;1;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;2;2;2;2;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;2;2;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;2;1;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;2;2;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;1;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;1;1;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;1;1;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;2;2;2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1

Voici un de mes tileset :


Et voici l'image de mon problème :


Je vous remercie d'avance.
« Modifié: Avril 30, 2012, 08:26:53 pm par mrpantalon »

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Problème organisation d'un tileset
« Réponse #1 le: Avril 30, 2012, 08:04:05 pm »
J'ai pas compris ton problème, enfin un peu via l'image, mais pas du tout par ta phrase sans ponctuation ???

De plus je ne suis pas sur que ton code nous aide beaucoup...

mrpantalon

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
Re : Problème organisation d'un tileset
« Réponse #2 le: Avril 30, 2012, 08:27:42 pm »
Oups j'ai oublier des bout de texte dans mon post donc Je cherche une meilleur méthode que la mienne pour définir l'orientation des tiles mais sans définir chaque sprite avec un numéro pour garder de la simplicité sur le fichier de carte et pas me retrouver avec 5000 id de tiles différents.

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Problème organisation d'un tileset
« Réponse #3 le: Avril 30, 2012, 09:17:34 pm »
C'est quoi ces "and" dans ton code?? et pourquoi tu as pas initialisé _type ?
Sinon le problème vient du fait que tu as pas défini de convention de quel style de tyle recouvre quel style de tile. Du coup quand tu as une transition 1 -> 2, la tile de gauche est la tile de transition vers la tile 2 et la tile de droite est la tile de transition vers la tile 1. On le voit sur ton carré en haut à gauche tu as deux type de transition possible qui sont superposés

mrpantalon

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
Re : Problème organisation d'un tileset
« Réponse #4 le: Avril 30, 2012, 10:29:34 pm »
_style est initialiser lors de la construction de l'objet mais on le voit pas ici et je préfère utiliser l’opérateur and a && question de gout.