Skip to content

Instantly share code, notes, and snippets.

@FyiurAmron
Created February 26, 2018 22:53
Show Gist options
  • Save FyiurAmron/a3434d4d2f946f9f30a29dcd87bf834d to your computer and use it in GitHub Desktop.
Save FyiurAmron/a3434d4d2f946f9f30a29dcd87bf834d to your computer and use it in GitHub Desktop.
package vax.input;
import com.badlogic.gdx.input.GestureDetector.GestureListener;
import com.badlogic.gdx.math.Vector2;
/**
@author toor
@param <T>
*/
public class GestureListenerProxy<T extends GestureListener> implements GestureListener {
private T gestureListener;
private boolean enabled = true, processed;
public GestureListenerProxy () {
}
public GestureListenerProxy ( T gestureListener ) {
this.gestureListener = gestureListener;
}
public T getGestureListener () {
return gestureListener;
}
public void setGestureListener ( T gestureListener ) {
this.gestureListener = gestureListener;
}
public boolean isEnabled () {
return enabled;
}
public void setEnabled ( boolean enabled ) {
this.enabled = enabled;
}
public boolean isProcessed () {
return processed;
}
public boolean getAndResetProcessedFlag () {
boolean b = processed;
processed = false;
return b;
}
public void resetProcessedFlag () {
processed = false;
}
private boolean process ( boolean result ) {
processed |= result;
return result;
}
private boolean isValid () {
return enabled && gestureListener != null;
}
@Override
public boolean touchDown ( float x, float y, int pointer, int button ) {
boolean result = isValid() ? gestureListener.touchDown( x, y, pointer, button ) : false;
return process( result );
}
@Override
public boolean tap ( float x, float y, int count, int button ) {
boolean result = isValid() ? gestureListener.tap( x, y, count, button ) : false;
return process( result );
}
@Override
public boolean longPress ( float x, float y ) {
boolean result = isValid() ? gestureListener.longPress( x, y ) : false;
return process( result );
}
@Override
public boolean fling ( float velocityX, float velocityY, int button ) {
boolean result = isValid() ? gestureListener.fling( velocityX, velocityY, button ) : false;
return process( result );
}
@Override
public boolean pan ( float x, float y, float deltaX, float deltaY ) {
boolean result = isValid() ? gestureListener.pan( x, y, deltaX, deltaY ) : false;
return process( result );
}
@Override
public boolean panStop ( float x, float y, int pointer, int button ) {
boolean result = isValid() ? gestureListener.panStop( x, y, pointer, button ) : false;
return process( result );
}
@Override
public boolean zoom ( float initialDistance, float distance ) {
boolean result = isValid() ? gestureListener.zoom( initialDistance, distance ) : false;
return process( result );
}
@Override
public boolean pinch ( Vector2 initialPointer1, Vector2 initialPointer2, Vector2 pointer1, Vector2 pointer2 ) {
boolean result = isValid() ? gestureListener.pinch( initialPointer1, initialPointer2, pointer1, pointer2 ) : false;
return process( result );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment