Subversion Repository Public Repository

fonline_sdk

This repository has no backups
This repository's network speed is throttled to 100KB/sec

Changeset 625

Committed by cvet on Mon 06 Jun, 2016 07:03:19 +0000

Commit Message:

Введена новая система событий.

Событие определяется прагмой event:
#pragma event "EventMouseUp( int button )"
Название события EventMouseUp, теперь оно будет доступно по глобальной переменной __EventMouseUp.

Чтобы подписаться на все события необходимо вызвать метод Subscribe и передать функцию, которая будет вызываться:
__EventMouseUp.Subscribe( func );

Чтобы подписаться на события при определенных значениях параметров необходимо использовать метод SubscribeToX, где X это имя параметра с заглавной:
__EventMouseUp.SubscribeToButton( MOUSE_BUTTON_LEFT, funс2 ) - func2 будет вызываться только тогда, когда параметр button равен MOUSE_BUTTON_LEFT.
То же самое, можно и нужно делать, когда необходимо подписаться на определенного персонажа, предмет или карту в событии, чтобы ловить только нужные.

Отписаться от события нужно таким же образом, что и подписываться, имена методов Unsubscribe, UnsubscribeFromX.
Отписаться от всего UnsubscribeAll.

Вызвать событие bool Raise(...).
В Core.fosh находятся те события, которые вызываются движком, со временем они сократятся до необходимого минимума.
Обязательно следите за константностью параметров, которые передаются в событие, дабы позволять или запрещать модификацию сущностей.

Функция события может прерывать дольнейшую обработку возвратив false.
После чего дальнейшая обработка прекращается, а Raise возвращает false.

Так же возможен вызов события в отложенном режиме, когда обработчики будут вызваны не синхронно, а в конце логического цикла, данная возможность предотвратит влияние модификаций сущностей на логику работы вашего кода.
Чтобы указать добавьте тег [deferred] после параметров
#pragma event "EventMouseUp( int button ) deferred"

Changes