Перейти к публикации
Форум - ComputerCraft
JaggerDer

[СС 1.6]Простое вспылвающее меню

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

Что это?

Как то гуляя по бескрайней пустоши ютуба увидал видео с ОС для СС. Там было всплывающее меню, которое выползает при нажатии ПКМ; я неплохо вдохновился(аж так что довел дело до конца, что редко со мной бывает) и написал свой "велосипед" - ведь наверняка уже таких штук много.

Сам не знаю где это дело может пригодится, но это моя первая законченная и работающая писанина на CC/Lua - я доволен :)

 

Описание.

AddItem(id, text, func) - добавляет пункт меню, где

id - идентификатор пункта;

text - текст, который выведется в меню;

func - выполняемая функция, при щелчке ЛКМ на пункте.

 

RemoveItem(id) - удаляет пункт id из меню.

 

Update() - обрабатывает меню(не могу нормально сформулировать).

 

В самом коде имеются три константы:

-MAXCHAR - максимальная длина текста пункта меню,

-MAXITEMS - максимальное кол-во пунктов меню,

-BLINKTIME - сколько времени работает подсветка выбранного пункта.

 

Как использовать.

Для начала нужно скачать два файла с pastebin: rcmenu и utils

(Ссылки на них ниже)

 

Затем создается отдельный файл, например test, а в нем пишем примерно следующее:

 

os.loadAPI("rcmenu")
  info = function(a, b)
   return function() print(a+b) end
  end
  rcmenu.AddItem(1, "Hello", function() print("Hello, world!") end)
  rcmenu.AddItem(2, "5+10", info(5, 10))

while true do
  rcmenu.Update()
end

Где взять.

Взять можно на Pastebin:

-rcmenu: http://pastebin.com/MMnNpjvE

-utils: http://pastebin.com/azd4ZR3h

 

Вроде все.

Мне бы еще хотелось, чтобы меню после закрытия восстанавливало фон. Пока не знаю, что с этим можно сделать.

 

P.S. За английский просьба не бить. Пользовался translate.google.ru.

  • Like 2

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


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

[...]

Мне бы еще хотелось, чтобы меню после закрытия восстанавливало фон. Пока не знаю, что с этим можно сделать.

Нужно ставить обратно фон чёрный (можно сохранять в переменной) и запускать после этого term.clear(). Тогда фон исправится.

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


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

Внимательо изучил исходники. Написано просто и понятно. Из минусов надо отметить невозможность изменять os.pullEvent иначе эта библиотека меню попросту перестанет работать. Так же к сожалению не увидел возможность создавать несколко меню и использовать их в зависимости от текущего состояния программы пользователя

 

А так задумка очень даже полезная

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×