From 05aa869f166ec596283c8ba02785b9eabe11e18d Mon Sep 17 00:00:00 2001
From: izajime <izanmario8@gmail.com>
Date: Sun, 24 Nov 2024 16:38:22 +0100
Subject: [PATCH] Fix: Ahora todos los objetos tienen un atributo coste

---
 .../java/com/example/ellegadodepintia/ArmeriaActivity.kt | 8 ++------
 .../java/com/example/ellegadodepintia/TiendaActivity.kt  | 9 ++-------
 .../exploradoresDePintia/ModalDetallesCompra.kt          | 3 +--
 .../model/efecto/EfectoDetallesCompra.kt                 | 7 +++----
 .../model/eventoFactory/TiendaFactory.kt                 | 5 -----
 .../exploradoresDePintia/model/objeto/Objeto.kt          | 3 ++-
 .../model/objeto/ObjetoConsumible.kt                     | 4 ++--
 .../exploradoresDePintia/model/objeto/ObjetoDeValor.kt   | 4 ++--
 .../exploradoresDePintia/model/objeto/ObjetoEquipable.kt | 4 ++--
 .../exploradoresDePintia/model/objeto/ObjetoUtilidad.kt  | 4 ++--
 .../ellegadodepintia/repositorios/RepositorioObjetos.kt  | 9 +++++++++
 11 files changed, 27 insertions(+), 33 deletions(-)

