Операционная система ASCII, о которой никто не просил.
Присоединяйтесь к нам на Discord! https://discord.gg/fptu8eb
SOS-это моделирование текстовой ОС, написанной в LUA с помощью Löve 2d. Приложения также могут быть загружены, что позволяет вам разработать или загружать все, что вы можете себе представить, и запустить его в SOS! Это совершенно безопасно для вас как пользователя, чтобы загрузить случайные сценарии LUA в Интернет и бросить их в / программы / потому что все приложения загружаются в среде с песочницей. Приложения получают только доступ к математическим функциям, SOS API и нескольким другим утилитам.
Вам нужно установить Love 2D для запуска SOS. Если у вас установлена Zerobrane IDE, вы можете открыть SOS в качестве проекта, перейдите в Project> Lua Interpreter и установите его на любовь, а затем используйте F6 для выполнения. В противном случае перетащите папку , в которой SOS находится на 'love.exe'.
0.1-наш первый веха на крупных вехах. Странно называть это так, потому что SOS все еще остается псевдо-операционной системой на основе текста, написанной в Lua, но она здесь. Приложения теперь могут быть загружены, закрыты, у нас есть новый и немного более оптимизированный метод рендеринга. Теперь у вас есть одно приложение, которое в значительной степени полноценное в середине экрана, и на боковой панели на каждой стороне отображается текущие приложения и другую системную информацию. У нас есть долгий путь, но для проекта, который начался менее недели назад (да, я знаю ... O_O), мы сделали это довольно далеко.
Следите за обновлениями!
Слева...
Вкладка (или Shift + Tab ) циклов через открытые приложения. Даже когда приложения открыты, вы можете пройти цикл в записи «Нет приложения», заставляя все приложения запускать в фоновом режиме.
Escape закрывает текущее выбранное приложение. Если приложение не выбрано (описано выше), Escape закрывает SOS.
Справа...
Страница вверх и страница вниз по цикла через обнаруженные приложения. Выбранное приложение имеет рядом с ним.
Конечные переключатели между выбором системных приложений (сверху) и пользовательскими приложениями (внизу).
Дом начинает новый процесс с выбранным приложением.
Разработка приложения использует S-код, который является просто более простой способ сказать Lua ограниченной окружающей средой с SOS API. Ссылка для настройки для среды песочницы здесь: https://hastebin.com/acolabiqez.lua Вы можете использовать любые функции Lua, включенные там, включая функции API внизу. Эта страница будет обновлена, так как все больше функций вполне.
api.g.set (x, y, char)
Входные данные: «X» и «y» являются координатами для символа, причем (1, 1) являются верхним левым. «Чар» должен быть единственным персонажем.
Результат: «char» помещается на эту координату на холсте, которая будет отображаться в следующем розыгрыше (). Используйте в Draw ().
Возврат: правда
api.g.get (x, y)
Входные данные: «X» и «y» являются координатами для символа, причем (1, 1) являются верхним левым.
Результат: получает символ в этой координате из последней розыгрыша (). Используйте в tick ().
Возврат: строка
api.g.text (x, y, str)
Входные данные: 'x' и 'y' являются координатами для начала строки, причем (1, 1) - верхний левый. «Str» должен быть строкой одного или нескольких символов.
Результат: «str» помещается на эту координату на холсте, которая будет отображаться в следующем розыгрыше (). Используйте в Draw ().
Возврат: правда
api.g.box (x, y, w, h, адаптация)
Входные данные: «x» и «y» являются координатами для начала коробки, причем (1, 1) - верхний левый. «W» и «H» - это ширина и высота внешней части коробки, поэтому внутренняя часть на 2 единицы меньше на каждом измерении. «Адаптирование» является логическим, для того, если края и углы, нарисованную коробку, должны автоматически переформатировать для создания сетей или пересекающихся линий, а не перезаписать края других коробок.
Результат: вытягивает прямоугольник из символов ASCII. Адапт имеет спецэффекты, описанные выше.
Возврат: правда
api.g.bar (x, y, нога, направление, стиль, процент)
Входные данные: «x» и «y» являются координатами для начала стержня, причем (1, 1) являются верхним левым. «Длина» - это сколько символов должно быть. «Направление» - это направление, с самого начала, в котором будет проходить планка. «Процент» - это сколько бара должна быть заполнена.
Результат: создает дисплей-ход с использованием символов. Барсы всегда вниз до ближайшего уникального дисплея, поэтому 0,9999 не заполнят планку, только 1,0 (или более) будет. 0.0 всегда будет пустой бар.
Возврат: правда
api.i.keystat (ключ)
Входные данные: «Ключ» - это строка для имени ключа, которая будет проверена. Например, «А», «Сдвиг», «Пространство».
Результат: проверяет, нажимается ли клавиша. Не обнаружит ключи, если не активное приложение.
Вернуть: true, если клавиша нажата, false в противном случае.
API.S.Appstable ()
Входные данные: ничего.
Результат: возвращает (глубокая копия) таблицы приложений. Это немного сложнее и будет задокументировано на вики позже.
Возврат: приложения (таблица)
Следующие функции вызываются SOS. Это также порядок, в котором они называются, поэтому соответственно кодируйте.
нагрузка()
Вызовов один раз на загрузке. Должен содержать информацию о приложении.
TextInput (char)
Необязательный. «char» - это символ и отформатирован правильно. Например, если вы держите «Shift» и нажимаете «A», эта функция позвонит с аргументом «A». Полезно для легкой печати.
Keypress (Key, Rep)
Необязательный. «Ключ» - это имя ключа. «Rep» - это если вызов из -за того, что ключ повторяется, не выпустив его, точно так же, как если вы держите ключ в окне чата, и он вводит одну букву, пауза, а затем повторяет этот символ. Это определяется вашей фактической операционной системой и может быть проигнорировано, игнорируя вызов, если «Rep» правда.
Keyrelease (ключ)
Необязательный. «Ключ» - это имя ключа. Эта функция вызывается, если ключ отпускается.
галочка()
Называется каждый тик. Все еще имеет доступ к холстам последнего цикла, поэтому API.G.Get () все еще будет работать.
Холст сбрасывается после тикания () и перед Draw ().
Нарисуйте (ширина, высота)
Вызвано после каждого тика. Сейчас самое время нарисовать вещи на холст, чтобы отобразить. «Ширина» и «высота» - это аргументы для текущей ширины и высоты холста.
Это шаблон: https://hastebin.com/iqukigiril.lua. Он ничего не делает, кроме как настроить приложение.
Приложение должно начинаться с 'Local App = {}' и заканчивать с 'return (app)'. Все функции должны начинаться с «app.», Например, «app.load ()» или 'app.customfunction ()'.
Приложения должны быть помещены в / программы / папка SOS. Они будут автоматически обнаружены.