Модуль GameObject

Игровые объекты - расширение к Updatable Objects. В отличии от обновляемые объектов, игровые полностью сохраняются, могут создавать свои экземпляры и отвечать на сигналы-события.



Классы игровых объектов


Чтобы игровой обьект появился в мире, нужно обьявить его класс.

var goblin = new GameObject("goblin", {
//здесь нужно прописать все обработчики событий
});


Конструктор GameObject создает новый класс игрового объекта.
Первый аргумент - имя класса, под которым он будет доступен в некоторых обьектах.
Второй аргумент - прототип класса, содержит свойства экземпляра и обработчики его событий.

 


Обработчики событий



Обработчик события - обычная функция в классе игрового обьекта. Однако самостоятельно запускаться могут только три:

  1. init - вызывается при deploy со всеми его аргументами, здесь можно задать начальные значения для игрового объекта.
  2. loaded - вызывается при загрузке сохранения, необязателен.
  3. update - вызывается каждый тик, содержит логику игрового объекта, обязателен.


Чтобы ваш обработчик работал, нужно вызывать его при каком-то событии:

  • GameObject.callOfType(тип, событие, параметры...) тип - название класса игрового объекта. Событие - название нужного обработчика в кавычках. Параметры - параметры для обработчика, может быть до 10 значений.
    Также существует безопасный вариант callOfTypeSafe, стопроцентно гарантирующий, что событие будет обработано всеми экземплярами этого класса, даже если в следующий тик часть будет уничтожена.
  • GameObject.destroy - уничтожает экземпляр.
  • GameObject.getAllByType(class) - обработывает все экземпляры класса. Возвращает список всех экземпляров.
  • GameObject.deployGameObject(object, параметры для init) -  превращает произвольный объект в игровой. В объекте должны быть методы init и update.
  • GameObject.registerClass(object) - превращает произвольный объект в класс игровых.