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