Система библиотек NIDE

Мало кто заинтересовался таким новшеством NIDE, как система библиотек. А зря, так как это мощный и удобный инструмент для работы над крупными проектами, а так же некоторое количество уже написанного кода. Итак, каждая библиотека NIDE — это папка (директория) с двумя или более файлами. По умолчанию при создании новой библиотеки (Project — New library) создается два основных файла — lib.js и info.nlib. В первом файле хранится код библиотеки. При создании своей библиотеки стоит помнить, что содержимое файла просто вставляется в начало кода, поэтому не стоит создавать глобальные переменные в глобальном пространстве имен. В идеале следует создать объект и все переменные библиотеки, а также ее функции поместить внутрь. Пример такого объекта (упрощенный код библиотеки Randomizer):

1
2
3
4
5
6
7
8
9
10
11
12
13
var Randomizer = { 
    Random: (new java.util.Random(Util.getWorldSeed())) 
};
Randomizer.GaussRandom = function(max, depth){
    var result = 0;
    for(var i = 0; i < depth; i++){
        result += this.Random.nextInt(max * 2) - max;
    }
    return Math.round(Math.abs(result / depth));
};
Randomizer.Double = function(){ 
    return this.Random.nextDouble(); 
}

Как вы видите, переменная Random находится внутри объекта, а значит не будет конфликтовать с объявленной пользователем переменной с аналогичным названием. Следует также помнить, что название главного объекта должно совпадать с названием библиотеки (директории с библиотекой).

Далее следует отредактировать файл info.nlib. По умолчанию в нем такие строчки кода:

1
2
nide-api:1
library-version:1.0

nide-api — уровень API программы, то есть набора библиотек и команд управляющих файлов .nproj и .nlib.

library-version — версия библиотеки.

Для того, чтобы NIDE добавила ваши библиотеки в списки автодополнения и подсвети синтаксиса, необходимо прописать все ключевые слова, которые используются в библиотеке. Для этого добавим (в наш пример Randomizer’а) такие строчки:

1
2
keyword:GaussRandom
keyword:Double

После сохранения файла и обновления проекта, получаем следующий результат:

Теперь функции автодополнения и подсветки синтаксиса работают и с нашими библиотеками)))

Но это не все их возможности. Во-первых некоторые библиотеки могут нуждаться в функциях из других. Тогда надо прописать такую строчку кода в info.nlib:

1
requires-library:nide/Util

(требуется библиотека).

Еще один нюанс, возможно вы с таким не столкнетесь, но все же расскажу. Существует два типа библиотек — библиотеки проекта и встроенные библиотеки, написанные мною. Для того, чтобы подключить одну из них, необходимо прописать путь nide/libname для встроенных или project/libname для библиотек проекта в файле проекта в формате

1
include-library:nide/Util

В большей части случаев за вас это сделает NIDE — будь то управление библиотеками или создание пользовательской. Но в requires-library, о котором мы говорили выше, это придется делать все-таки вручную.

Еще две особенности системы библиотек были добавлены для полноценной поддержки ModCore. Во-первых, команда copy-to-out:filename копирует файл filename в обе выходных директории — со скриптом и ресурспаком и с выходным .modpkg. Во-вторых, при наличии файла guidisable (пустого) в директории с библиотекой, она не будет отображаться в управлении библиотеками. Но это нужно только для встроенных библиотек, так как библиотеки проекта и не отображаются в данном окне.

Запись опубликована в рубрике ModPE. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *