OpenPeripheral предоставляет мощный функционал по созданию собственных интерфейсов в виде очков дополненной реальности "Terminal Glasses". К сожалению, полного списка функционала и всех нюансов по работе с этими очками не найти. Присутствуют некоторые отрывки, небольшие видео с результатами работы и прочие поделки. Но! Спустя пару бессонных ночей, декомпилированного кода и трёх литров чая, удалось описать полный функционал этих очков.
Основные возможности очков и периферии:
Отображение геометрических объектов различной сложности и цветовой гаммы.
Отображение текста.
Отображение жидкостей и предметов.
Взаимодействие с мышью/клавиатурой.
Чтение сообщений чата.
Специальные команды чата, не отображающиеся в нем.
Возможность индивидуальной работы с каждым пользователем терминала.
Установка очков в любой шлем.
Возможности данных очков я опишу по разделам, в лучших традициях вики
Для начала, определю некоторые понятия.
Система терминальных очков состоит из трёх предметов: терминала, очков, беспроводной клавиатуры.
Терминал является центром всей системы, через него происходит общение между компьютером и очками. Также он хранит все данные интерфейса и пользователей.
На очки выводится вся графическая информация, а сами очки передают сообщения или команды чата на терминал.
Беспроводная клавиатура позволяет дополнить всю систему, своей возможностью контроля элементов при помощи клавиатуры и мыши.
Как выводить информацию на очки:
local com = require("component")
local opb = com.openperipheral_bridge
-- Построение интерфейса происходит во внутреннем буффере терминала (он же мост).
local text = opb.addText(10, 10, "", 0xffef7f) -- Создаем компонент "Текст".
-- Его нужно создать только один раз, в остальное время можно обращаться по ссылке и изменять любой параметр.
local counter = 0
while true do -- В качестве примера будет выводится счетчик секунд.
text.setText(tostring(counter)) -- Обновляем текста компонента.
opb.sync() -- Для отображения графики на экране, необходимо отправить буффер на очки.
os.sleep(1) -- Ждем секунду и прибавляем счетчик.
counter = counter+1
end
API
Перед тем как перейти к API, нужно знать:
Color:number -- Число в формате TrueColor RGB (по умолчанию 0xffffff).
Opacity:number -- Прозрачность, число от 0.0 до 1.0 (по умолчанию 1).
Знак '?' -- Опциональный параметр/функция.
События
Строковые константы
VerticalAlignment:[TOP, MIDDLE, BOTTOM]
HorizontalAlignment:[LEFT, MIDDLE, RIGHT]
GuiElement:[OVERLAY, PORTAL, HOTBAR, CROSSHAIRS, BOSS_HEALTH, HEALTH, ARMOR, FOOD, MOUNT_HEALTH, AIR, EXPERIENCE, JUMP_BAR, OBJECTIVES]
Структуры данных
SimpleBox, ColoredPoint, Coord, User
Абстрактные объекты
Drawable, BoundedShape, Box
Графические объекты
Управление графическими объектами
DrawableFactory, DrawableContainer
Управление терминалом
Вот такая шпаргалка по очкам, надеюсь пригодится