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; } } }