Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: S66 le Octobre 12, 2015, 06:36:13 pm

Titre: La flèche qui s'affiche mal
Posté par: S66 le Octobre 12, 2015, 06:36:13 pm
Salut !
Encore un problème !
Alors voilà, je fais mon jeu 2d iso tranquillement, j'essaie de mettre dans mon jeu un système pour changer de map, et pour ça, je veux afficher une flèche aux abord de la fenêtre.
Voici mon code:
(click to show/hide)
Arrow.h:
(click to show/hide)
Voici ce que me donne le résultat:
ArrowDrawed True. Pos Mouse: 74, 234
Tile: 1, 13
Mais la flèche est "coupée", je n'en vois qu'une partie (changer les positions des move ne sert à rien).
Merci de m'aider.

PS: Et la flèche est bien dans le Working Directory, de plus, si il y'a un problème pour la charger, Le jeu m'affiche ce problème.
Titre: Re : La flèche qui s'affiche pas
Posté par: Cpl.Bator le Octobre 12, 2015, 10:22:03 pm
Citer
states.transform *= getTransform(); //Sinon j'ai pas compris un truc là:
        //Pourquoi on fait *= et pas = getTransform() ?

Salut, ton entité hérite des transformations de ses éventuels parent.  d'ou la multiplication.
pour ton problème, je ne vois pas, un problème avec la vue courante ?
Titre: Re : La flèche qui s'affiche pas
Posté par: S66 le Octobre 13, 2015, 07:50:42 am
Pour l'instant je n'utilise aucune vue (et je prévois de n'en utiliser aucune)
Pour ma map, je vais simplement faire map.load(...) à chaque fois que je change de map.
Titre: Re : La flèche qui s'affiche pas
Posté par: S66 le Octobre 13, 2015, 08:07:39 am
J'ai rajouté quelques infos, et j'ai donc:
ArrowDrawed True. Pos Mouse: 244, 233
Tile: 7, 13
Pos fleche: 447, 209
Orientation: flechebas
447 en x ? C'est assez bizarre, vu que ma souris était vers le milieu de la fenêtre, pas vers la fin.
Je mets donc:
for(int i(0); i < tile.x; ++i) {
                    m_fleche.move(32.f, 0.f);
                }
Au lieu de:
for(int i(0); i < tile.x; ++i) {
                    m_fleche.move(64.f, 0.f);
                }
J'ai alors ce résultat:
ArrowDrawed True. Pos Mouse: 254, 227
Tile: 7, 13
Pos fleche: 223, 209
Orientation: flechebas
Mais cette foutue flèche ne s'affiche toujours pas.

Edit: J'ai aussi mis 16.f dans le for pour les y
Et voilà ce que j'obtiens:
ArrowDrawed True. Pos Mouse: 277, 236
Tile: 8, 14
Pos fleche: 255, 209 <- Dans ce cas là, le y est normal, mais quand j'ai mis 32.f avant, il aurait du doubler...
Orientation: flechebas
Et, vous l'aurez deviné, toujours pas de flèche...
Titre: Re : La flèche qui s'affiche pas
Posté par: Cpl.Bator le Octobre 13, 2015, 04:47:04 pm
Pourquoi tu utilises la méthode draw ? sf::Sprite à déjà tout ce qu'il faut pour être dessiné à l'écran. Sprite à déjà une texture en interne , essaye d'utilisé une autre méthode qui n'est pas dérivé de drawable ni de transformable , d'ailleurs , j'ai l'impression que ta conception n'est pas bonne du tout. à quoi sert de dérivé , si pour au final tu utilises un sf::sprite ? autant viré le sprite ( j'ai pas vu de setTexture() non plus ) et utilisé les vertex array :
http://www.sfml-dev.org/tutorials/2.3/graphics-vertex-array-fr.php
Titre: Re : La flèche qui s'affiche pas
Posté par: S66 le Octobre 13, 2015, 05:08:39 pm
J'utilise draw() car je dérive ma classe de QSfmlCanvas. (Qt+Sfml)
Je ne mets pas de setTexture car dans la fonction virtual void draw, j'affecte la texture du RenderStates à la texture de l'Arrow.
A quoi serviraient les vertex arrays dans ce cas là ? Je veux juste dessiner une flèche.
Ça change rien que je rajoute setTexture dans le load().
Re-Edit: J'ai rebuild et ça a (enfin) marché !
J'ai juste un petit problème avec les flèches de droite et gauche mais je pense régler ça rapidement
Titre: Re : [R] La flèche qui s'affiche pas
Posté par: Cpl.Bator le Octobre 13, 2015, 08:19:54 pm
Citer
A quoi serviraient les vertex arrays dans ce cas là ? Je veux juste dessiner une flèche.

A ne pas faire doublon avec tes dérivations, dans ce cas, autant dérivé directement de sf::sprite.
Titre: Re : [Pas Résolu] La flèche qui s'affiche pas
Posté par: S66 le Octobre 17, 2015, 06:52:10 pm
Hello,
En fait j'ai pas réussi à afficher ma flèche correctement.
Encore un bug.
Voici mon code d'affichage, tout ce qu'il y'a de plus normal:
bool arrowdrawed = false;
            if (mousePos.x > 0 && mousePos.x < 15 && arrowdrawed == false) {
                arrowdrawed = true;
                if (m_fleche.getPathName() != "flechegauche")
                    m_fleche.load(m_tex->images.getPath("flechegauche"), "flechegauche");
                m_fleche.setPosition(0.f, -1.f);
                sf::Vector2i tile = perso.getTileIso(sf::Vector2i(mousePos.x, mousePos.y), m_tex->images.getPath("schemepng"));
                for(int i(0); i < tile.y; ++i) {
                    m_fleche.move(0.f, 16.f);
                }
                if (tile.y == map.getMAPY()*2-1)
                    arrowdrawed = false;
            }
            if (mousePos.x > map.getMAPX()*32+17 && mousePos.x < map.getMAPX()*32+32 && arrowdrawed == false) {
                arrowdrawed = true;
                if (m_fleche.getPathName() != "flechedroite")
                    m_fleche.load(m_tex->images.getPath("flechedroite"), "flechedroite");
                m_fleche.setPosition(static_cast<float>(15*32+32-47), -1.f);
                sf::Vector2i tile = perso.getTileIso(sf::Vector2i(mousePos.x, mousePos.y), m_tex->images.getPath("schemepng"));
                for(int i(0); i < tile.y; ++i) {
                    m_fleche.move(0.f, 16.f);
                }
                if (tile.y == map.getMAPY()*2-1)
                    arrowdrawed = false;
            }
            if (arrowdrawed)
draw(m_fleche);
Problème: La flèche est "coupée". On ne voit pas la fin de la flèche, et une petite ligne de la couleur de la flèche s'affiche en bas de celle-ci...
Pourtant, mes images sont bien normales...
Titre: Re : [Pas Résolu] La flèche qui s'affiche pas
Posté par: S66 le Octobre 22, 2015, 10:56:20 am
Toujours aucune idée ?
Titre: Re : [Pas Résolu] La flèche qui s'affiche pas
Posté par: S66 le Janvier 01, 2016, 07:25:36 pm
Up, ça date, je sais, mais c'est toujours comme ça.
Sinon, bonne année !
Titre: Re : La flèche qui s'affiche mal
Posté par: S66 le Mars 05, 2016, 07:39:57 pm
Up.
Ce bug est chiant.
Titre: Re : La flèche qui s'affiche mal
Posté par: Cpl.Bator le Mars 06, 2016, 03:39:49 pm
Citer
Voici mon code d'affichage, tout ce qu'il y'a de plus normal:
Quand je vois ton code, avec des load, des pointeurs, etc...

m_fleche.load(m_tex->images.getPath("flechegauche"), "flechegauche");
pour moi, il y a un gros problème de conception, on ne load pas lors de l'affichage. les pointeurs sont aussi a proscrire , car souvent source d'incompréhension & d'erreurs.
Titre: Re : La flèche qui s'affiche mal
Posté par: S66 le Mars 19, 2016, 11:40:53 am
Je load quand la souris est sur le bord de la fenêtre. Pour vérifier ça, il me faut une boucle d'évènement. Donc juste avant l'affichage.
Pour les pointeurs, ça ne me dérange pas, c'était soit pointeur, soit référence, j'ai choisi pointeur.