• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • S'inscrire
  • Se connecter
  • Recherche
  • Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes

Résolu Ajuster la position d'un texte

1.8.x
1.8.9
4
19
2.1k
Charger plus de messages
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • Thoquent
    Thoquent dernière édition par 30 avr. 2016, 16:43

    Bonsoir,

    Je fais pas mal de chose sur les Guis, et donc j’affiche beaucoup de texte. Je règle tout en pleine écran, et quand je passe en petit écran les textes ne sont plus au même endroit.
    J’ai donc fait un le calcul pos_X** ***** largeur_écran_actuel****/ largeur_pleine_écran**. Ce calcul a marché pour afficher un texte dans l’inventaire du joueur, il est bien positionné dans tous les cas, mais sur les autres guis, si je fais un calcul du même type mes textes ne sont pas bien placé.
    J’ai cherché un peu, j’ai trouvé ça:

    float factor = 0.85f;
    glScalef(factor, factor, 1);
    Minecraft.getMinecraft().fontRenderer.drawString("mon texte", (int)((x+maValeurSurX)*(1f/factor)), (int)((y+(maValeurSurY))*(1f/factor)), laCouleur);
    glScalef(1f/factor, 1f/factor, 1);

    https://www.minecraftforgefrance.fr/showthread.php?tid=1275

    J’ai essayé mais sans succès.

    1 réponse Dernière réponse Répondre Citer 0
    • SCAREX
      SCAREX dernière édition par 30 avr. 2016, 18:56

      Tu veux le placer où ton texte ?

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

      1 réponse Dernière réponse Répondre Citer 0
      • Thoquent
        Thoquent dernière édition par 30 avr. 2016, 20:07

        Bah je veux le placer sur pos_X et pos_Y dans mon gui. On va dire que je le place en x=153 et y=70 quand mon jeu est en full screen.

        1 réponse Dernière réponse Répondre Citer 0
        • SCAREX
          SCAREX dernière édition par 30 avr. 2016, 20:14

          Et posX/largeur_écran ? avec posX compris entre 0 et 1

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

          1 réponse Dernière réponse Répondre Citer 0
          • Thoquent
            Thoquent dernière édition par 30 avr. 2016, 20:21

            Bon en gros je fais ça:

            this.fontRendererObj.drawString("Teste", 153, 70, 0xFFFFFF);
            

            Dans un GuiScreen que j’ai créer moi même.
            Le texte est au bonne endroit si mon jeu est en grand. Si je réduit la taille de la fenêtre minecraft le texte ne s’affiche plus au bon endroit, il est un décalé.

            1 réponse Dernière réponse Répondre Citer 0
            • SCAREX
              SCAREX dernière édition par 30 avr. 2016, 20:32

              Tout dépend en fait de l’endroit où tu veux le mettre mais sinon la technique que j’ai mis au-dessus marche

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

              1 réponse Dernière réponse Répondre Citer 0
              • Thoquent
                Thoquent dernière édition par 30 avr. 2016, 20:53

                En faisant posX/width mon jeu se fermait ^^

                En gros, la mon texte est placé au bon endroit (Jeu en pleine écran):

                Quand je met mon jeu en fenêtré en petit:

                J’aimerais que le texte reste toujours au même endroit comme en pleine écran.

                1 réponse Dernière réponse Répondre Citer 0
                • robin4002
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 30 avr. 2016, 21:00

                  Prends le centre de l’écran (this.width / 2) et retires-lui la moitié de la longueur de ton texte (fontRenderer.getStringLength(tonTexte) / 2 il me semble)
                  Tu aura la position x.
                  Pour la position y, tu dois pouvoir faire le ratio.

                  1 réponse Dernière réponse Répondre Citer 0
                  • Thoquent
                    Thoquent dernière édition par 30 avr. 2016, 21:17

                    ça marche mais si mon texte n’est pas “centré” comme par exemple pour le 1 et le **Texte **?

                    1 réponse Dernière réponse Répondre Citer 0
                    • Deleted
                      Deleted dernière édition par 30 avr. 2016, 21:23

                      Eh bien tu sors le 1 et le Texte de cette premier variable String pour les isoler dans une seconde variable String. Donc tu feras second drawString

                      1 réponse Dernière réponse Répondre Citer 0
                      • Thoquent
                        Thoquent dernière édition par 30 avr. 2016, 21:28

                        c’est déjà fait mais c’est la même formule pour avoir la position en fonction de n’importe qu’elle résolution ?

                        1 réponse Dernière réponse Répondre Citer 0
                        • Deleted
                          Deleted dernière édition par 30 avr. 2016, 21:43

                          Oui évidemment

                          1 réponse Dernière réponse Répondre Citer 0
                          • robin4002
                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 30 avr. 2016, 21:56

                            Pour le 1 et le “texte” je ne sais pas trop.
                            Normalement en passant par un ratio ça devrait fonctionner.

                            1 réponse Dernière réponse Répondre Citer 0
                            • Thoquent
                              Thoquent dernière édition par 30 avr. 2016, 21:56

                              ça met met le 1 et le Texte au milieu du gui 😕
                              Si il y a un autre moyen de rendu je suis preneur parce que je ne trouve vraiment pas :x

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 30 avr. 2016, 21:59

                                Tu peux envoyer le code + un screenshot ?

                                1 réponse Dernière réponse Répondre Citer 0
                                • Thoquent
                                  Thoquent dernière édition par 30 avr. 2016, 22:29

                                  Le code:

                                  import java.io.IOException;
                                  import java.util.ArrayList;
                                  import java.util.Collection;
                                  import java.util.Iterator;
                                  import java.util.List;
                                  import java.util.ListIterator;
                                  import org.lwjgl.opengl.GL11;
                                  import fr.thoquent.newores.NewOres;
                                  import fr.thoquent.newores.Reference;
                                  import net.minecraft.client.Minecraft;
                                  import net.minecraft.client.gui.GuiScreen;
                                  import net.minecraft.util.ChatComponentText;
                                  import net.minecraft.util.ResourceLocation;
                                  public class QuestGui extends GuiScreen {
                                  int guiWidth = 249;
                                  int guiHeight = 202;
                                  /* Ligne de départ pour le afficher le text */
                                  int showedLine = 0;
                                  @Override
                                  public void drawScreen(int x, int y, float ticks) {
                                  int guiX = (width - guiWidth) / 2;
                                  int guiY = (height - guiHeight) / 2;
                                  GL11.glColor4f(1, 1, 1, 1);
                                  drawDefaultBackground();
                                  mc.renderEngine.bindTexture(new ResourceLocation(Reference.MOD_ID, "textures/gui/quest.png"));
                                  drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight);
                                  this.fontRendererObj.drawString(NewOres.printTexted, NewOres.printTextX, NewOres.printTextY, 0xFFFFFF);
                                  int id = 1;
                                  String title = "Texte";
                                  String text = "Bonjour et bienvenue à toi " + mc.thePlayer.getName() + ". Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean at tempus dolor. Donec at lorem eget odio vulputate sodales. Phasellus viverra, nisl id ultricies accumsan, odio lorem tempus leo, malesuada lobortis felis lectus at lacus. In sagittis vel ex viverra auctor. Donec sodales erat quis quam laoreet, convallis suscipit sapien mollis. Vestibulum vulputate, tellus sit amet vehicula accumsan, nisi velit.";
                                  this.fontRendererObj.drawStringWithShadow("" + id, (width/2) - (fontRendererObj.getStringWidth(""+id)/2), 50, 0xFFFFFF);
                                  //this.fontRendererObj.drawStringWithShadow(title, 190, 50, 0xFFFFFF);
                                  List <string>lines = new ArrayList<string>();
                                  String currentLine = "";
                                  for(String s : text.split(" ")) {
                                  if(fontRendererObj.getStringWidth(currentLine + s + " ") <= 225) {
                                  currentLine = currentLine + s + " ";
                                  } else {
                                  lines.add(currentLine);
                                  currentLine = "" + s + " ";
                                  }
                                  }
                                  lines.add(currentLine);
                                  int xScal = 70;
                                  for (int i = showedLine; i < showedLine+8; i++) {
                                  try {
                                  if(lines.size() - showedLine >= 8) {
                                  this.fontRendererObj.drawStringWithShadow(lines.get(i), (width/2) - (fontRendererObj.getStringWidth(lines.get(i))/2), xScal, 0xFFFFFF);
                                  xScal += 9;
                                  } else {
                                  showedLine–;
                                  }
                                  } catch (IndexOutOfBoundsException e) {}
                                  }
                                  super.drawScreen(x, y, ticks);
                                  }
                                  @Override
                                  protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
                                  if(mouseX >= 370 && mouseX <= 381 && mouseY >= 68 && mouseY <= 74 && showedLine > 0) {
                                  showedLine--;
                                  } else if(mouseX >= 370 && mouseX <= 381 && mouseY >= 136 && mouseY <= 142) {
                                  showedLine++;
                                  }
                                  super.mouseClicked(mouseX, mouseY, mouseButton);
                                  }
                                  }

                                  J’ai fais tous mes testes avec une résolution (minecraft) de x=534 y=279
                                  Avec cette résolution tout marche, tout est affiché au bon endroit.
                                  Le chiffre s’affiche au bonne endroit avec   this.fontRendererObj.drawStringWithShadow(“” + id, 155, 50, 0xFFFFFF);
                                  Et pour le lorem ipsum avec   this.fontRendererObj.drawStringWithShadow(title, 190, 50, 0xFFFFFF);
                                  Pour afficher les lignes de mon texte je passe par un tableau et autre pour pouvoir ajouter un système de scroll.
                                  Dis moi si tu veux la texture du gui.
                                  Désolé si c’est bordélique ou quoi, il y a peut être plus simple mais ça marche. Mon seul soucis est d’avoir les textes au bonne endroit peut importe la résolution 😞

                                  Screens (fullscreen) ou les textes sont bien positionnés avec mes coords:

                                  Fenêtré:
                                  </string></string>

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • Deleted
                                    Deleted dernière édition par 30 avr. 2016, 22:33

                                    Bah au contraire, tu dis que pour toi l’essentiel est d’avoir le texte au bon endroit, mais comme j’imagine que ton mod sera mis sur serveur public, très peu de personnes l’auront AU BON ENDROIT en fonction des différentes résolution d’écran de chacun, tu vois ?

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • Thoquent
                                      Thoquent dernière édition par 30 avr. 2016, 22:40

                                      C’est pour ça que j’ai créer ce sujet. Sur ma résolution tout est bien positionné, mais je sais que tout le monde n’a pas le même écran que moi. Donc je me suis dis en faisant une règle de trois ça pourrait marcher mais au final non. Donc je cherche un moyen que les éléments soit placés correctement pour toutes les résolutions. Je ne veux pas qu’il soit centré sur l’écran sinon ça serait déjà résolu ^^

                                      Je répondrais plus ce soir, je vais dormir ^^

                                      EDIT:

                                      [font=Ubuntu, sans-serifJ’ai trouvé ça : ][font=Ubuntu, sans-serifhttp://www.minecraftforum.net/forums/arc…i-tutorial]
                                      [font=Ubuntu, sans-serifPour le moment ça marche bien, je fais encore quelques testes et si toutes mes positions sont bonnes je met le sujet en résolu.]
                                      [font=Ubuntu, sans-serifEt encore merci pour toutes vos réponses ]

                                      [font=Ubuntu, sans-serifint pos_guiX = (width - guiWidth) / 2;]
                                      [font=Ubuntu, sans-serifpos_stringX = pos_guiX + position_voulu;]

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • Thoquent
                                        Thoquent dernière édition par 1 mai 2016, 09:22

                                        J’ai trouvé ça : http://www.minecraftforum.net/forums/archive/tutorials/931088-1-4-7-forge-blaueseichoerns-gui-tutorial
                                        Pour le moment ça marche bien, je fais encore quelques testes et si toutes mes positions sont bonnes je met le sujet en résolu.
                                        Et encore merci pour toutes vos réponses 🙂

                                        int pos_guiX = (width - guiWidth) / 2;
                                        pos_stringX = pos_guiX + position_voulu;

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • 1 / 1
                                        1 sur 19
                                        • Premier message
                                          1/19
                                          Dernier message
                                        Design by Woryk
                                        Contact / Mentions Légales

                                        MINECRAFT FORGE FRANCE © 2018

                                        Powered by NodeBB