示例#1
0
  public void procesarOrdenes(Nivel nivel) {
    // Si no nos estamos moviendo, y nos envian un movimiento, nos movemos
    if (!movimiento) {
      int tileX = nivel.getTileXFromCoord(x);
      int tileY = nivel.getTileYFromCoord(y);

      if (moverAbajo) {
        sprite = sprites.get(CAMINANDO_ABAJO);
        orientacion = ABAJO;

        if (nivel.getMapaTiles()[tileX][tileY + 1].tipoColision == Tile.PASABLE
            && nivel.getBombaEnTile(tileX, tileY + 1) == null) {
          movimiento = true;
          aMover = Ar.alto(Tile.altura);
        }

      } else if (moverArriba) {
        sprite = sprites.get(CAMINANDO_ARRIBA);
        orientacion = ARRIBA;

        if (nivel.getMapaTiles()[tileX][tileY - 1].tipoColision == Tile.PASABLE
            && nivel.getBombaEnTile(tileX, tileY - 1) == null) {
          movimiento = true;
          aMover = Ar.alto(Tile.altura);
        }

      } else if (moverDerecha) {
        sprite = sprites.get(CAMINANDO_DERECHA);
        orientacion = DERECHA;

        if (nivel.getMapaTiles()[tileX + 1][tileY].tipoColision == Tile.PASABLE
            && nivel.getBombaEnTile(tileX + 1, tileY) == null) {
          movimiento = true;
          aMover = Ar.ancho(Tile.ancho);
        }

      } else if (moverIzquierda) {
        sprite = sprites.get(CAMINANDO_IZQUIERDA);
        orientacion = IZQUIERDA;

        if (nivel.getMapaTiles()[tileX - 1][tileY].tipoColision == Tile.PASABLE
            && nivel.getBombaEnTile(tileX - 1, tileY) == null) {
          movimiento = true;
          aMover = Ar.ancho(Tile.ancho);
        }
      }
    }

    // Explotar todas las bombas del jugador si procede
    if (buffoExplosionDistanciaBombas && explosionDistancia) {
      nivel.explotarBombas(this);
    }

    // Poner bomba si procede
    if (ponerBomba) {
      ponerBomba = false;

      if (bombasColocadas < bombasLimite) {
        if (nivel.getBombaEnCoords(x, y) == null) {
          Bomba b = new Bomba(context, this, nivel);
          nivel.bombas.add(b);
          nivel.addBombaEnTile(b);
        }
      }
    }

    // Patear bomba si procede
    if (buffoPateaBombas && pateaBomba) {

      int xAxisOffset = 0;
      int yAxisOffset = 0;
      switch (orientacion) {
        case ARRIBA:
          yAxisOffset = -1;
          break;

        case ABAJO:
          yAxisOffset = 1;
          break;

        case IZQUIERDA:
          xAxisOffset = -1;
          break;

        case DERECHA:
          xAxisOffset = 1;
          break;
      }
      int xTile = nivel.getTileXFromCoord(x);
      int yTile = nivel.getTileYFromCoord(y);
      int xTileEnFrente = xTile + xAxisOffset;
      int yTileEnFrente = yTile + yAxisOffset;
      Bomba bombaEnFrente = nivel.getBombaEnTile(xTileEnFrente, yTileEnFrente);

      if (bombaEnFrente != null) {
        bombaEnFrente.velocidadMovimiento = bombaEnFrente.velocidadLimite;
        bombaEnFrente.orientacion = orientacion;
      }
    }
  }