Chebuya 415 Опубликовано: 18 октября, 2019 Всем привет. Есть такая функция: https://pastebin.com/raw/f6vfTZCQ В ней, если не понятно, идёт отрисовка цветного текста. Пример: Только вот реализация хромает. Слишком уж долгая отрисовка выходит. Есть идеи как можно сделать это побыстрее?(А то этот код мне вообще не нравится, если честно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 19 октября, 2019 (изменено) Не фигачь строку по одному символу. Используй string.find, чтобы найти позицию последовательности смены цвета. Паттерн — "%[0x(%x%x%x%x%x%x)]". Вернёт позицию начала, конца и цвет. local unicode = require("unicode") local s = "test[0x123456]testtest[0x654321]spameggs" local pattern = "%[0x(%x%x%x%x%x%x)]" local begin = 1 local x, y = 1, 1 while true do local b, e, color = s:find(pattern, begin) local precedingString = s:sub(begin, b and (b - 1)) if precedingString then gpu.set(x, y, precedingString) x = x + unicode.wlen(precedingString) end if not color then break end gpu.setForeground(tonumber(color, 16)) begin = e + 1 end Изменено 15 июля, 2020 пользователем Fingercomp utf8.len → unicode.wlen 4 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Всем привет. Есть такая функция:
https://pastebin.com/raw/f6vfTZCQ
В ней, если не понятно, идёт отрисовка цветного текста.
Пример:
Только вот реализация хромает. Слишком уж долгая отрисовка выходит. Есть идеи как можно сделать это побыстрее?(А то этот код мне вообще не нравится, если честно)
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах