Перейти к содержимому
LeshaInc

[OC] [CC] 4eyes - библиотека для очков OP

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

4eyes

Библиотека предоставляющая более удобный интерфейс для работы с мостом из мода OpenPeripherals.
 
Описание
Данная библиотека имеет очень удобный ООП интерфейс и много возможностей, в том числе мультипользовательность. Мы можем легко создать свой интерфейс, получать доступ к любому пользователю, слушать события и и работать с клавиатурой. Для примера, код простейшей программы:

-- connect libs
local eyes = require("4eyes")
local class = require("30log")

-- create classes
local Text = class("Text")
do -- class Test
  function Text:init(surface, x, y, text, color)
    self.x = x
    self.y = y
    self.text = text
    self.color = color
    self.drawer = surface.addText(self.x, self.y, self.text, self.color)
  end
  function Text:event(bg, us, ev)
    print(table.unpack(ev and ev or {}))
  end
end

-- work with 4eyes
local bridge = eyes.Bridge()
bridge:getEvent("glasses_attach"):setPostHandler(function (br, ev)
  print("New user: " .. ev[3])
  local us = br:getUser(ev[3])
  us:addObject("test", Text(us:getSurface(), 5, 5, "Hello", 0xFFFFFF))
  us:renderObjects(br)
end)
bridge:pull()

Как видите, все очень просто. Создаем объект класса Bridge, настраиваем и запускаем метод pull который начнет слушать все события.
Сейчас вам может быть не все понятно, например что за PostHandler, и объекты. Об всем этом пойдет далее.
 
Документация
Класс Bridge
Данный класс является самой главной частью библиотеки, именно в нем происходит слушание событий и добавление/хранение/изменение пользователей.

  • :init() - является конструктором объекта, вызывать явно не нужно, он вызывается сам при создании объекта. При создании создает события по умолчанию (описанные классом Event):
    • glasses_attach - добавляет пользователя в таблицу пользователей
    • glasses_detach - удаляет пользователя из таблицы пользователей
    • glasses_capture - начало сессии с клавиатурой, делает поле captured пользователя равным true
    • glasses_release - конец сессии с клавиатурой, делает поле captured пользователя равным false
  • :pull() - запускает главный цикл программы, слушающий сигналы.
  • :addUser(string: name, string: uuid) - добавляет нового пользователя в таблицу пользователей, принимает имя и uuid пользователя.
  • :getUser(string: name) - возвращает пользователя с указанным ником.
  • :removeUser(string: name) - удаляет пользователя с указанным ником из таблицы пользователей.
  • :addEvent(string: name, Event: event) - добавляет нового слушателя, принимает название события и объект класса Event.
  • :getEvent(string: name) - возвращает слушателя с указанным именем.
  • :removeEvent(string: name) - удаляет слушателя с указанным именем.
  • :eachUser(function: func(Bridge: bridge, User: user)) - выполняет функцию для каждого пользователя. Пример:
    bridge:eachUser(function (br, us)
      print(us.name)
    end)
    --[[ 
    пользователи: Маша, Петя, Катя
    stdout:
    Маша
    Петя
    Катя
    --]]
    

Класс Event
Данный класс является обработчиком события. Очень прост.

  • :init(function: handler) - является конструктором объекта, вызывать явно не нужно, вызывается сам при создании объекта. Принимает обработчик события, в качестве функции.
  • :setHandler(function: handler) - устанавливает обработчик.
  • :setPostHandler(function: posthandler) - устанавливает пост-обрабочик события. Этот пост-обрабочик будет вызыватся каждый раз после вызовы обработчика.
  • :handle(...) - обрабатывает событие, сначала обработчиком, потом пост-обработчиком. Принимает любые данные, которые будут переданы обработчику и пост-обработчику.

Класс User

Класс пользователя. Хранит в себе все объекты пользователя, такие как тексты и геометрические фигуры.

  • ...дописать...

Скачать

Для того чтобы поставить библиотеку, скачайте два файла: 30log.lua и 4eyes.lua и разместите их в папке /lib либо /usr/lib

 

:)

Изменено пользователем LeshaInc

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


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

Зачем выставлять библиотеку которая не работает? :gamer2:

Изменено пользователем NEO

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


Ссылка на сообщение
Поделиться на других сайтах
Зачем выставлять библиотеку которая не работает? :gamer2:

 

Все она работает.

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


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

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

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

Гость
Ответить в тему...

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

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

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

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

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


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