Перейти к содержимому
  • 1
Chebuya

Функция для отрисовки цветного текста

Вопрос

Всем привет. Есть такая функция: 

https://pastebin.com/raw/f6vfTZCQ

 

В ней, если не понятно, идёт отрисовка цветного текста. 

Пример:

image.png.9d422b302a10505d93d00efe320151f9.png

 

Только вот реализация хромает. Слишком уж долгая отрисовка выходит. Есть идеи как можно сделать это побыстрее?(А то этот код мне вообще не нравится, если честно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Не фигачь строку по одному символу. Используй 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
Изменено пользователем Fingercomp
utf8.len → unicode.wlen

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...