diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt
index 74217d6ec4833ee489055b96b4ef7b9737ce7180..e9a3c8c2c06985cd07dfaaf65f2f62a293ecc982 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt
@@ -20,9 +20,9 @@ object EventoFactorySelector {
val probabilidades = mapOf(
TipoEvento.Reliquia to 0.3,
TipoEvento.Tienda to 0.1,
- TipoEvento.Riesgo to 0.3,
TipoEvento.Trampa to 0.1,
- TipoEvento.Combate to 0.2
+ TipoEvento.Combate to 0.2,
+ TipoEvento.Riesgo to 0.3,
)
val acumulado = probabilidades.entries.fold(mutableListOf<Pair<Double, TipoEvento>>()) { acc, entry ->
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoRiesgo.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoRiesgo.kt
index 60890734e5adbe5247618a1679a533302df2da7c..3f2401b2fea839e91591b050996cacca03be3ef8 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoRiesgo.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoRiesgo.kt
@@ -3,9 +3,23 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
class EventoRiesgo(
+ val id : Int,
override val descripcion: String,
override val dificultad: Int,
override val opciones: MutableList<Opcion>,
override val imagen: Int, resistenciaMax: Int,
override var finalizado: Boolean,
-) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado)
\ No newline at end of file
+) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado){
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other == null || javaClass != other.javaClass) return false
+ other as EventoRiesgo
+
+ return id == other.id
+ }
+
+ override fun hashCode(): Int {
+ return 31 * id.hashCode()
+ }
+}
+
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt
index 7fc5aa33417aadc03e7ef123e23f1a58a49650fc..26c410bbd07a0e35a38269ac675fdb2beec73942 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt
@@ -5,84 +5,89 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoIgnorar
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoRiesgo
-import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoEquipable
-import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoUtilidad
-import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoEquipableAumento
-
+import com.example.ellegadodepintia.repositorios.RepositorioObjetos
class RiesgoFactory : EventoFactory {
- private val riesgoMap = mapOf(
- "En un claro junto al río Duero, encuentras un viejo cofre de madera decorado con espigas de trigo y motivos solares. " to Pair(
- R.drawable.cofre_open_animation, listOf(
+
+ private val descripcionComun = "En un claro junto al río Duero, encuentras un viejo cofre de madera decorado con espigas de trigo y motivos solares."
+
+ private val riesgoMap = mutableMapOf(
+ 1 to EventoRiesgoData(
+ imagen = R.drawable.cofre_open_animation,
+ opciones = listOf(
Opcion(
descripcion = "Abrir el cofre",
atributoRequerida = Atributo.Investigacion,
EfectoRiesgo(
- ObjetoEquipable(
- 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),
- imagen = R.drawable.asi_objeto_espadadefault
- ),
+ RepositorioObjetos.obtenerObjetoPorNombre("Espada de Hierro")!!,
dmgRiesgo = 2,
mensajeRecomensa = "Dentro del cofre encuentras una espada de hierro vaccea. Está en buen estado y tiene un brillo sobrenatural",
mensajeRiesgo = "Una nube de polvo tóxico se libera, causandote 2 de daño",
50
)
- ), Opcion(
+ ),
+ Opcion(
descripcion = "Ignorar",
atributoRequerida = Atributo.Nula,
EfectoIgnorar(100)
)
)
),
- "En un claro junto al río Duero, encuentras un viejo cofre de madera decorado con espigas de trigo y motivos solares. " to Pair(
- R.drawable.cofre_open_animation, listOf(
+ 2 to EventoRiesgoData(
+ imagen = R.drawable.cofre_open_animation,
+ opciones = listOf(
Opcion(
descripcion = "Abrir el cofre",
atributoRequerida = Atributo.Investigacion,
EfectoRiesgo(
- 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",
- imagen = R.drawable.asi_objeto_ticket
- ),
+ RepositorioObjetos.obtenerObjetoPorNombre("Ticket")!!,
dmgRiesgo = 4,
mensajeRecomensa = "Dentro del cofre encuentras un ticket. No sabes para que podría servir",
mensajeRiesgo = "Te encuentras una serpiente que te muerde hasta que consigues quitartela de encima, causandote 4 de daño",
35
)
- ), Opcion(
+ ),
+ Opcion(
descripcion = "Ignorar",
atributoRequerida = Atributo.Nula,
EfectoIgnorar(100)
)
)
- ),
+ )
)
override fun generarDescripcion(): String {
- return riesgoMap.keys.random()
+ return descripcionComun
}
override fun generarOpciones(descripcion: String): MutableList<Opcion> {
- return riesgoMap[descripcion]?.second?.toMutableList()
- ?: mutableListOf()
+ val evento = riesgoMap.entries.find { it.key == descripcion.toInt() }
+ return evento?.value?.opciones?.toMutableList() ?: mutableListOf()
}
override fun generarImagen(descripcion: String): Int {
- return riesgoMap[descripcion]?.first!!
+ val evento = riesgoMap.entries.find { it.key == descripcion.toInt() }
+ return evento!!.value.imagen
}
override fun generarEvento(): EventoRiesgo {
- val descripcion = generarDescripcion()
- return EventoRiesgo(
- descripcion = descripcion,
+ val id = riesgoMap.keys.random()
+ val eventoData = riesgoMap[id]!!
+
+ val evento = EventoRiesgo(
+ id = id,
+ descripcion = descripcionComun,
dificultad = 0,
- opciones = generarOpciones(descripcion),
- imagen = generarImagen(descripcion),
+ opciones = eventoData.opciones.toMutableList(),
+ imagen = eventoData.imagen,
resistenciaMax = (2..8).random(),
- finalizado = false
+ finalizado = false,
)
+
+ return evento
}
-}
\ No newline at end of file
+}
+data class EventoRiesgoData(
+ val imagen: Int,
+ val opciones: List<Opcion>
+)
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 59f514ec9b7bed8b6b7b859532dc452ae45b33b3..492cc14dce4bc393a5925345751653747ee7fc0a 100644
--- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt
@@ -73,6 +73,11 @@ object RepositorioObjetos {
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.",
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",
+ imagen = R.drawable.asi_objeto_ticket
)
).associateBy { it.nombre }
}