12b1168acefb6a4104bb7f008df6ac51fcd1de7ecsmpackage com.replica.replicaisland; 22b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 32b1168acefb6a4104bb7f008df6ac51fcd1de7ecsmpublic class InputTouchScreen extends BaseObject { 42b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 52b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private int MAX_TOUCH_POINTS = 5; 62b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private InputXY mTouchPoints[]; 72b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 82b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public InputTouchScreen() { 92b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mTouchPoints = new InputXY[MAX_TOUCH_POINTS]; 102b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm for (int x = 0; x < MAX_TOUCH_POINTS; x++) { 112b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mTouchPoints[x] = new InputXY(); 122b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 132b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 142b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 152b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm @Override 162b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public void reset() { 172b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm for (int x = 0; x < MAX_TOUCH_POINTS; x++) { 182b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mTouchPoints[x].reset(); 192b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 202b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 212b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 222b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public final void press(int index, float currentTime, float x, float y) { 232b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm assert (index >= 0 && index < MAX_TOUCH_POINTS); 242b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (index < MAX_TOUCH_POINTS) { 252b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mTouchPoints[index].press(currentTime, x, y); 262b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 272b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 282b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 292b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public final void release(int index) { 302b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (index < MAX_TOUCH_POINTS) { 312b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mTouchPoints[index].release(); 322b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 332b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 342b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 352b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public void resetAll() { 362b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm for (int x = 0; x < MAX_TOUCH_POINTS; x++) { 372b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mTouchPoints[x].reset(); 382b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 392b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 402b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 412b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public boolean getTriggered(int index, float time) { 422b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm boolean triggered = false; 432b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (index < MAX_TOUCH_POINTS) { 442b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm triggered = mTouchPoints[index].getTriggered(time); 452b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 462b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return triggered; 472b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 482b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 492b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public boolean getPressed(int index) { 502b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm boolean pressed = false; 512b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (index < MAX_TOUCH_POINTS) { 522b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm pressed = mTouchPoints[index].getPressed(); 532b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 542b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return pressed; 552b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 562b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 572b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public final void setVector(int index, Vector2 vector) { 582b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (index < MAX_TOUCH_POINTS) { 592b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm mTouchPoints[index].setVector(vector); 602b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 612b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 622b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 632b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public final float getX(int index) { 642b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm float magnitude = 0.0f; 652b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (index < MAX_TOUCH_POINTS) { 662b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm magnitude = mTouchPoints[index].getX(); 672b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 682b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return magnitude; 692b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 702b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 712b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public final float getY(int index) { 722b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm float magnitude = 0.0f; 732b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (index < MAX_TOUCH_POINTS) { 742b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm magnitude = mTouchPoints[index].getY(); 752b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 762b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return magnitude; 772b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 782b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 792b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public final float getLastPressedTime(int index) { 802b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm float time = 0.0f; 812b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (index < MAX_TOUCH_POINTS) { 822b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm time = mTouchPoints[index].getLastPressedTime(); 832b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 842b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return time; 852b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 862b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 872b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public InputXY findPointerInRegion(float regionX, float regionY, float regionWidth, float regionHeight) { 882b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm InputXY touch = null; 892b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm for (int x = 0; x < MAX_TOUCH_POINTS; x++) { 902b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm final InputXY pointer = mTouchPoints[x]; 912b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm if (pointer.getPressed() && 922b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm getTouchedWithinRegion(pointer.getX(), pointer.getY(), regionX, regionY, regionWidth, regionHeight)) { 932b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm touch = pointer; 942b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm break; 952b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 962b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 972b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return touch; 982b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 992b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 1002b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm private final boolean getTouchedWithinRegion(float x, float y, float regionX, float regionY, float regionWidth, float regionHeight) { 1012b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return (x >= regionX && 1022b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm y >= regionY && 1032b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm x <= regionX + regionWidth && 1042b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm y <= regionY + regionHeight); 1052b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 1062b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 1072b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm public boolean getTriggered(float gameTime) { 1082b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm boolean triggered = false; 1092b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm for (int x = 0; x < MAX_TOUCH_POINTS && !triggered; x++) { 1102b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm triggered = mTouchPoints[x].getTriggered(gameTime); 1112b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 1122b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm return triggered; 1132b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm } 1142b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm 1152b1168acefb6a4104bb7f008df6ac51fcd1de7ecsm} 116