}\r
\r
@Override public void onMouse (int action, int x, int y, int button) {\r
- if (action != ES_MOUSE_WHEEL) input.registerMouseEvent(action, x, y, button);\r
+ input.registerMouseEvent(action, x, y, button);\r
}\r
\r
@Override public void quit () {\r
}\r
input.processEvents();\r
listener.render();\r
+ input.justTouched = false;\r
}\r
\r
@Override public void resize (int width, int height) {\r
int mouseX = 0;\r
int mouseY = 0;\r
HashSet<Integer> pressedKeys = new HashSet<Integer>();\r
+ HashSet<Integer> pressedButtons = new HashSet<Integer>();\r
\r
private InputProcessor processor;\r
\r
});\r
}\r
\r
- public int getX () {\r
- // FIXME\r
- return 0;\r
+ public int getX () { \r
+ return mouseY;\r
}\r
\r
public int getY () {\r
}\r
\r
public boolean isTouched () {\r
- return mousePressed = true;\r
+ return mousePressed;\r
}\r
\r
public int getX (int pointer) {\r
break;\r
case ESLoop.ES_KEY_TYPED:\r
event.type = KeyEvent.KEY_TYPED;\r
- break;\r
+ break; \r
}\r
\r
keyEvents.add(event);\r
case ESLoop.ES_MOUSE_DOWN:\r
event.type = TouchEvent.TOUCH_DOWN;\r
mousePressed = true;\r
+ justTouched = true;\r
+ if((button & ESLoop.ES_MOUSE_LBUTTON) != 0) {\r
+ pressedButtons.add(Buttons.LEFT);\r
+ event.button = Buttons.LEFT;\r
+ }\r
+ if((button & ESLoop.ES_MOUSE_RBUTTON) != 0) {\r
+ pressedButtons.add(Buttons.RIGHT);\r
+ event.button = Buttons.RIGHT;\r
+ }\r
+ if((button & ESLoop.ES_MOUSE_MBUTTON) != 0) {\r
+ pressedButtons.add(Buttons.MIDDLE);\r
+ event.button = Buttons.MIDDLE;\r
+ }\r
break;\r
case ESLoop.ES_MOUSE_UP:\r
event.type = TouchEvent.TOUCH_UP;\r
- mousePressed = true;\r
+ mousePressed = false;\r
+ if((button & ESLoop.ES_MOUSE_LBUTTON) != 0) {\r
+ pressedButtons.remove(Buttons.LEFT);\r
+ event.button = Buttons.LEFT; \r
+ }\r
+ if((button & ESLoop.ES_MOUSE_RBUTTON) != 0) {\r
+ pressedButtons.remove(Buttons.RIGHT);\r
+ event.button = Buttons.RIGHT;\r
+ }\r
+ if((button & ESLoop.ES_MOUSE_MBUTTON) != 0) {\r
+ pressedButtons.remove(Buttons.MIDDLE);\r
+ event.button = Buttons.MIDDLE;\r
+ }\r
break;\r
case ESLoop.ES_MOUSE_MOVE:\r
- event.type = TouchEvent.TOUCH_DRAGGED;\r
+ if(!mousePressed)\r
+ event.type = TouchEvent.TOUCH_MOVED;\r
+ else\r
+ event.type = TouchEvent.TOUCH_DRAGGED;\r
+ break; \r
+ case ESLoop.ES_MOUSE_WHEEL:\r
+ event.type = TouchEvent.TOUCH_SCROLL;\r
+ event.scrollAmount = -(int)Math.signum(x);\r
break;\r
}\r
\r
}\r
\r
int translateKey (int keyCode) {\r
- // FIXME\r
return keyCode;\r
}\r
\r
\r
@Override public boolean justTouched () {\r
return justTouched;\r
- }\r
-\r
- @Override public boolean isButtonPressed (int button) {\r
- return false;\r
+ } \r
+ \r
+ @Override public boolean isButtonPressed (int button) { \r
+ return pressedButtons.contains(button);\r
}\r
\r
@Override public void vibrate (long[] pattern, int repeat) {\r