crypt of decay - November 24th, 2013 [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

November 24th, 2013

пока суть да дело [Nov. 24th, 2013|08:26 am]
текст на кнопочках в МегаТулките уже отрисовывается через enriched text engine. сам etx, конечно, ещё в стадии личинки — utf8 не умеет, информацию о строках хранит тупо в массиве (а надо ли что-то сложнее? ну право, пара тысяч строк — это уже дохуя для МегаТулкита; а так etx умеет кэшировать отдельно размеры в пикселях, байтах и символах, позиции и прочее), рендерит по символу за раз вместо нежного объединения спанов с отдельным стилем, куча API не реализована, т.д. и т.п. но начало положено.

в теории механизм etx позволяетвставку в строки всякой поебени через колбэки, кучу разных шрифтов (пока что это не умеет сам МегаТулкит, гыг) и всякие плюшки вообще.

из изменений, которые получается увидеть прямо глазами — поддержка многострочного текста на кнопках. поскольку парзера enriched text пока тупо нет, то вещи типа bold, italic, разных цветов, подчёркиваний и перечёркиваний можно отрисовать, но невозможно создать.

перевод редактора на etx планируется после завершения etx API. тогда весь существующий код редактора можно будет нахер выкинуть (там адовое говнище) и заменить тупо вызовами etx и небольшим housekeeping.

кстати, моя librx9 идеально подходит для реализации поиска по регуляркам в etx, потому что ей (librx9) нужна только одна операция: «дайте следующий символ».

работа с текстом в etx делается при помощи курсоров. курсоры кэшируют информацию о том, в какой по счёту строке они сейчас находятся, поэтому при изменении текста не надо пересчитывать всё подряд. собственно, курсоры сами обновляют строковые кэши, если это недорого. а если дорого — просто инвалидируют нахуй и сваливают работу по обновлению на основной код etx, который прозрачно для пользователя всё приведёт в нужное состояние.

сам etx из внешних функций хочет только text extents для разных шрифтов да text drawing для них же. это можно пришпандорить callback'ами. соответственно, etx не заточен на какой-то конкретный тулкит, и его (etx) можно использовать где и как угодно — хоть в иксах, хоть в sdl, хоть в opengl, хоть в своём каком-то рендерере.

обильное редактирование, конечно, начнёт есть память потихоньку, но создание текста из парзера того же enriched text достаточно экономно: количество кусочков не будет превышать количество смен стилей: движку хватает ума правильно объединять кусочки, если есть возможность. то есть, парзер может тупо скармливать движку текст посимвольно, а дальше движок разберётся.

места для оптимизаций ещё дофига, но пока всё не начнёт адово тормозить — оптимизировать не буду. учитывая, что сраные «телефоны» сейчас имеют ресурсов дохуя и больше, а на многомегабайтные тексты я и не рассчитываю — вряд ли оптимизация вообще будет нужна.

WTFPL, само собой. но выложу не раньше, чем реализую всё, что запланировано. может скоро, а может и никогда.
Link15 meows|meow!

future classics collection [Nov. 24th, 2013|11:51 am]
сделал таки простую отображалку уровней, с её помощью выковырял ещё немного информации. выглядит на данный момент вот так:

информацию о номерах спрайтов, проходимости тайлов и превращениях после взрыва, видимо, придётся вручную захуячивать. а когда захуячу — скорее всего пойму, что она хранилась в файлах данных.

а для threat всё проще: пикселы 0..15 — проходимый фон, 16..255 — непроходимая стена.
Link2 meows|meow!

navigation
[ viewing | November 24th, 2013 ]
[ go | Previous Day|Next Day ]