Add support for events with ruby-only handlers.

This commit is contained in:
Major-
2014-02-06 21:42:12 +00:00
parent a6f42c4088
commit cda640e5ae
3 changed files with 10 additions and 33 deletions
-24
View File
@@ -5,10 +5,6 @@
<handler>org.apollo.game.event.handler.impl.PrivacyOptionEventHandler</handler>
</chain>
</event>
<event>
<type>org.apollo.game.event.impl.KeepAliveEvent</type>
<chain />
</event>
<event>
<type>org.apollo.game.event.impl.PlayerDesignEvent</type>
<chain>
@@ -91,24 +87,4 @@
<handler>org.apollo.game.event.handler.impl.ItemVerificationHandler</handler>
</chain>
</event>
<event>
<type>org.apollo.game.event.impl.SpamPacketEvent</type>
<chain />
</event>
<event>
<type>org.apollo.game.event.impl.MouseClickEvent</type>
<chain />
</event>
<event>
<type>org.apollo.game.event.impl.ArrowKeyEvent</type>
<chain />
</event>
<event>
<type>org.apollo.game.event.impl.FocusUpdateEvent</type>
<chain />
</event>
<event>
<type>org.apollo.game.event.impl.TakeTileItemEvent</type>
<chain />
</event>
</events>
@@ -3,6 +3,7 @@ package org.apollo.game.event.handler.chain;
import java.util.Map;
import org.apollo.game.event.Event;
import org.apollo.game.event.handler.EventHandler;
/**
* A group of {@link EventHandlerChain}s classified by the {@link Event} type.
@@ -34,7 +35,11 @@ public final class EventHandlerChainGroup {
*/
@SuppressWarnings("unchecked")
public <E extends Event> EventHandlerChain<E> getChain(Class<E> clazz) {
return (EventHandlerChain<E>) chains.get(clazz);
EventHandlerChain<E> chain = (EventHandlerChain<E>) chains.get(clazz);
if (chain == null) {
chains.put(clazz, chain = new EventHandlerChain<E>(new EventHandler[0]));
}
return chain;
}
}
@@ -54,11 +54,9 @@ public final class PluginContext {
*/
public <T extends Event> void addEventDecoder(int releaseNo, int opcode, EventDecoder<T> decoder) {
Release release = context.getRelease();
if (release.getReleaseNumber() != releaseNo) {
return;
if (release.getReleaseNumber() == releaseNo) {
release.register(opcode, decoder);
}
release.register(opcode, decoder);
}
/**
@@ -71,11 +69,9 @@ public final class PluginContext {
*/
public <T extends Event> void addEventEncoder(int releaseNo, Class<T> event, EventEncoder<T> encoder) {
Release release = context.getRelease();
if (release.getReleaseNumber() != releaseNo) {
return;
if (release.getReleaseNumber() == releaseNo) {
release.register(event, encoder);
}
release.register(event, encoder);
}
/**