Система библиотек NIDE
Система библиотек 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 (пустого) в директории с библиотекой, она не будет отображаться в управлении библиотеками. Но это нужно только для встроенных библиотек, так как библиотеки проекта и не отображаются в данном окне.
Comments