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


Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Оффлайн   JaggerDer

JaggerDer
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

        

Отправлено 30 Октябрь 2014 - 23:41

Что это?
Как то гуляя по бескрайней пустоши ютуба увидал видео с ОС для СС. Там было всплывающее меню, которое выползает при нажатии ПКМ; я неплохо вдохновился(аж так что довел дело до конца, что редко со мной бывает) и написал свой "велосипед" - ведь наверняка уже таких штук много.
Сам не знаю где это дело может пригодится, но это моя первая законченная и работающая писанина на 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.
  • NEO и Totoro это нравится

#2 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 2 006
  • Уровень сигнала: 156,97%
  • В игре: 1279 час. 4 мин.

Награды

                                               

Отправлено 31 Октябрь 2014 - 10:21

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

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

#3 Оффлайн   1Ridav

1Ridav

    Орден К.А.

  • Администраторы
  • Сообщений: 279
  • Уровень сигнала: 4,04%
  • В игре: 32 час. 57 мин.

Награды

            2      

Отправлено 31 Октябрь 2014 - 13:19

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




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных