package com.ftloverdrive.event.handler;
import com.badlogic.gdx.utils.Pools;
import com.ftloverdrive.core.OverdriveContext;
import com.ftloverdrive.event.OVDEvent;
import com.ftloverdrive.event.OVDEventHandler;
import com.ftloverdrive.event.TickEvent;
import com.ftloverdrive.event.TickListener;
public class TickEventHandler implements OVDEventHandler {
private Class[] eventClasses;
private Class[] listenerClasses;
public TickEventHandler() {
eventClasses = new Class[] { TickEvent.class };
listenerClasses = new Class[] { TickListener.class };
}
@Override
public Class[] getEventClasses() {
return eventClasses;
}
@Override
public Class[] getListenerClasses() {
return listenerClasses;
}
@SuppressWarnings("unchecked")
@Override
public void handle( OverdriveContext context, OVDEvent e, Object[] listeners ) {
TickEvent event = (TickEvent)e;
for ( int i = listeners.length-2; i >= 0; i-=2 ) {
if ( listeners[i] == TickListener.class ) {
((TickListener)listeners[i+1]).ticksAccumulated( event );
}
}
}
@SuppressWarnings("unchecked")
@Override
public void disposeEvent( OVDEvent e ) {
if ( e.getClass() == TickEvent.class ) {
Pools.get( TickEvent.class ).free( (TickEvent)e );
}
}
}