public void mouseDown(int x, int y) { if (gameInputLock || thread.getState() == GameState.PAUSED) { return; } switch (inputState) { case InputState.RELEASED_NO_SELECTION: { selFromX = selToX = x / gameViewController.getCellWidth(); selFromY = selToY = y / gameViewController.getCellHeight(); if (selFromX < 0) { selFromX = selToX = 0; } if (selFromX >= elementsX) { selToX = --selFromX; } if (selFromY < 0) { selFromY = selToY = 0; } if (selFromY >= elementsY) { selToY = --selFromY; } gameViewController.startSelection(selFromX, selFromY); inputState = InputState.SELECTING_ELEMENTS; break; } case InputState.SELECTING_ELEMENTS: { break; } case InputState.RELEASED_SELECTED: { if (isPointInSelection(x, y)) { gameViewController.startMoveSelection(x, y); inputState = InputState.MOVING_ELEMENTS; } else { selFromX = selToX = x / gameViewController.getCellWidth(); selFromY = selToY = y / gameViewController.getCellHeight(); if (selFromX < 0) { selFromX = selToX = 0; } if (selFromX >= elementsX) { selToX = --selFromX; } if (selFromY < 0) { selFromY = selToY = 0; } if (selFromY >= elementsY) { selToY = --selFromY; } gameViewController.startSelection(selFromX, selFromY); inputState = InputState.SELECTING_ELEMENTS; } break; } case InputState.MOVING_ELEMENTS: { break; } case InputState.ANIMATION: { break; } } }