| 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; |
| } |
| |
| } |