161 lines
3.1 KiB
Java
161 lines
3.1 KiB
Java
package de.samdev.colorrunner.input;
|
|
|
|
import com.badlogic.gdx.Input;
|
|
import com.badlogic.gdx.InputProcessor;
|
|
import com.badlogic.gdx.input.GestureDetector.GestureListener;
|
|
import com.badlogic.gdx.math.Vector2;
|
|
|
|
import de.samdev.colorrunner.CRGame;
|
|
import de.samdev.colorrunner.game.world.SwipeDirection;
|
|
|
|
public class CRGameInputProcessor implements InputProcessor, GestureListener {
|
|
private GameInputListener owner;
|
|
|
|
public CRGameInputProcessor(GameInputListener gsc) {
|
|
this.owner = gsc;
|
|
}
|
|
|
|
public void update() {
|
|
|
|
}
|
|
|
|
@Override
|
|
public boolean keyDown(int keycode) {
|
|
if (keycode == Input.Keys.UP) {
|
|
owner.switchColor(SwipeDirection.UP);
|
|
return true;
|
|
}
|
|
|
|
if (keycode == Input.Keys.RIGHT) {
|
|
owner.switchColor(SwipeDirection.RIGHT);
|
|
return true;
|
|
}
|
|
|
|
if (keycode == Input.Keys.DOWN) {
|
|
owner.switchColor(SwipeDirection.DOWN);
|
|
return true;
|
|
}
|
|
|
|
if (keycode == Input.Keys.LEFT) {
|
|
owner.switchColor(SwipeDirection.LEFT);
|
|
return true;
|
|
}
|
|
|
|
if (keycode == Input.Keys.SPACE) {
|
|
owner.doJump();
|
|
return true;
|
|
}
|
|
|
|
|
|
if (keycode == Input.Keys.R && CRGame.DEBUG) {
|
|
owner.reset();
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean keyUp(int keycode) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean keyTyped(char character) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
|
|
owner.doJump();
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean touchDragged(int screenX, int screenY, int pointer) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean mouseMoved(int screenX, int screenY) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean scrolled(int amount) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean touchDown(float x, float y, int pointer, int button) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean tap(float x, float y, int count, int button) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean longPress(float x, float y) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean fling(float velocityX, float velocityY, int button) {
|
|
double angle = Math.atan2(velocityX, velocityY) + Math.PI;
|
|
|
|
if (angle < Math.PI * 1/4.0) {
|
|
owner.switchColor(SwipeDirection.UP);
|
|
return true;
|
|
} else if (angle < Math.PI * 3/4.0) {
|
|
owner.switchColor(SwipeDirection.LEFT);
|
|
return true;
|
|
} else if (angle < Math.PI * 5/4.0) {
|
|
owner.switchColor(SwipeDirection.DOWN);
|
|
return true;
|
|
} else if (angle < Math.PI * 7/4.0) {
|
|
owner.switchColor(SwipeDirection.RIGHT);
|
|
return true;
|
|
} else {
|
|
owner.switchColor(SwipeDirection.UP);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean pan(float x, float y, float deltaX, float deltaY) {
|
|
// NOP
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean panStop(float x, float y, int pointer, int button) {
|
|
// NOP
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean zoom(float initialDistance, float distance) {
|
|
// NOP
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean pinch(Vector2 initialPointer1, Vector2 initialPointer2, Vector2 pointer1, Vector2 pointer2) {
|
|
// NOP
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void pinchStop() {
|
|
// NOP
|
|
}
|
|
|
|
}
|