Редактирование:GuideAPI

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
 
<div class="mw-parser-output"><div class="mw-parser-output">
 
<div class="mw-parser-output"><div class="mw-parser-output">
<div class="mw-parser-output">
 
 
== GuideAPI ==
 
== GuideAPI ==
 
<div class="mw-parser-output">'''GuideAPI '''– мод-библиотека, предоставляющая большие возможности для создания игровых документаций.</div> <div class="mw-parser-output"><syntaxhighlight lang="JavaScript">ModAPI.addAPICallback("GuideAPI", function(api) {
 
<div class="mw-parser-output">'''GuideAPI '''– мод-библиотека, предоставляющая большие возможности для создания игровых документаций.</div> <div class="mw-parser-output"><syntaxhighlight lang="JavaScript">ModAPI.addAPICallback("GuideAPI", function(api) {
Строка 38: Строка 37:
 
});</syntaxhighlight>
 
});</syntaxhighlight>
  
Регистрация происходит через метод ''GuideAPI.registerGuide(unique, params)'', где '''''unique'''''&nbsp;– уникальный идентификатор, '''''params'''''&nbsp;– объект с параметрами.<br/> Параметры:
+
Регистрация происходит через метод ''GuideAPI.registerGuide(unique, params)'', где '''''unique'''''– уникальный идентификатор, '''''params'''''– объект с параметрами.<br/> Параметры:
  
*Объект '''''textures''''' задаёт текстуры для интерфейса. Если не объявлен, будет использоваться стандартное оформление  
+
*Объект '''''textures'''''задаёт текстуры для интерфейса. Если не объявлен, будет использоваться стандартное оформление  
 
**<u>''background''</u>''&nbsp;''– текстура заднего фона  
 
**<u>''background''</u>''&nbsp;''– текстура заднего фона  
 
**<u>''nextLink''</u>''– текстура для кнопки “вперёд”''  
 
**<u>''nextLink''</u>''– текстура для кнопки “вперёд”''  
Строка 47: Строка 46:
 
*Объект '''item''' задаёт ид предмета, при клике которым происходит открытие интерфейса. Является необязательным параметром  
 
*Объект '''item''' задаёт ид предмета, при клике которым происходит открытие интерфейса. Является необязательным параметром  
 
*Если '''debug''' объявлен и равен true, у интерфейса вызывается метод setDebugEnabled(true)  
 
*Если '''debug''' объявлен и равен true, у интерфейса вызывается метод setDebugEnabled(true)  
*Объект '''pages''' содержит страницы. Каждая имеет правую'''''(right)''''' и левую'''''(left)''''' секции, для которых задаются контроллеры'''''(controller)'''''. Любую из них можно пропустить. '''''nextLink'''''&nbsp;содержит идентификатор страницы, на которую происходит переход при нажатии кнопки “вперёд”, '''''preLink'''''при нажатии кнопки “назад”. При открытии интерфейса происходит загрузка страницы с идентификатором '''''default'''''.  
+
*Объект '''pages''' содержит страницы. Каждая имеет правую'''''(right)''''' и левую'''''(left)''''' секции, для которых задаются контроллеры'''''(controller)'''''. Любую из них можно пропустить. '''''nextLink'''''содержит идентификатор страницы, на которую происходит переход при нажатии кнопки “вперёд”, '''''preLink'''''при нажатии кнопки “назад”. При открытии интерфейса происходит загрузка страницы с идентификатором '''''default'''''.  
<div class="mw-parser-output"><div class="mw-parser-output">&nbsp;</div> </div> </div> </div>
+
<div class="mw-parser-output">
 +
== Контроллеры ==
  
== Контроллеры ==
+
'''Контроллер '''– функция, указанная под идентификатором '''''controller'''''в объекте секции. GuideAPI предоставляет стандартные контроллеры, находящиеся в объекте ''PageControllers'', которые позволяют решить большинство задач.
  
'''Контроллер '''– функция, указанная под идентификатором '''''controller'''''&nbsp;в объекте секции. GuideAPI предоставляет стандартные контроллеры, находящиеся в объекте ''PageControllers'', которые позволяют решить большинство задач.
 
<div class="mw-parser-output">
 
 
=== BASIC_PAGE ===
 
=== BASIC_PAGE ===
<div class="mw-parser-output">Контроллер ''BASIC_PAGE''&nbsp;позволяет создавать простые страницы с текстом.</div> <div class="mw-parser-output"><syntaxhighlight lang="JavaScript">{
 
    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" }
 
    ]
 
}</syntaxhighlight>
 
 
Объект '''''elements''''' доступен для использования во всех стандартных контроллерах. Он содержит массив строк, каждая из которых отображается на новой строке. Если текст не влезает в границы секции, он будет перенесён.<br/> Параметры текста:
 
 
*'''size''' – размер шрифта
 
*'''color'''&nbsp;– цвет текста(android.graphics.Color.RED, android.graphics.Color.BLUE и тд)
 
*'''underline''' – подчёркнутый ли текст
 
*'''bold''' – жирный ли текст
 
*'''link''' – идентификатор страница, на которую будет осуществлён переход при клике на текст
 
</div> </div>
 
 
<div class="mw-parser-output">
 
<div class="mw-parser-output">
 
=== ITEM_PAGE ===
 
=== ITEM_PAGE ===
  
Котроллер ''ITEM_PAGE ''позволяет создавать страницы с группой предметов и текстом.
 
<syntaxhighlight lang="JavaScript">{
 
    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" }
 
    ]
 
}</syntaxhighlight>
 
 
'''''items''''' – массив из отображаемых предметов. Первый из них будет помещён в большой слот.
 
</div>
 
 
<div class="mw-parser-output">
 
 
=== ITEM_GRID_PAGE ===
 
=== ITEM_GRID_PAGE ===
  
Контроллер ''ITEM_GRID_PAGE ''позволяет располагать предметы сеткой.
 
<syntaxhighlight lang="JavaScript">{
 
    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 }
 
    ]
 
}</syntaxhighlight>
 
 
'''''items''''' – массив из отображаемых предметов<br/> '''''сolumns''''' – количество колонок. По умолчанию 6<br/> '''''item_size''''' – размер предмета. По умолчанию 60<br/> Параметры для предметов:
 
 
*'''''link''''' – идентификатор страница, на которую будет осуществлён переход при клике на текст
 
*'''''clicker''''' – объект клика.
 
**<u>''onClick''</u> – короткий клик
 
**''<u>onLongClick</u>'' - длинный 
 
</div>
 
 
<div class="mw-parser-output">
 
 
=== OTO_RECIPE_PAGE ===
 
=== OTO_RECIPE_PAGE ===
  
Котроллер ''OTO_RECIPE_PAGE'' позволяет создавать страницы с рецептами ''“Один к одному”''.
 
<syntaxhighlight lang="JavaScript">{
 
    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" },
 
    ]
 
}</syntaxhighlight>
 
 
Если '''''type''''' равен 0, '''''recipes''''' – массив из объектов, в которых содержится предмет на вход'''''(input)''''' и предмет на выход'''''(output)'''''.
 
<syntaxhighlight lang="JavaScript">{
 
    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" }
 
    ]
 
}</syntaxhighlight>
 
 
Если '''''type''''' равен 1, '''''recipes''''' – массив из объектов, которые содержат информацию о предмет на вход. В выходной слот будет помещаться результат обработки указанного предмета в печи.<br/> Остальные параметры:
 
 
*'''''title''''' – заголовок страницы
 
*'''''bar_texture''''' – текстура для индикатора прогресса
 
</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">
 
 
=== Создание собственных контроллеров ===
 
=== Создание собственных контроллеров ===
 
+
</div> </div> </div> </div> </div>
Для создания собственных контроллеров необходимо в поле ''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>
 

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии GNU Free Documentation License 1.3 или более поздняя (см. Mineprogramming wiki:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!