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> <handler>org.apollo.game.event.handler.impl.PrivacyOptionEventHandler</handler>
</chain> </chain>
</event> </event>
<event>
<type>org.apollo.game.event.impl.KeepAliveEvent</type>
<chain />
</event>
<event> <event>
<type>org.apollo.game.event.impl.PlayerDesignEvent</type> <type>org.apollo.game.event.impl.PlayerDesignEvent</type>
<chain> <chain>
@@ -91,24 +87,4 @@
<handler>org.apollo.game.event.handler.impl.ItemVerificationHandler</handler> <handler>org.apollo.game.event.handler.impl.ItemVerificationHandler</handler>
</chain> </chain>
</event> </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> </events>
@@ -3,6 +3,7 @@ package org.apollo.game.event.handler.chain;
import java.util.Map; import java.util.Map;
import org.apollo.game.event.Event; 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. * A group of {@link EventHandlerChain}s classified by the {@link Event} type.
@@ -34,7 +35,11 @@ public final class EventHandlerChainGroup {
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <E extends Event> EventHandlerChain<E> getChain(Class<E> clazz) { 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) { public <T extends Event> void addEventDecoder(int releaseNo, int opcode, EventDecoder<T> decoder) {
Release release = context.getRelease(); Release release = context.getRelease();
if (release.getReleaseNumber() != releaseNo) { if (release.getReleaseNumber() == releaseNo) {
return; 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) { public <T extends Event> void addEventEncoder(int releaseNo, Class<T> event, EventEncoder<T> encoder) {
Release release = context.getRelease(); Release release = context.getRelease();
if (release.getReleaseNumber() != releaseNo) { if (release.getReleaseNumber() == releaseNo) {
return; release.register(event, encoder);
} }
release.register(event, encoder);
} }
/** /**