diff --git a/app/src/main/java/com/example/ellegadodepintia/ArmeriaActivity.kt b/app/src/main/java/com/example/ellegadodepintia/ArmeriaActivity.kt
index 541e5e0..043723c 100644
--- a/app/src/main/java/com/example/ellegadodepintia/ArmeriaActivity.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/ArmeriaActivity.kt
@@ -50,7 +50,6 @@ class ArmeriaActivity : AppCompatActivity() {
         val nivelCiudad = GameState.jugador.nivelCiudad
         val nObjetos = nivelCiudad * 2
         val objetos = RepositorioObjetos.convertirNombresAObjetos(GameState.jugador.objetosArmeria)
-        val preciosGenerados = ArrayList<Int>()
 
         val slots = listOf<ImageView>(
             findViewById(R.id.slot01),
@@ -81,9 +80,7 @@ class ArmeriaActivity : AppCompatActivity() {
 
         precios.forEachIndexed { index, precio ->
             if (index < nObjetos) {
-                val resultado = (30..75).random() / nivelCiudad
-                preciosGenerados.add(resultado)
-                resultado.toString().also { precio.text = it }
+                objetos[index]!!.coste.toString().also { precio.text = it }
             } else {
                 val nivelTaberna = index / 2 + 1
                 "Taberna lvl $nivelTaberna".also { precio.text = it }
@@ -99,12 +96,11 @@ class ArmeriaActivity : AppCompatActivity() {
                 slot.setOnClickListener {
                     val modalDetallesFragment = ModalDetallesCompra().apply {
                         objeto = objetos[index]
-                        coste = preciosGenerados[index]
                     }
 
                     modalDetallesFragment.onDismissListener = { accionRealizada ->
                         if (accionRealizada) {
-                            ejecutarCompra(objetos[index], preciosGenerados[index])
+                            ejecutarCompra(objetos[index], objetos[index]!!.coste)
                         }
                     }
 
diff --git a/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt b/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt
index fe94523..3979351 100644
--- a/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt
@@ -50,7 +50,6 @@ class TiendaActivity : AppCompatActivity() {
         val nivelCiudad = GameState.jugador.nivelCiudad
         val nObjetos = nivelCiudad * 2
         val objetos = RepositorioObjetos.convertirNombresAObjetos(GameState.jugador.objetosTienda)
-        val preciosGenerados = ArrayList<Int>()
 
         val slots = listOf<ImageView>(
             findViewById(R.id.slot01),
@@ -81,9 +80,7 @@ class TiendaActivity : AppCompatActivity() {
 
         precios.forEachIndexed { index, precio ->
             if (index < nObjetos) {
-                val resultado = (30..75).random() / nivelCiudad
-                preciosGenerados.add(resultado)
-                resultado.toString().also { precio.text = it }
+                objetos[index]!!.coste.toString().also { precio.text = it }
             } else {
                 val nivelTaberna = index / 2 + 1
                 "Taberna lvl $nivelTaberna".also { precio.text = it }
@@ -99,15 +96,13 @@ class TiendaActivity : AppCompatActivity() {
                 slot.setOnClickListener {
                     val modalDetallesFragment = ModalDetallesCompra().apply {
                         objeto = objetos[index]
-                        coste = preciosGenerados[index]
                     }
 
                     modalDetallesFragment.onDismissListener = { accionRealizada ->
                         if (accionRealizada) {
-                            ejecutarCompra(objetos[index], preciosGenerados[index])
+                            ejecutarCompra(objetos[index], objetos[index]!!.coste)
                         }
                     }
-
                     modalDetallesFragment.show(supportFragmentManager, "modalDetalles")
                 }
             } else {
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalDetallesCompra.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalDetallesCompra.kt
index c368e60..8591fbf 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalDetallesCompra.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalDetallesCompra.kt
@@ -14,7 +14,6 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto
 
 class ModalDetallesCompra : DialogFragment() {
     var objeto: Objeto? = null
-    var coste: Int? = null
     var onDismissListener: ((accionRealizada: Boolean) -> Unit)? = null
     private var accionRealizada: Boolean = false
 
@@ -45,7 +44,7 @@ class ModalDetallesCompra : DialogFragment() {
         descripcion.text = objeto!!.descripcion
 
         val coste = view.findViewById<TextView>(R.id.textoPrecio)
-        """Coste:${this.coste}""".also { coste.text = it }
+        """Coste:${this.objeto!!.coste}""".also { coste.text = it }
 
         val boton = view.findViewById<Button>(R.id.botonComprar)
         boton.setOnClickListener{
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoDetallesCompra.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoDetallesCompra.kt
index ec065f9..d3c44a4 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoDetallesCompra.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoDetallesCompra.kt
@@ -12,7 +12,7 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto
 import com.example.ellegadodepintia.repositorios.RepositorioJugador
 
 
-class EfectoDetallesCompra(private val coste : Int,private val objeto: Objeto) : Efecto(100) {
+class EfectoDetallesCompra(private val objeto: Objeto) : Efecto(100) {
 
     override fun ejecutar(): String {
         val mensaje = "Has investigado el objeto que te estan ofreciendo"
@@ -25,7 +25,6 @@ class EfectoDetallesCompra(private val coste : Int,private val objeto: Objeto) :
         }
         val modalDetallesFragment = ModalDetallesCompra().apply {
             this.objeto = this@EfectoDetallesCompra.objeto
-            this.coste = this@EfectoDetallesCompra.coste
             this.onDismissListener = { accionRealizada ->
                 if (accionRealizada) {
                     ejecutarCompra()
@@ -47,10 +46,10 @@ class EfectoDetallesCompra(private val coste : Int,private val objeto: Objeto) :
             salto.start()
         }
 
-        if (GameState.jugador.monedas < coste){
+        if (GameState.jugador.monedas < objeto.coste){
             "¡No tienes suficientes monedas para comprar el objeto!".also { context!!.findViewById<TextView>(R.id.textoResultado).text = it }
         }else{
-            GameState.jugador.actualizarMonedas(GameState.jugador.monedas - coste)
+            GameState.jugador.actualizarMonedas(GameState.jugador.monedas - objeto.coste)
             RepositorioJugador.setMonedas(GameState.jugador.monedas)
             GameState.jugador.conseguirObjeto(objeto)
             GameState.eventoActual.actualizarFinalizado(true)
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/TiendaFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/TiendaFactory.kt
index cf3ec6a..6324b19 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/TiendaFactory.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/TiendaFactory.kt
@@ -16,7 +16,6 @@ class TiendaFactory : EventoFactory {
                     descripcion = "Ver Objeto",
                     atributoRequerida = Atributo.Nula,
                     EfectoDetallesCompra(
-                        5,
                         RepositorioObjetos.obtenerObjetoPorNombre("Elixir Menor de la Necrópolis")!!
                     )
                 ), Opcion(
@@ -32,7 +31,6 @@ class TiendaFactory : EventoFactory {
                     descripcion = "Ver Objeto",
                     atributoRequerida = Atributo.Nula,
                     EfectoDetallesCompra(
-                        8,
                         RepositorioObjetos.obtenerObjetoPorNombre("Elixir Mediano de la Necrópolis")!!
                     )
                 ), Opcion(
@@ -48,7 +46,6 @@ class TiendaFactory : EventoFactory {
                     descripcion = "Ver Objeto",
                     atributoRequerida = Atributo.Nula,
                     EfectoDetallesCompra(
-                        15,
                         RepositorioObjetos.obtenerObjetoPorNombre("Elixir Supremo de la Necrópolis")!!
                     )
                 ), Opcion(
@@ -64,7 +61,6 @@ class TiendaFactory : EventoFactory {
                     descripcion = "Ver Objeto",
                     atributoRequerida = Atributo.Nula,
                     EfectoDetallesCompra(
-                        50,
                         RepositorioObjetos.obtenerObjetoPorNombre("Escudo Caetrae")!!
                     )
                 ), Opcion(
@@ -80,7 +76,6 @@ class TiendaFactory : EventoFactory {
                     descripcion = "Ver Objeto",
                     atributoRequerida = Atributo.Nula,
                     EfectoDetallesCompra(
-                        40,
                         RepositorioObjetos.obtenerObjetoPorNombre("Casco Ceremonial")!!
                     )
                 ), Opcion(
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/Objeto.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/Objeto.kt
index a00e7a8..2e975ce 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/Objeto.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/Objeto.kt
@@ -5,6 +5,7 @@ import java.io.Serializable
 abstract class Objeto (
     val nombre: String,
     val descripcion: String,
-    val imagen : Int): Serializable {
+    val imagen : Int,
+    val coste: Int): Serializable {
     abstract fun usar()
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoConsumible.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoConsumible.kt
index fe76c35..dbf03ed 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoConsumible.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoConsumible.kt
@@ -5,8 +5,8 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObje
 class ObjetoConsumible(
     nombre: String,
     descripcion: String,
-    val efecto: EfectoObjeto, imagen: Int,
-) : Objeto(nombre, descripcion, imagen) {
+    val efecto: EfectoObjeto, imagen: Int, coste : Int
+) : Objeto(nombre, descripcion, imagen, coste) {
 
     override fun usar() {
         efecto.ejecutar()
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoDeValor.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoDeValor.kt
index 176b7f0..8ad42f0 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoDeValor.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoDeValor.kt
@@ -6,8 +6,8 @@ class ObjetoDeValor(
     nombre: String,
     descripcion: String,
     imagen: Int,
-    val coste: Int
-) : Objeto(nombre, descripcion, imagen) {
+    coste: Int,
+) : Objeto(nombre, descripcion, imagen, coste) {
 
     private val efecto: EfectoVender = EfectoVender(coste)
 
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoEquipable.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoEquipable.kt
index ef1274c..acbe1cf 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoEquipable.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoEquipable.kt
@@ -7,9 +7,9 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObje
 class ObjetoEquipable(
     nombre: String,
     descripcion: String,
-    val efecto: EfectoObjeto, imagen: Int,
+    val efecto: EfectoObjeto, imagen: Int, coste : Int
 
-    ) : Objeto(nombre, descripcion, imagen) {
+    ) : Objeto(nombre, descripcion, imagen, coste) {
 
     override fun usar() {
         efecto.ejecutar()
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoUtilidad.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoUtilidad.kt
index c1603bb..5556071 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoUtilidad.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoUtilidad.kt
@@ -5,8 +5,8 @@ class ObjetoUtilidad(
     nombre: String,
     descripcion: String,
     imagen: Int,
-
-    ) : Objeto(nombre, descripcion, imagen) {
+    coste : Int
+    ) : Objeto(nombre, descripcion, imagen, coste) {
 
     override fun usar() {
     }
diff --git a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt
index 29cf1d5..d61363e 100644
--- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt
@@ -37,46 +37,55 @@ object RepositorioObjetos {
                 nombre = "Espada de Hierro",
                 descripcion = "Una espada de hierro sencilla y confiable perfecta para un aventurero novato. Otorga 1 de daño extra",
                 efecto = EfectoEquipableAumento(1, Atributo.Ataque),
+                coste = 20,
                 imagen = R.drawable.asi_objeto_espadadefault
+
             ),
             ObjetoConsumible(
                 nombre = "Elixir Menor de la Necrópolis",
                 descripcion = "Un frasco pequeño con un líquido granate y brillante, que destella con un resplandor profundo, capaz de restaurar 3 puntos de vida al instante.",
                 efecto = EfectoObjetoCura(3),
+                coste = 5,
                 imagen = R.drawable.asi_objeto_pocima_vida_5
             ),
             ObjetoConsumible(
                 nombre = "Elixir Mediano de la Necrópolis",
                 descripcion = "Un frasco robusto con un líquido amarillo brillante, que resplandece como el sol al mediodía, capaz de restaurar 5 puntos de vida al instante.",
                 efecto = EfectoObjetoCura(5),
+                coste = 8,
                 imagen = R.drawable.asi_objeto_pocima_vida_10
             ),
             ObjetoConsumible(
                 nombre = "Elixir Supremo de la Necrópolis",
                 descripcion = "Frasco supremo forjado con los secretos de los vacceos, restaura toda tu vitalidad al instante, ¡la poción de cura más poderosa de Pintia!",
                 efecto = EfectoObjetoCura(999),
+                coste = 15,
                 imagen = R.drawable.asi_objeto_pocima_vida_all
             ),
             ObjetoEquipable(
                 nombre = "Escudo Caetrae",
                 descripcion = "La caetrae es un escudo redondo vacceo, forjado para la defensa en combate, que aumenta tu vida máxima en 10 puntos.",
                 efecto = EfectoEquipableAumento(10, Atributo.Vida),
+                coste = 50,
                 imagen = R.drawable.asi_objeto_escudo
             ),
             ObjetoEquipable(
                 nombre = "Casco Ceremonial",
                 descripcion = "Casco ceremonial de oro de los vacceos decorado con intrincados patrones que simboliza el estatus social. Aumenta tu vida máxima en 8 puntos",
                 efecto = EfectoEquipableAumento(8, Atributo.Vida),
+                coste = 40,
                 imagen = R.drawable.asi_objeto_casco
             ),
             ObjetoUtilidad(
                 nombre = "Pico Vacceo",
                 descripcion = "Un pico viejo y oscuro con dibujos extraños que parecen brillar cerca de las piedras, como si estuviera esperando que lo uses para algo importante.",
+                coste = 20,
                 imagen = R.drawable.asi_objeto_pico
             ),
             ObjetoUtilidad(
                 nombre = "Ticket",
                 descripcion = "Representa una invitación a un evento relacionado con la cultura vaccea, como una feria arqueológica o un festival cultural",
+                coste = 20,
                 imagen = R.drawable.asi_objeto_ticket
             )
         ).associateBy { it.nombre }
-- 
GitLab