Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GAME] HUD-Dialog skaliert nicht gut #907

Closed
AMatutat opened this issue Jul 28, 2023 · 5 comments · Fixed by #1095
Closed

[GAME] HUD-Dialog skaliert nicht gut #907

AMatutat opened this issue Jul 28, 2023 · 5 comments · Fixed by #1095
Assignees
Labels
bug Something isn't working

Comments

@AMatutat
Copy link
Contributor

Beispiel anhand einer Quizfrage:

image

Der Aufgabentext ist sehr lang und müsste in mehrere Zeilen gebrochen werden, wird aber in einer Zeile zusammengequetscht (aber vollständig angezeigt). Bei der hohen Anzahl der Antworten hätte ich mir einen Scroll-Bar gewünscht (die gibt es ja), anstatt es so seltsam zu quetschen.

Beim Text-Dialog wird dann selbst ein kleiner Text nicht vollständig angezeigt und muss mit der Scroll-Bar angesehen werden.

image

Die Fenster sollten allgemein besser skaliert sein.

@AMatutat AMatutat added bug Something isn't working staff:shk labels Jul 28, 2023
@AMatutat AMatutat added this to the Dungeon: Bugfixes milestone Jul 28, 2023
@AKirsch1
Copy link
Contributor

Bei zu langen Fragen wird in meinem Fall die UI zu breit, sodass der confirm-Button "verschwindet":

dungeon_error_quiz_ui

@AMatutat
Copy link
Contributor Author

Da ich grade an anderer Stelle daran rumgespielt habe:
In DialogFactory#createTextDialog habe ich für ein work arround (nichts was gemerged ist) textDialog.setWidth(title.length()*20); eingefügt, damit wird die breite des Fensters abhängig von der Anzahl der Zeichen im Titel des Text-Fensters bestimmt.
Ich denke irgendwie so muss man das machen, dann aber mit gescheiten Werten und ich glaube auch nicht, dass der Titel die beste Ausgangsvariable ist

@AMatutat AMatutat self-assigned this Sep 15, 2023
@cagix
Copy link
Member

cagix commented Sep 15, 2023

@AMatutat Was wird denn als Container für den Text verwendet? Versteht das libGDX-Widget HTML? Dann könnte man das evtl. in ein Div oder so einsperren?

@AMatutat
Copy link
Contributor Author

AMatutat commented Sep 15, 2023

@AMatutat Was wird denn als Container für den Text verwendet?

Das ganze Fenster ist eine libGDX Dialog welcher dann "Slots" Für Titel, Content und Buttons hat.
Der Slot für den Content (z.B das Textfeld) ist eine Table, da kannst du dann mehre Actor einfügen.
So ein Actor kann dann nochmal in Gruppen kombiniert werden oder in einen andern Actor verschachtelt werden (so typisches GUI zeugs halt).

Um deine Frage jetzt zu beantworten: Der Text selbst ist ein Label und der speichert dann einfach eine Charsequenz.

Das Ding hat sogar eine Funktion den Text entsprechend der verfügbaren Fläche zu wrappen. Jetzt muss ich nur noch die fläche gescheit berechnen.

Edit: Scheinbar haben libGDX und ich unterschiedliche vorstellungen daovn wie man text gescheit wrapped

image

Versteht das libGDX-Widget HTML? Dann könnte man das evtl. in ein Div oder so einsperren?

Fände ich ganz cool, dann könnten wir vielleicht sogar etwas von den libGDX HUD-Elementen verwerfen und eher auf HTML arbeiten. Muss ich nachgucken und Möglichkeiten abstecken.

Edit Edit: Je mehr ich mich damit beschäftige, desto attraktiver wird #303

@AMatutat AMatutat removed their assignment Sep 19, 2023
@AMatutat
Copy link
Contributor Author

Wir hatten früher mal eine Funktion die den Text entsprechend anpasst aber scheinbar hat jemand (angeblich ich) die rausgeworfen

39d9c28#diff-c6100fe68b797b2d6bad861233041d03dd2c2951d9652c4247f79b610f5723daR54

/**
     * String formatting for content of the 'msg'(message) to be output on the screen
     *
     * @param arrayOfMessages Content 'msg', which is to be output on the screen, optional the name
     *     of the button, as well as the label heading can be passed. [0] Content displayed in the
     *     label; [1] Button name; [2]label heading
     */
    private static void formatStringForDialogWindow(String[] arrayOfMessages) {
        if (arrayOfMessages != null && arrayOfMessages.length != 0) {
            String infoMsg = arrayOfMessages[0];
            infoMsg = infoMsg.replaceAll("\n", " ");

            String[] words = infoMsg.split(" ");
            String formattedMsg = Constants.EMPTY_MESSAGE;
            int sumLength = 0;

            for (String word : words) {
                sumLength += word.length();
                formattedMsg = formattedMsg.concat(word).concat(" ");

                if (sumLength > MAX_ROW_LENGTH) {
                    formattedMsg += "\n";
                    sumLength = 0;
                }
            }
            arrayOfMessages[0] = formattedMsg;
        }
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
No open projects
Archived in project
4 participants