NanoUi: различия между версиями
Elar (обсуждение | вклад) м |
Elar (обсуждение | вклад) м |
||
Строка 1: | Строка 1: | ||
{{WIP}} | {{WIP}} | ||
− | + | <h1>Код Dream Maker</h1> | |
− | |||
Мы начнём с создания простейшего NanoUi. Чтобы понять как <b><s>писать быдлокод</s></b> оно работает. | Мы начнём с создания простейшего NanoUi. Чтобы понять как <b><s>писать быдлокод</s></b> оно работает. | ||
<br/> | <br/> | ||
Строка 85: | Строка 84: | ||
<big><b>Это всё что нам нужно в DM файле, прейдём к темплейтам.</b></big> | <big><b>Это всё что нам нужно в DM файле, прейдём к темплейтам.</b></big> | ||
− | + | =Создаём темплейт и учим HTML= |
Версия 08:56, 9 мая 2019
Тихо! Идёт работа! |
---|
Статья или раздел находится в процессе написания и использовать её на сервере необходимо с осторожностью, информация может быть неточной. Вы можете помочь с её заполнением.
|
Код Dream Maker
Мы начнём с создания простейшего NanoUi. Чтобы понять как писать быдлокод оно работает.
Для начала создадим простейший интерфейс для объекта "womdinger".
Вот файл нашего объекта:
/obj/item/device/wombdinger name = "womdinger" desc = "It's some kind of crude alien device." icon = 'icons/obj/wombdinger.dmi' icon_state = "0"
Создадим для него прок attack_self куда мы будем передавать, как mob, того кто использовал предмет.
Файл теперь выглядит так:
/obj/item/device/wombdinger name = "womdinger" desc = "It's some kind of crude alien device." icon = 'icons/obj/wombdinger.dmi' icon_state = "0" /obj/item/device/wombdinger/attack_self(mob/user as mob)
Теперь чтобы открыть NanoUi нужно поместить в attack_self прок вызова Ui, то есть ui_interact, которому нужно передать пользователя.
Файл теперь выглядит так:
/obj/item/device/wombdinger name = "womdinger" desc = "It's some kind of crude alien device." icon = 'icons/obj/wombdinger.dmi' icon_state = "0" /obj/item/device/wombdinger/attack_self(mob/user as mob) ui_interact(user)
Теперь нужно создать сам прок ui_interact, создадим его в этом же файле:
/obj/item/device/wombdinger/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
Создав его нам нужно поместить в него что-то, если точнее это данные и логику создания/обновления интерфейса.
Массив data передаёт значения в нужный темплейт. О темплейтах позже.
/obj/item/device/wombdinger/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) var/list/data = list() // Добавим простые данные в массив data["myName"] = name data["myDesc"] = desc data["someString"] = "I am a string." data["aNumber"] = 123 data["assocList"] = list("key1" = "Value1", "key2" = "Value2") // Обратный слэш говорит компилятору игнорировать перенос строки, полезно для улучшения читабельности кода. data["arrayOfAssocLists"] = list(\ list("key1" = "ValueA1", "key2" = "ValueA2"),\ list("key1" = "ValueB1", "key2" = "ValueB2"),\ list("key1" = "ValueC1", "key2" = "ValueC2") ) data["emptyArray"] = list() // обновляет ui с данными переданными данными если они переданы, возврашает null если ui не найдено, или ui не передаётся, или если force_open == 1 или true ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) //Если ui не открыт то мы открываем его: if (!ui) // Список параметров ui можно найти в \code\modules\nano\nanoui.dm ui = new(user, src, ui_key, "womdinger.tmpl", "Womdinger UI", 520, 410) // Если ui открыт первый раз то мы используем эти данные: ui.set_initial_data(data) // Открываем новое окно ui ui.open()
Две важные вещи в коде выше это data, а точнее список ассоциаций и создание NanoUi: ("ui = new(user, src, ui_key, "womdinger.tmpl", "Womdinger UI", 520, 410)")
Первые три параметра nanoui никогда не меняются user(пользователь), src(цель пользователя), ui_key(ui ключ(уточнить)).
Остальные четыре параметра это темплейт который будет использоваться, заголовок окна, ширина и высота:
Темплейт должен именоваться именем файла в \nano\templates\
Ширина - это ширина как ни странно окна ui в пикселях.
Высота - высота окна ui в пикселях
Это всё что нам нужно в DM файле, прейдём к темплейтам.