Uni_X
Хоспаде
Uni_X
Это прекрасно
Uni_X
Я не знал что снусмумрик либы пишет
Luсky
Ща вот соображу, как реакции выводить курсивом после описания.
UtoECat
Igor
Можешь тут поискать по ссылкам
Igor
100% кидалось
Luсky
UtoECat
Любой.
не, курсив в терминале не так просто будет сделать... Только жирный/не жирный, поменять цвет, фон, и т.д.
https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
окей... я видимо либо воспоминаниями в далёком прошлом застрял... ну или у меня были всегда кривые шрифты... 💀 но курсив есть...
UtoECat
Snusmumriken
Snusmumriken
WDMR
WDMR
Luсky
Всеволод
Uni_X
WDMR
Oleg
Это прекрасно!
Snusmumriken
До этого приходилось цеплять ffi и переключать окно терминала в режим обработки escape-последовательностей
Egor
Luсky
Snusmumriken
Luсky
Есть способ получить х,у координаты курсора, после вывода строки?
UtoECat
UtoECat
Luсky
Хотя, это что-то черезж я пирдумал. Можно же просто сформировать строку с меткой заранее, а не подсчитывать высчитывать
Snusmumriken
Зацени кстати фигню
Snusmumriken
Можно рисовать в этой ерунде и рендерить в ловке.
https://www.gridsagegames.com/rexpaint/index.html
Luсky
Круто!
Luсky
И в сонсоле тоже можно?
Snusmumriken
Найн, оно для опенгла и использует графические шрифты
Snusmumriken
Luсky
Ну, тоже норм.
Snusmumriken
Можно заменять на тайлики при желании.
Snusmumriken
Есть вот такой вот чарсет, и его можно заменить на произвольный.
Всё что ты пишешь на дисплее — отсюда вытягиваются символы, и им сопоставляются квады с нарезанного шрифта, и устанавливаются в соответствующие позиции на слое.
Snusmumriken
Ну по сути это тулкит для рогаликов.
Внутре есть слои, можно поделить на "слой для игрули", "слой для гуя" и "слой для более верхнего гуя", "слой для партиклов" чтобы были искорки и граф-эффекты из символов и т.д.
Luсky
Платформер тоже можно
Snusmumriken
Можно
Snusmumriken
Но общая суть чтобы делать вот так вот
Snusmumriken
https://www.gridsagegames.com/blog/2014/03/particle-effects/
Snusmumriken
Вот такое вот всякое
Luсky
Хорошее!
Snusmumriken
А если хотим графония, то просто заменяем пикчу со шрифтом на пикчу с тайликами
UtoECat
UtoECat
UtoECat
Snusmumriken
Лялекс.
UtoECat
Лялекс.
ну на винде всё не так просто, это да... там уже ffi активно дёргать придётся...
Поэтому действительно лучше "свою сонсольку" силами ловки той-же сделать или взять готовое, шоб переносимо было без головной боли.
Snusmumriken
Под вендой есть что-то подобное, но используется через такую задницу, что проще ffi.
Собственно, curses придумывали не просто так.
Lucky
Lucky
Snusmumriken
Если только цвет текста то color = "red".
Snusmumriken
Правда, в format нельзя задавать rgb, надо бы расширить на него.
Snusmumriken
Но есть terminal:setTextColor(r, g, b) и его должно быть можно комбинировать, а ля:
terminal:setTextColor(255, 20, 255)
io.write(terminal:format(...)) -- без цвета
Вообще, пора бы эту фигню дополнить кучей апишек мелких.
Snusmumriken
Я вообще хотел немножко унифицировать, чтобы было "а ля как в ловке со стейтом :setColor(...)",
но ещё и добавить возможность не перерендеривать лишнее, и сделать что-то типа "вот эта строка будет прямоугольником, и мы можем рендерить его на любых координатах сколько угодно раз".
И оно малясь смешалось. Давно делал.
Lucky
Snusmumriken
Формат или комбинирование?
Lucky
Snusmumriken
Звучит как повод прогнать текст через автопереносилку
Snusmumriken
И ещё влепить скроллинг и обрезку
Lucky
Это да.
Lucky
Snusmumriken
Ты рендеришь на фиксированных координатах?
Lucky
Snusmumriken
Кароч, смотри.
У тебя есть текст который "Посреди пещеры".
Его можно переписать подчистую, добавив реакцию toTextBlock(text .. "\n\n" .. text:format(...))
Snusmumriken
Фигня в том, что ты можешь наслаивать одно на другое без особых ограничений.
Snusmumriken
Допустим, тебе нужно раскрасить прямоугольник.
local rect = term:rectangle(10, 10, "#")
local colorecrect = terminal:format(rect, {color = "red"})
term:setPosition(10, 10)
io.write(coloredrect)
Lucky
Ну, у меня чота рубится форматированиепосле первой строки, когда я скармливаю многострочную строку функции format.
Snusmumriken
А, видю, хмм.
Lucky
Я её немножко обмазал
local add_style1 = function(text)
local str = terminal:format(text, {
-- bold = true,
italic = true,
negate = true,
color = {"black", "red"},
})
return str
end;