Пример #1
0
 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;
 }
Пример #2
0
  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);
      }
  }