From b0afab5618be69e5efdf78096f78d5a5bf5b5120 Mon Sep 17 00:00:00 2001 From: diegval <diego.valladolid@estudiantes.uva.es> Date: Wed, 20 Nov 2024 14:32:17 +0100 Subject: [PATCH] =?UTF-8?q?Fix:=20Hechos=20los=20efectos=20trampa=20m?= =?UTF-8?q?=C3=A1s=20modulares?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/efecto/EfectoEscalar.kt | 22 ------------ .../model/efecto/EfectoExplorar.kt | 20 ----------- .../model/efecto/EfectoFuerzaBruta.kt | 16 --------- .../model/efecto/EfectoPico.kt | 16 --------- .../efecto/EfectoResolverTrampaConAtributo.kt | 29 +++++++++++++++ .../model/efecto/EfectoUtilizarObjetoUtil.kt | 16 +++++++++ .../model/eventoFactory/TrampaFactory.kt | 36 ++++++++++++++----- 7 files changed, 72 insertions(+), 83 deletions(-) delete mode 100644 app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoEscalar.kt delete mode 100644 app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoExplorar.kt delete mode 100644 app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoFuerzaBruta.kt delete mode 100644 app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoPico.kt create mode 100644 app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoResolverTrampaConAtributo.kt create mode 100644 app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoEscalar.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoEscalar.kt deleted file mode 100644 index 74c9051..0000000 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoEscalar.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.example.ellegadodepintia.exploradoresDePintia.model.efecto - -import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo -import com.example.ellegadodepintia.exploradoresDePintia.model.GameState - - -class EfectoEscalar() : Efecto(100) { - override fun ejecutar(): String { - if (GameState.jugador.atributos[Atributo.Energia]!!<2){ - return "No tienes energÃa suficiente para intentar escapar escalando. Necesitas al menos 2 puntos" - }else{ - GameState.jugador.actualizarAtributo(Atributo.Energia, -2) - if ((1..100).random() <= 40){ - GameState.eventoActual.actualizarFinalizado(true) - return "Logras escalar la montaña de piedras y escapar. El esfuerzo no ha sido en vano" - }else{ - return "Al escalar la montaña de piedras, sufres un resbalo y vuelves a caer, gastando inútilmente energÃa" - } - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoExplorar.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoExplorar.kt deleted file mode 100644 index 202bfda..0000000 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoExplorar.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.ellegadodepintia.exploradoresDePintia.model.efecto - -import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo -import com.example.ellegadodepintia.exploradoresDePintia.model.GameState - -class EfectoExplorar() : Efecto(100) { - override fun ejecutar(): String { - if(GameState.jugador.atributos[Atributo.Investigacion]!!<1){ - return "No tienes suficientes puntos de investigación para explorar" - }else{ - GameState.jugador.actualizarAtributo(Atributo.Investigacion, -1) - if ((1..100).random() <= 50){ - GameState.eventoActual.actualizarFinalizado(true) - return "Has encontrado un viejo mapa que muestra un camino para rodearlo. Has logrado escapar" - }else{ - return "Has explorado cuidadosamente, pero por ahora no has encontrado nada útil para sortear el derrumbe." - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoFuerzaBruta.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoFuerzaBruta.kt deleted file mode 100644 index 118fd34..0000000 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoFuerzaBruta.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.example.ellegadodepintia.exploradoresDePintia.model.efecto - -import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo -import com.example.ellegadodepintia.exploradoresDePintia.model.GameState - -class EfectoFuerzaBruta() : Efecto(100) { - override fun ejecutar(): String { - GameState.jugador.actualizarAtributo(Atributo.Vida, -1) - if ((1..100).random() <= 25){ - GameState.eventoActual.actualizarFinalizado(true) - return "Con un esfuerzo descomunal, logras mover las piedras con tus manos y escapar, haciendote daño en el acto" - }else{ - return "A pesar de tu esfuerzo, no logras escapar y sigues atrapado. Has sufrido daño" - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoPico.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoPico.kt deleted file mode 100644 index fce4167..0000000 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoPico.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.example.ellegadodepintia.exploradoresDePintia.model.efecto - -import com.example.ellegadodepintia.exploradoresDePintia.model.GameState - - -class EfectoPico() : Efecto(100) { - override fun ejecutar(): String { - val tienePico = GameState.jugador.inventario.removeIf { it.nombre == "Pico Vacceo" } - if (tienePico){ - GameState.eventoActual.actualizarFinalizado(true) - return "Has usado el pico de tu inventario. Has logrado escapar" - }else{ - return "No tienes el pico en tu inventario" - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoResolverTrampaConAtributo.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoResolverTrampaConAtributo.kt new file mode 100644 index 0000000..b812abc --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoResolverTrampaConAtributo.kt @@ -0,0 +1,29 @@ +package com.example.ellegadodepintia.exploradoresDePintia.model.efecto + +import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState + + +class EfectoResolverTrampaConAtributo( + probabilidadExito: Int, + private val atributo: Atributo, + private val coste: Int, + private val stringLogrado: String, + private val stringFallo: String) : Efecto(probabilidadExito) { + override fun ejecutar(): String { + if (atributo == Atributo.Energia && GameState.jugador.atributos[Atributo.Energia]!!<coste){ + return "No tienes energÃa suficiente para intentar escapar escalando. Necesitas al menos $coste puntos" + }else if(atributo == Atributo.Investigacion && GameState.jugador.atributos[Atributo.Investigacion]!!<coste) { + return "No tienes suficientes puntos de investigación para explorar" + }else{ + GameState.jugador.actualizarAtributo(atributo, -coste) + return if ((1..100).random() <= probabilidadExito){ + GameState.eventoActual.actualizarFinalizado(true) + stringLogrado + }else{ + stringFallo + } + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt new file mode 100644 index 0000000..3e84468 --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt @@ -0,0 +1,16 @@ +package com.example.ellegadodepintia.exploradoresDePintia.model.efecto + +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState + + +class EfectoUtilizarObjetoUtil(private val nombreObjeto: String) : Efecto(100) { + override fun ejecutar(): String { + val tieneObjeto = GameState.jugador.inventario.removeIf { it.nombre == nombreObjeto } + if (tieneObjeto){ + GameState.eventoActual.actualizarFinalizado(true) + return "Has usado el objeto $nombreObjeto de tu inventario. Has logrado escapar" + }else{ + return "No tienes el $nombreObjeto en tu inventario" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/TrampaFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/TrampaFactory.kt index 45d6bc7..fd7d74a 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/TrampaFactory.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/TrampaFactory.kt @@ -3,31 +3,49 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory import com.example.ellegadodepintia.R import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion -import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoEscalar -import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoExplorar -import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoFuerzaBruta -import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoPico +import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoResolverTrampaConAtributo +import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoUtilizarObjetoUtil class TrampaFactory : EventoFactory { private val trampasMap = mapOf( "Un estruendoso derrumbe de piedras bloquea el camino, dejando un montón de rocas caÃdas que impiden tu avance." to Pair( R.drawable.asi_exploradores_trampa_piedras, listOf( Opcion( - descripcion = "Fuerza Bruta", + descripcion = "Mover", atributoRequerida = Atributo.Vida, - EfectoFuerzaBruta() + EfectoResolverTrampaConAtributo( + 25, + Atributo.Vida, + 1, + "Con un esfuerzo descomunal, logras mover las piedras con tus manos y escapar, haciendote daño en el acto", + "A pesar de tu esfuerzo, no logras escapar y sigues atrapado. Has sufrido daño" + ) ), Opcion( descripcion = "Picar", atributoRequerida = Atributo.Nula, - EfectoPico() + EfectoUtilizarObjetoUtil( + nombreObjeto = "Pico Vacceo" + ) ), Opcion( descripcion = "Explorar", atributoRequerida = Atributo.Investigacion, - EfectoExplorar() + EfectoResolverTrampaConAtributo( + 50, + Atributo.Investigacion, + 1, + "Has encontrado un viejo mapa que muestra un camino para rodearlo. Has logrado escapar.", + "Has explorado cuidadosamente, pero por ahora no has encontrado nada útil para sortear el derrumbe." + ) ), Opcion( descripcion = "Escalar", atributoRequerida = Atributo.Energia, - EfectoEscalar() + EfectoResolverTrampaConAtributo( + 40, + Atributo.Energia, + 2, + "Logras escalar la montaña de piedras y escapar. El esfuerzo no ha sido en vano", + "Al escalar la montaña de piedras, sufres un resbalo y vuelves a caer, gastando inútilmente energÃa" + ) ) ) ), -- GitLab