Objektnamen, Länge von Menüeinträgen und Mehrzeiligkeit

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Da Dropdown-Menüs bzw. Comboboxen (so nennt UG sie, obwohl es eigentlich keine Comboboxen i.e.S. sind) in Settings-Dialogen ständig zunehmen, halte ich es für sinnvoll sich einmal intensiver mit diesem Thema zu beschäftigen. Zudem habe ich festgestellt, dass auch eine Mehrzeiligkeit bei Objektnamen (Gleis- und Straßentypen, Assets usw.) möglich ist, die viele Probleme löst, aber bisher kaum benutzt wird.


    Grundsätzlich besteht das Problem, dass es immer mehr verschiedene Gleis- und Straßentypen gibt, auch Brücken und Tunnels nehmen zu. Je mehr Mods installiert werden, desto schwieriger ist die Unterscheidbarkeit in den Drop-Down-Menüs, zumal dort üblicherweise nur eine Zeile steht. Ist der Eintrag zu kurz, wird die Information und somit die Auffindbarkeit reduziert, ist die Zeile zu lang, kommt es leider zu einem Overflow, und die Einträge sind nicht mehr scrollbar, oder das Fenster wird gesprengt.


    Als Grundforderung wäre es zunächst einmal sinnvoll, möglichst viele wichtige Informationen in einem Objektnamen unterzubringen. Wichtig sind Informationen, die Menü-Einträge unterscheidbar machen. Gleichzeitig besteht die Notwendigkeit, sich kurz zu fassen, um diese Information schnell greifbar zu machen. Übersteigen die wichtigen Informationen trotz Kurzfassung dennoch die Länge einer Zeile, gibt es die Möglichkeit des Zeilenumbruchs, und zwar so, dass jede Zeile weder die Länge der Namen im Bau-Menü noch in den Dropdowns überschreitet. Hierbei kommt uns entgegen, dass in beiden Fällen der verfügbare Platz gleich groß ist. Natürlich könnten wir auch noch Dropdown-Menüs durch Abbildungen oder Textbeschreibungen ergänzen; das geht aber nicht innerhalb der Dropdowns, sondern hier muss tief in die Trickkiste gegriffen werden. Über diese Möglichkeit möchte ich an dieser Stelle auch nicht diskutieren.


    Die andere Möglichkeit, einem Overflow in Dropdowns entgegenzuwirken. ist die Verkürzung auf eine bestimmte Anzahl von Zeichen. Das war bisher meine präferierte Lösung, doch geht hierbei natürlich Information und Unterscheidbarkeit verloren. Deswegen werde ich - und hoffentlich nicht nur ich - zunehmend auf die Möglichkeit vorgegebener Zeilenumbrüche zugreifen, sofern dies erforderlich ist. Solche Zeilenumbrüche können mit \n in jeden Lua-String eingefügt werden. Da ich nicht weiß, ob und wann diese Idee allgemein übernommen wird, werde ich zukünftig im Gleis-Straßen-Menü-Reduzierer-Tool (demnächst Gleis-Straßen-Menü-Manager) die Möglichkeit globaler Zeilenumbrüche anbieten. Das heißt, schon im Objektnamen wird der Zeilenumbruch eingefügt, und alle anderen Mods und auch das Hauptprogramm greifen darauf zu, ohne selber etwas tun zu müssen. Das macht auch Sinn, denn dann muss nicht jede Mod ihre eigenen Zeilenumbrüche implementieren, was bei den ohnehin schon laggenden Dropdown-Einträgen weitere Performance kostet.


    Jetzt könnte der Einwand kommen, dass für einen sinnvollen Zeilenumbruch-Algorithmus eine Erfassung der unterschiedlichen Zeichenbreiten erforderlich ist. Im Prinzip ja, aber solange jemand sein Objekt nicht "wwwwwwwww" oder "mmmmmmmm" nennt, reicht der Umgang mit Durchschnittswerten. Ohnehin hätten wir in Lua keine Chancen, so etwas umzusetzen. Die hätte höchstens UG im Hauptprogramm, aber dort möchte man leider keine automatischen Zeilenumbrüche in Objektnamen einbauen, während es bei den Beschreibungen interessanterweise praktiziert wird. Dabei könnte auch dort ein Umbruch auf die maximale Breite der Dropdown-Menüs in Einstellungs-Fenstern erfolgen.


    Aber egal ... wird dann was selber gebastelt. In Mods, die Dropdowns besitzen und anstelle eines dort nicht sinnvollen eigenen Zeilenumbruchs zumindest eine Verkürzung vornehmen wollen, um den Overflow zu verhindern, könnte generell folgende Funktion stehen, und zwar dort, wo die Daten aus den Repositories übernommen werden. Ich selber praktiziere das schon - falls jemand nach Beispielen sucht:

    Code
    local function comboTrim(str) -- workaround for combo box bug, shortens entry
    if string.len(str) > 48 and not str:find("\n") then
    local a = str:sub(1, 48)
    local b = a:match("(.*) ")
    str = b or a
    str = str .. " ..."
    end
    return str
    end

    Es werden alle Einträge länger als 48 Zeichen gekürzt und "..." dahintergesetzt, sofern es sich nicht um mit Zeilenumbrüchen vorformatierte Einträge handelt.


    Somit wäre bei den Dropdowns ein Problem schon mal gelöst. Wenn dann jeder sich bei den Objektnamen möglichst kurz, aber prägnant, fasst, und dort ggf. schon einen Zeilenumbruch einbaut, wäre das Problem auch bei den Bau-Menüs gelöst.


    Eine weitere Möglichkeit der Unterscheidbarkeit biete ich ebenfalls über den Gleis-Straßen-Reduzierer an, und zwar das Voranstellen globaler ID-Nummern. Ich benutze absichtlich nicht (mehr) die Repository-IDs, sondern eine eigene fortlaufende Nummerierung, die bei der Wiedergabe in den Dropdowns eine aufsteigende Aufzählung ermöglicht. Der Benutzer muss also nicht mehr lange nach einer Nummer suchen. Vorausgesetzt, die Sortierung in der entsprechenden Mod macht da mit. Da habe ich natürlich keinen Einfluss drauf, und bei einigen Mods funktioniert es eben nicht. Auch sollte gerade bei Mehrzeiligkeit nicht unbedingt innerhalb einer Mods noch ein weiteres Präfix vorangestellt werden, wie es momentan bei der Spitzkehre der Fall ist. Wenn doch, dann böte es sich an, das eigene Präfix mit \n dahinter in eine eigene Zeile zu setzen, wo es den weiteren Zeilenumbruch und auch die Nummerierung nicht stört. Dank Zeilenumbruch-Option geht es ja jetzt.


    Ob das alles Nebenwirkungen hat? Mir sind bislang noch keine aufgefallen. ;-)

    ... don't know much trigonometry ... don't know much about algebra ... don't know what a slide rule is for ...

BlueBrixx