Hello, World! 🎄
Hello, World! 🎄
Это так балавство
Snusmumriken
Snusmumriken
Если не кодировать каждую строку в отдельности, то не будет паттернов.
Hello, World! 🎄
У меня есть догадки как так экран в терминале разделить
Snusmumriken
local fmt = ("%-70s | %-70s | %-70s")
Hello, World! 🎄
А что так можно было 👀
Snusmumriken
Заполнять каждую строку отдельно и каждый столбец через это
Hello, World! 🎄
Это особенности Lua или терминала?
Snusmumriken
Это никаких особенностей. Экран не разделяется, я пишу построчно
local fmt = ("%-70s | %-70s | %-70s") | ┘ш╞╩╥Е╪┌эГжЖНФТжЪЩ┘ЕюНЮРаЦ╪ТщЩИЦЭХхПв | local fmt = ("%-70s | %-70s | %-70s")
Вот такие штуки.
Hello, World! 🎄
%-70s что это?
Snusmumriken
Это строка длиной в 70 символов с выравниванием влево.
Snusmumriken
Hello, World! 🎄
Ещё же нужно угадать ширину консоли, чтоб таблица не съехала)
Snusmumriken
(консоль можно растянуть, у меня два монитора, она и так занимает больше одного на 210 символах)
Hello, World! 🎄
Hello, World! 🎄
Я думал, можно адаптировать под разные размеры
Snusmumriken
Можно, но для этого нужна специфичная для ОС библиотека, чтобы выяснять размер окна консоли, ширину текущего шрифта, делить одно на другое, обрезать и т.д. Тайловые консольные терминалы так и делают. Им правда проще.
Igor
Hello, World! 🎄
Igor
Кстати, был ли у кого опыт перекидывания луа значений между стейтами на уровне сишки?
Igor
Есть ли какой-то оверкилл для этого или нужно вручную вытаскивать из стека одной машины и кидать в другую?
Igor
Думал в исходники lua-lanes заглянуть, но там столько всего, что искать даже лень
Igor
Хочется чторто типа линды сделать, чтобы оба стейта создавали канал и по нему общались.
Igor
Igor
Igor
Я вообще планировал передавать любые lua значения, ну и возможно cdata
Igor
Попотеть, короче, придётся
Snusmumriken
А вот тут очень интересный вопрос.
Шарить табличку между стейтами, чтобы она такая изменялась в одном и тут же изменения подхватывались в другом — это жесть. Поэтому луёвые данные передаются копированием в 99% случаев.
Snusmumriken
Свои же данные, ловка передаёт между тредами по ссылке, потому что она же отвечает за их хранение, просто увеличили счётчик ссылок на единичку (и при прямой работе выставили мутекс).
Igor
Hello, World! 🎄
Snusmumriken
Да-да, я так тоже умею.
Luсky
Snusmumriken
https://pastebin.com/cP5DF4AM
Snusmumriken
Luсky
Luсky
с тини-инстедом вообще агонь!
Snusmumriken
Ну тут форматирование текста, рисование линий, ректов и кой чего по мелочи.
Snusmumriken
Hello, World! 🎄
Hello, World! 🎄
Snusmumriken
Это только вывод текста с ansi-escape-штуками — https://ru.wikipedia.org/wiki/Управляющие_последовательности_ANSI
Они ничего не возвращают, только управляют выводом текста в окне.
Hello, World! 🎄
Вот мне интересно как кнопки реализуют в терминале в некоторых библиотеках.
Snusmumriken
Угадай.
Snusmumriken
Наводка:
https://pastebin.com/X3ynm99t
Snusmumriken
Hello, World! 🎄
Угадай.
Ну понятно, что нужно получить x:y мыши и координаты кнопки и посмотреть находятся ли они внутри
Hello, World! 🎄
Snusmumriken
Ещё координаты и размеры окна и размер шрифта, чтобы узнать конкретный символ под мышкой.
Snusmumriken
Да, мышку я точно так же подключал, вполне работает. Под вендой ))
Hello, World! 🎄
Кажется это только под Windows :\
user32 = ffi.load('user32')
Snusmumriken
Разумеется.
Hello, World! 🎄
Я linux использую на постоянке
Snusmumriken
Это не рецепт, это наводка.
Hello, World! 🎄
Явно не встроенные lua функции (методы)
Snusmumriken
Конечно. Ищешь то же самое в линуксах, подрубаешь динамик либы, дёргаешь.
Конечно не встроенные в луа функции.
Hello, World! 🎄
Snusmumriken
Luajit или C на выбор.
Hello, World! 🎄
Есть инструкция как Си код и Lua связать?
То есть в Си написать функцию и из Lua её вызывать.
Где-то был мануал, туториал.
Snusmumriken
Igor
Snusmumriken
На кнопки не работает емнип
Igor
Чтобы та управляющие последовательности посылала в терминал
Igor
htop так работает, вроде как
Igor
Полное управление мышью реализовано
Hello, World! 🎄
https://pastebin.com/Ag07yDKS
#include "lua/lua.h"
#include "lua/lauxlib.h"
Нужно же компилятору передать путь до заголовков \ или как они там ставяться (На Си давно не писал и не работал с стороними заголовками\библиотеками)?
Snusmumriken
Да.
Захар
Захар
криво конечно
Захар
да впринципе, можно просто заюзать биндинги ncurses
Захар
там поддержка мыши есть
Hello, World! 🎄
/usr/bin/ld: cannot find -llua51
collect2: error: ld returned 1 exit status
А где собственно llua51 взять?