From e20ff80f3be3a0c43e5a5a2f05a985fdefd403cb Mon Sep 17 00:00:00 2001 From: diegval <diego.valladolid@estudiantes.uva.es> Date: Wed, 20 Nov 2024 21:22:56 +0100 Subject: [PATCH] =?UTF-8?q?Feature:=20Objetos=20del=20riesgoFactory=20a?= =?UTF-8?q?=C3=B1adidos=20al=20repositorio=20y=20arreglado=20problema=20de?= =?UTF-8?q?=20descripciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eventoFactory/EventoFactorySelector.kt | 4 +- .../model/eventoFactory/EventoRiesgo.kt | 16 +++- .../model/eventoFactory/RiesgoFactory.kt | 73 ++++++++++--------- .../repositorios/RepositorioObjetos.kt | 5 ++ 4 files changed, 61 insertions(+), 37 deletions(-) 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 74217d6..e9a3c8c 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 6089073..3f2401b 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 7fc5aa3..26c410b 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 59f514e..492cc14 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 } } -- GitLab