Создается как объект класса UI.StandartWindow, которому может быть передан объект описания.
Пример использования:
var testUiScreen = UI.StandartWindow({/* ... пустой объект описания ... */});
UI.testUI(testUiScreen); // откроет полностью пустой интерфейс
Формат объекта описания стандартного типа интерфейса:
{
standart: { // стандартные параметы, поддерживаемые данным типом интерфейса, позволяют быстро задавать базовые элементы, такие как заголовок, фон и инвентарь
// если хотите определить какой то стандартный элемент, но оставить его без изменений, то пропишите там единственное значение - standart: true, например inventory: {standart: true}
header: { // определите, если вам нужен заголовок, заголовок содержит кнопку закрытия
text: { // обязательный параметр, если заголовок определен
text: "текст заголовка", // содержание текста, обязательный параметр
},
font: {...}, // фонт текста, определите, если хотите изменить стандартный
color: цвет, // нужен только, если вы хотите изменить цвет заголовка
frame: "текстура рамки", // нужно только, если вы хотите изменить текстуру рамки заголовка
width: 80, // высота заголовка в юнитах,
hideButton: true, // определите и установите значение на true, чтобы убрать кнопку закрытия
},
inventory: { // для определения стандартного инвентаря используйте inventory: {standart: true}
width: 300, // ширина окна инвентаря
padding: 20, // паддинг окна инвентаря
},
background: { // для определения стандартного фона используйте background: {standart: true}
color: цвет, // определите, если хотите изменить цвет фона
bitmap: "текстура фона", // определите, если хотите добавить текстуру фона
frame: "текстура рамки" // определите, если хотите добавить рамку
},
minHeight: 650, // если высота окна в юнитах меньше этого параметра, окно будет прокручиваться так, чтобы его внутренний размер составлял по высоте minHeight юнитов
},
params: {
// стилизация (изменение стандартных текстур)
},
drawing: [/* команды отрисовки фона */],
elements: {/* описание элементов */}
}
Как пример использован реальный интерфейс из таумкрафта (реактор аспектов).
Для того, чтобы пример работал, установите таумкрафт или скопируйте оттуда нужные текстуры интерфейса (которые используются в объекте описания интерфейса).
var aspectReactorGui = new UI.StandartWindow({
standart: {
header: {
text: {
text: "Aspect reactor"
},
color: android.graphics.Color.rgb(0x47, 0x26, 0x0c),
frame: "thaum_frame_header"
},
inventory: {
standart: true
},
background: {
bitmap: "thaum_background"
},
minHeight: 600
},
params: {
textures: {
slot: "thaum_slot",
invSlot: "thaum_inv_slot",
selection: "thaum_selection",
closeButton: "thaum_close_button_up",
closeButton2: "thaum_close_button_down",
frame: "thaum_frame_default"
}
},
drawing: [
{type: "bitmap", x: 842, y: 104, bitmap: "aspect_scale_background", scale: 4},
{type: "bitmap", x: 560, y: 100, bitmap: "aspect_reactor_background", scale: 360 / 128},
],
elements: {
"slot1": {type: "slot", x: 400, y: 100, size: 160},
"slot2": {type: "slot", x: 400, y: 300, size: 160},
"aspectScale": {type: "scale", x: 850, y: 120, direction: 1, scale: 8, value: 1, bitmap: "aspectScale_nitor", overlay: "aspect_scale_overlay_1", overlayScale: 4},
"stateText": {type: "text", x: 625, y: 227, width: 90, height: 100, text: "", font: {color: android.graphics.Color.WHITE, shadow: .6, size: 25}}
}
});
UI.testUI(aspectReactorGui); // тестовое открытие после создания
// добавляем созданный интерфейс нашему tile entity из прошлых глав
IDRegistry.genBlockID("testBlock");
// ...
// создаем блок
TileEntity.registerPrototype(BlockID.testBlock, {
defaultValues: {
someValue: 0 // сохраняемое значение someValue, по умолчанию 0
},
tick: function(){
// что то сделать каждый тик, к примеру выводим someValue
Debug.message(this.data.someValue);
},
click: function(id, count, data, coords){
this.data.someValue = 1; // установить значение someValue на 1
},
getGuiScreen: function(){
return aspectReactorGui; // при попытке открыть интерфейс, возвращаем наш объект интерфейса
}
// остальные события не трогаем
});