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