80LK (обсуждение | вклад) м |
80LK (обсуждение | вклад) м |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 180: | Строка 180: | ||
</div> | </div> | ||
+ | <div class="mw-parser-output"> | ||
=== GRID_3x3_PAGE === | === GRID_3x3_PAGE === | ||
+ | Котроллер ''GRID_3x3_PAGE'' позволяет создавать страницы рецептов с сеткой 3x3. | ||
+ | <syntaxhighlight lang="JavaScript">{ | ||
+ | controller: PageControllers.GRID_3x3_PAGE, | ||
+ | title: "Workbench Recipe", | ||
+ | recipes: [{ | ||
+ | grid: [ | ||
+ | ["b", "b", "b"], | ||
+ | ["b", "g", "b"], | ||
+ | ["b", "8", "b"] | ||
+ | ], | ||
+ | materials: { | ||
+ | "b": { id: 4, data: 0 }, | ||
+ | "g": { id: 1, data: 0 }, | ||
+ | }, | ||
+ | result: { id: 61, count: 3 } | ||
+ | }], | ||
+ | elements: [ | ||
+ | { text: "Text"} | ||
+ | ], | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | |||
+ | <div class="mw-parser-output"> | ||
=== Создание собственных контроллеров === | === Создание собственных контроллеров === | ||
+ | |||
+ | Для создания собственных контроллеров необходимо в поле ''controller'' передать функцию, которая будет рисовать элементы на странице. | ||
+ | <syntaxhighlight lang="JavaScript">PageControllers["MY_TEST_PAGE"] = function(params, elements, container, section) { | ||
+ | let x = section === "left" ? 50 : 550; | ||
+ | elements["text_" + section + "_" + i] = { | ||
+ | type: "text", | ||
+ | x: section, | ||
+ | y: 40, | ||
+ | text: params.title | ||
+ | }; | ||
+ | |||
+ | if (params.elements) | ||
+ | GuideHelper.drawTextArray(params.elements, x, 55, globalSize, elements, section); | ||
+ | }; | ||
+ | //... | ||
+ | { | ||
+ | controller: PageControllers.MY_TEST_PAGE, | ||
+ | title: "I'm title", | ||
+ | elements: [ | ||
+ | { text: "Text" } | ||
+ | ], | ||
+ | } | ||
+ | //...</syntaxhighlight> | ||
+ | |||
+ | Передаваемые аргументы: | ||
+ | |||
+ | *'''''params''''' – объект секции, для которой вызывается функция | ||
+ | *'''''elements''''' – элементы интерфейса | ||
+ | *'''''container''''' – контейнер интерфейса | ||
+ | *'''''section''''' – название секции(left, right) | ||
</div> | </div> |
ModAPI.addAPICallback("GuideAPI", function(api) {
const GuideAPI = api.GuideAPI;
const GuideHelper = api.GuideHelper;
const PageControllers = api.PageControllers;
IDRegistry.genItemID("testGuide");
Item.createItem("testGuide", "Test Guide", {
name: "stick"
});
GuideAPI.registerGuide("guideTest", {
item: ItemID.testGuide,
debug: false,
textures: {
background: "your_texture",
nextLink: "your_texture",
preLink: "your_texture",
close: "your_texture",
},
pages: {
"default": {
nextLink: "test",
left: {
controller: PageControllers.BASIC_PAGE,
elements: []
},
right: {
controller: PageControllers.BASIC_PAGE,
elements: []
}
}
}
});
});
Регистрация происходит через метод GuideAPI.registerGuide(unique, params), где unique – уникальный идентификатор, params – объект с параметрами.
Параметры:
Контроллер – функция, указанная под идентификатором controller в объекте секции. GuideAPI предоставляет стандартные контроллеры, находящиеся в объекте PageControllers, которые позволяют решить большинство задач.
{
controller: PageControllers.BASIC_PAGE,
elements: [
{text: "I'm simple text!" },
{ text: "I'm big text!", size: 20 },
{ text: "I'm red text!", color: android.graphics.Color.RED },
{ text: "I'm underlined bold text!", underline: true, bold: true },
{ text: "I'm link. Click me, please!", color: android.graphics.Color.BLUE, link: "page2" }
]
}
Объект elements доступен для использования во всех стандартных контроллерах. Он содержит массив строк, каждая из которых отображается на новой строке. Если текст не влезает в границы секции, он будет перенесён.
Параметры текста:
Котроллер ITEM_PAGE позволяет создавать страницы с группой предметов и текстом.
{
controller: PageControllers.ITEM_PAGE,
items: [
{ id: 1, data: 1 },
{ id: 264 },
{ id: 266 },
],
elements: [
{ text: "I'm text", size: 20 },
{ text: "And I'm text too" }
]
}
items – массив из отображаемых предметов. Первый из них будет помещён в большой слот.
Контроллер ITEM_GRID_PAGE позволяет располагать предметы сеткой.
{
controller: PageControllers.ITEM_GRID_PAGE,
columns: 8,
item_size: 30,
items: [
{ id: 1, data: 1, count: 34 },
{ id: 264, link: "test" },
{
id: 265,
clicker: {
onClick: function() {
alert("CLICK!!!!!!!!!!!!!!!!!!11");
}
}
},
{ id: 4 },
{ id: 5 },
{ id: 6 },
{ id: 7 },
{ id: 8 },
{ id: 9 },
{ id: 10 },
],
elements: [
{ text: "HELLO", size: 15, underline: true, bold: true }
]
}
items – массив из отображаемых предметов
сolumns – количество колонок. По умолчанию 6
item_size – размер предмета. По умолчанию 60
Параметры для предметов:
Котроллер OTO_RECIPE_PAGE позволяет создавать страницы с рецептами “Один к одному”.
{
controller: PageControllers.OTO_RECIPE_PAGE,
title: "Furnace Recipe",
type: 0,
bar_texture: "furnace_bar_guide",
recipes: [
{
input: { id: 4, data: 1, count: 10 },
output: { id: 264 }
},
{
input: { id: 264 },
output: { id: 265 }
}
],
elements: [
{ text: "Text" },
{ text: "And Text" },
]
}
Если type равен 0, recipes – массив из объектов, в которых содержится предмет на вход(input) и предмет на выход(output).
{
controller: PageControllers.OTO_RECIPE_PAGE,
title: "Furnace Recipe",
type: 1,
bar_texture: "furnace_bar_guide",
recipes: [
{ id: 1 },
{ id: 17, data: 1 }
],
elements: [
{ text: "This is type 1" }
]
}
Если type равен 1, recipes – массив из объектов, которые содержат информацию о предмет на вход. В выходной слот будет помещаться результат обработки указанного предмета в печи.
Остальные параметры:
Котроллер GRID_3x3_PAGE позволяет создавать страницы рецептов с сеткой 3x3.
{
controller: PageControllers.GRID_3x3_PAGE,
title: "Workbench Recipe",
recipes: [{
grid: [
["b", "b", "b"],
["b", "g", "b"],
["b", "8", "b"]
],
materials: {
"b": { id: 4, data: 0 },
"g": { id: 1, data: 0 },
},
result: { id: 61, count: 3 }
}],
elements: [
{ text: "Text"}
],
}
Для создания собственных контроллеров необходимо в поле controller передать функцию, которая будет рисовать элементы на странице.
PageControllers["MY_TEST_PAGE"] = function(params, elements, container, section) {
let x = section === "left" ? 50 : 550;
elements["text_" + section + "_" + i] = {
type: "text",
x: section,
y: 40,
text: params.title
};
if (params.elements)
GuideHelper.drawTextArray(params.elements, x, 55, globalSize, elements, section);
};
//...
{
controller: PageControllers.MY_TEST_PAGE,
title: "I'm title",
elements: [
{ text: "Text" }
],
}
//...
Передаваемые аргументы: