blob: 1d8cd6ba0e187ed95eedb9e582bd53aa8796b46c [file] [log] [blame]
package com.replica.replicaisland;
public class InputTouchScreen extends BaseObject {
private int MAX_TOUCH_POINTS = 5;
private InputXY mTouchPoints[];
public InputTouchScreen() {
mTouchPoints = new InputXY[MAX_TOUCH_POINTS];
for (int x = 0; x < MAX_TOUCH_POINTS; x++) {
mTouchPoints[x] = new InputXY();
}
}
@Override
public void reset() {
for (int x = 0; x < MAX_TOUCH_POINTS; x++) {
mTouchPoints[x].reset();
}
}
public final void press(int index, float currentTime, float x, float y) {
assert (index >= 0 && index < MAX_TOUCH_POINTS);
if (index < MAX_TOUCH_POINTS) {
mTouchPoints[index].press(currentTime, x, y);
}
}
public final void release(int index) {
if (index < MAX_TOUCH_POINTS) {
mTouchPoints[index].release();
}
}
public void resetAll() {
for (int x = 0; x < MAX_TOUCH_POINTS; x++) {
mTouchPoints[x].reset();
}
}
public boolean getTriggered(int index, float time) {
boolean triggered = false;
if (index < MAX_TOUCH_POINTS) {
triggered = mTouchPoints[index].getTriggered(time);
}
return triggered;
}
public boolean getPressed(int index) {
boolean pressed = false;
if (index < MAX_TOUCH_POINTS) {
pressed = mTouchPoints[index].getPressed();
}
return pressed;
}
public final void setVector(int index, Vector2 vector) {
if (index < MAX_TOUCH_POINTS) {
mTouchPoints[index].setVector(vector);
}
}
public final float getX(int index) {
float magnitude = 0.0f;
if (index < MAX_TOUCH_POINTS) {
magnitude = mTouchPoints[index].getX();
}
return magnitude;
}
public final float getY(int index) {
float magnitude = 0.0f;
if (index < MAX_TOUCH_POINTS) {
magnitude = mTouchPoints[index].getY();
}
return magnitude;
}
public final float getLastPressedTime(int index) {
float time = 0.0f;
if (index < MAX_TOUCH_POINTS) {
time = mTouchPoints[index].getLastPressedTime();
}
return time;
}
public InputXY findPointerInRegion(float regionX, float regionY, float regionWidth, float regionHeight) {
InputXY touch = null;
for (int x = 0; x < MAX_TOUCH_POINTS; x++) {
final InputXY pointer = mTouchPoints[x];
if (pointer.getPressed() &&
getTouchedWithinRegion(pointer.getX(), pointer.getY(), regionX, regionY, regionWidth, regionHeight)) {
touch = pointer;
break;
}
}
return touch;
}
private final boolean getTouchedWithinRegion(float x, float y, float regionX, float regionY, float regionWidth, float regionHeight) {
return (x >= regionX &&
y >= regionY &&
x <= regionX + regionWidth &&
y <= regionY + regionHeight);
}
public boolean getTriggered(float gameTime) {
boolean triggered = false;
for (int x = 0; x < MAX_TOUCH_POINTS && !triggered; x++) {
triggered = mTouchPoints[x].getTriggered(gameTime);
}
return triggered;
}
}