[Gui]Ограничение размера строки

Вроде есть getStringWidth в fontRenderer'е. Считаешь длину каждого слова, суммируешь, когда сумма выходит за пределы длины окна - последнее слово переносишь на новую строку путем добавления перед ним знака \n (да, это один символ, тут всё зависит, поддерживает ли кубачевский фонтрендерер перенос строк, вроде нет), либо путем разбиения строки на массив строк (и последующего рендера каждой строки с нужным вертикальным смещением), не забываешь сбросить сумму, делаешь вышеописанное пока не закончатся слова. Ну ещё можно на странички разбивать, там просто поставить условие с номером строки.
 
В таком случае просто не давай пользователю создавать новых строк. Задай какое-то количество максимальных на одну страницу и если игрок уже занял, например, 25 строк - переводишь его на другую страницу.
 
Угу, я тоже про это писал
>Ну ещё можно на странички разбивать, там просто поставить условие с номером строки.
Ну это так, к слову.
 
А каретки будут работать? Можно проверять строку по lenght и инсертить каретку,после этого все то присвоить переменной и вставить методом типа setText. Но нужно вычесть длину строки каким-нибудь специальным методом,вдруг ентер
 
Ну тогда:
1. Ограничивать количество символов. Т.е. определяем, последняя ли строка это - если да, и если длина строки после ввода символа становится больше максимальной длины страницы - откатываем ввод символа.
2. Можно сделать прокрутку. Придется делать свой сайдбар, где можно будет крутить страницу. Чтобы текст не вылезал за страницу, используем glScissors. В гугле все есть. Прицип примерно такой:

Код:
glEnable(GL_SCISSORS_TEST);
glScissors(x, y, w, h);
<..render stuff..>
glDisable(GL_SCISSORS_TEST);

С названиями методов\констант мог налажать, поэтому смотри доки.
 
Если символ переноса строки не работает(а на 1.6.4 он не работал) - рисуй каждую новую строку отдельным методом.
 
Назад
Сверху