Новая система Ивент Листнеров

Deazer

Head Developer
Staff member
Реализована новая более гибкая система ивент листнеров позволяющая избавиться от лишнего хардкода.

Это Механика слушателей произвольных событий. Для того, что бы сторонние разработчики могли добавлять свои реализации реакций на игровые и не только события вводится механизм произвольных слушателей.

Пример имплементации:
Допустим в вашем обработчике происходит действие - к примеру выдачи аугментации или геройства или любое другое действие которое вы реализовали


Метод fireEvent отвечает за генерацию события и передачу его всем зарегистрированным слушателям.
  • Параметры:
    • eventType — тип события, которое произошло.
    • args — произвольное количество аргументов, которые будут переданы слушателям события.
В этом примере:
Пример - GameServer.getInstance().getListeners().fireEvent("activateHero", player, player.getActiveClassId());
где мы передаем 2 аргумента в виде объектов player и player.getActiveClassId(). Количество аргументов не ограничено

Для прослушивания произвольных событий следует создать класс реализующий интерфейс OloloListner и зарегистрировать его как глобальный слушатель через метод GameServer.....addEventListner.

Классы , реализующие интерфейс OloloListner должны обладать 2 методами
listEvents() -возвращающий массив событий, которые следует прослушивать
onEvent() - вызываемый при наступлении одного из событий события. Аргументы: строчный тип события, и произвольный список аргументов
Для каждого типа события свой список аргументов.
Например для события
"activateHero" - события наступающее при получении персонажем статуса геройства, имеет 2 аргумента: <player, player.getActiveClassId()>

Визуализация использования регистрации слушателя:
b9e4f409e7b46ace9899f8576f9dc744.png



Как далее использовать зарегистрированный слушатель.

 
Last edited:
Back
Top