Контекст исполнения
Определяет пространство, в котором находится весь ваш код. Здесь хранятся значения переменных и констант, функции и преобразованные классы, а также, выполняются будущие взаимодействия кода с пространством.
Каждая функция и объект могут создать собственное, так называемое, "локальное" пространство. Оно не доступно извне, но значения из него могут быть получены по иерархии ниже. Думаю, если большая часть из написанного остается непонятной, самое время исправить эту проблему.
API — глобальный контекст
Если в браузерах, и других подобных браузеру движках, основным объектом является страница, контент которой мы изменяем, то в случае Inner Core, мы взаимодействуем непосредственно с игрой. А для этого нам нужны пространства, методы и классы, которые и находятся в глобальном контексте.
Inner Core определяет несколько глобальных контекстов, каждый из которых имеет свои определенные цели. На протяжении многих лет основным из них остается Core Engine, так как именно вокруг него и расположен весь функционал лаунчера. Этот контекст расширяет возможности другого, Adapted Script. Он предоставляет сугубо нативные методы, предоставляемые самой игрой, либо вспомогательные для работы самого Core Engine. Существуют еще Preloader, используемый исключительно презагрузчиком, и Preferences Window API, который был задействован для функционирования верстака, а когда-то и внутреигровых настроек модов. Их использование весьма специфично, так что мы не будем рассматривать их подробно.
- AdaptedScript
- CoreEngine
- PrefsWinAPI
- Preloader
Эти контексты используются в каждом скрипте и описываются в свойствах api
вашего build.config.
В случае Core Engine возможно изменение глобального контекста, как это сделано, например, в Ender IO:
Item.createDyeItem = function(id, name, type) {
IDRegistry.genItemID(id);
Item.createItem(id, name, {
name: "item_material_organic_" + type + "_dye"
}, { stack: 64 });
};
Item.createDyeItem("greenDye", "Organic Green Dye", "green");
Item.createDyeItem("blackDye", "Organic Black Dye", "black");
Item.createDyeItem("brownDye", "Organic Brown Dye", "brown");