private Position GetMapTouchedPosition(MotionEvent event) { Position clicked = null; float distanceFromCenterX, distanceFromCenterY; float incrementX, incrementY; distanceFromCenterX = event.getX() - this.getWidth() / 2; if (distanceFromCenterX < 0) incrementX = Configuration.CellSize / 2; else incrementX = Configuration.CellSize / 2 * -1; int Column = Math.round((distanceFromCenterX + incrementX) / Configuration.CellSize) + currentMap.getCenterColumn(); distanceFromCenterY = event.getY() - this.getHeight() / 2; if (distanceFromCenterY > 0) incrementY = Configuration.CellSize / 2; else incrementY = Configuration.CellSize / 2 * -1; int Row = Math.round(distanceFromCenterY + incrementY) / Configuration.CellSize + currentMap.getCenterRow(); clicked = new Position(Column, Row); return clicked; }
private void CreatePlayerPath(MotionEvent event) { ArrayList<Position> Path = null; if (currentMap != null) { if ((event != null) && (event.getAction() == MotionEvent.ACTION_UP)) { Position playerPosition = new Position(currentMap.getCenterColumn(), currentMap.getCenterRow()); Position targetPosition = GetMapTouchedPosition(event); if (currentMap.IsWalkable(targetPosition.y, targetPosition.x)) { Path = GetPlayerPath(playerPosition, targetPosition); player.setNewPath(Path); synchronized (this.getHolder()) { Effects.add(new Effect(this, targetPosition, currentMap)); } } } } if (Path != null) for (int i = 0; i < Path.size(); i++) { Log.d("PATH: ", Path.get(i).x + ", " + Path.get(i).y); } }