Skip to content
Snippets Groups Projects
Commit e20ff80f authored by diegval's avatar diegval
Browse files

Feature: Objetos del riesgoFactory añadidos al repositorio y arreglado problema de descripciones

parent 6a696537
No related branches found
No related tags found
3 merge requests!65Feature:,!51Tienda to guapa,!46Feature:
...@@ -20,9 +20,9 @@ object EventoFactorySelector { ...@@ -20,9 +20,9 @@ object EventoFactorySelector {
val probabilidades = mapOf( val probabilidades = mapOf(
TipoEvento.Reliquia to 0.3, TipoEvento.Reliquia to 0.3,
TipoEvento.Tienda to 0.1, TipoEvento.Tienda to 0.1,
TipoEvento.Riesgo to 0.3,
TipoEvento.Trampa to 0.1, 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 -> val acumulado = probabilidades.entries.fold(mutableListOf<Pair<Double, TipoEvento>>()) { acc, entry ->
......
...@@ -3,9 +3,23 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory ...@@ -3,9 +3,23 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
class EventoRiesgo( class EventoRiesgo(
val id : Int,
override val descripcion: String, override val descripcion: String,
override val dificultad: Int, override val dificultad: Int,
override val opciones: MutableList<Opcion>, override val opciones: MutableList<Opcion>,
override val imagen: Int, resistenciaMax: Int, override val imagen: Int, resistenciaMax: Int,
override var finalizado: Boolean, override var finalizado: Boolean,
) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado) ) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado){
\ No newline at end of file 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()
}
}
...@@ -5,84 +5,89 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo ...@@ -5,84 +5,89 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoIgnorar import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoIgnorar
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoRiesgo import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoRiesgo
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoEquipable import com.example.ellegadodepintia.repositorios.RepositorioObjetos
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoUtilidad
import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoEquipableAumento
class RiesgoFactory : EventoFactory { 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( 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."
R.drawable.cofre_open_animation, listOf(
private val riesgoMap = mutableMapOf(
1 to EventoRiesgoData(
imagen = R.drawable.cofre_open_animation,
opciones = listOf(
Opcion( Opcion(
descripcion = "Abrir el cofre", descripcion = "Abrir el cofre",
atributoRequerida = Atributo.Investigacion, atributoRequerida = Atributo.Investigacion,
EfectoRiesgo( EfectoRiesgo(
ObjetoEquipable( RepositorioObjetos.obtenerObjetoPorNombre("Espada de Hierro")!!,
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
),
dmgRiesgo = 2, dmgRiesgo = 2,
mensajeRecomensa = "Dentro del cofre encuentras una espada de hierro vaccea. Está en buen estado y tiene un brillo sobrenatural", 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", mensajeRiesgo = "Una nube de polvo tóxico se libera, causandote 2 de daño",
50 50
) )
), Opcion( ),
Opcion(
descripcion = "Ignorar", descripcion = "Ignorar",
atributoRequerida = Atributo.Nula, atributoRequerida = Atributo.Nula,
EfectoIgnorar(100) 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( 2 to EventoRiesgoData(
R.drawable.cofre_open_animation, listOf( imagen = R.drawable.cofre_open_animation,
opciones = listOf(
Opcion( Opcion(
descripcion = "Abrir el cofre", descripcion = "Abrir el cofre",
atributoRequerida = Atributo.Investigacion, atributoRequerida = Atributo.Investigacion,
EfectoRiesgo( EfectoRiesgo(
ObjetoUtilidad( RepositorioObjetos.obtenerObjetoPorNombre("Ticket")!!,
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
),
dmgRiesgo = 4, dmgRiesgo = 4,
mensajeRecomensa = "Dentro del cofre encuentras un ticket. No sabes para que podría servir", 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", mensajeRiesgo = "Te encuentras una serpiente que te muerde hasta que consigues quitartela de encima, causandote 4 de daño",
35 35
) )
), Opcion( ),
Opcion(
descripcion = "Ignorar", descripcion = "Ignorar",
atributoRequerida = Atributo.Nula, atributoRequerida = Atributo.Nula,
EfectoIgnorar(100) EfectoIgnorar(100)
) )
) )
), )
) )
override fun generarDescripcion(): String { override fun generarDescripcion(): String {
return riesgoMap.keys.random() return descripcionComun
} }
override fun generarOpciones(descripcion: String): MutableList<Opcion> { override fun generarOpciones(descripcion: String): MutableList<Opcion> {
return riesgoMap[descripcion]?.second?.toMutableList() val evento = riesgoMap.entries.find { it.key == descripcion.toInt() }
?: mutableListOf() return evento?.value?.opciones?.toMutableList() ?: mutableListOf()
} }
override fun generarImagen(descripcion: String): Int { 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 { override fun generarEvento(): EventoRiesgo {
val descripcion = generarDescripcion() val id = riesgoMap.keys.random()
return EventoRiesgo( val eventoData = riesgoMap[id]!!
descripcion = descripcion,
val evento = EventoRiesgo(
id = id,
descripcion = descripcionComun,
dificultad = 0, dificultad = 0,
opciones = generarOpciones(descripcion), opciones = eventoData.opciones.toMutableList(),
imagen = generarImagen(descripcion), imagen = eventoData.imagen,
resistenciaMax = (2..8).random(), resistenciaMax = (2..8).random(),
finalizado = false finalizado = false,
) )
return evento
} }
} }
data class EventoRiesgoData(
val imagen: Int,
val opciones: List<Opcion>
)
...@@ -73,6 +73,11 @@ object RepositorioObjetos { ...@@ -73,6 +73,11 @@ object RepositorioObjetos {
nombre = "Pico Vacceo", 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.", 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 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 } ).associateBy { it.nombre }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment