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 {
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 ->
......
......@@ -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()
}
}
......@@ -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>
)
......@@ -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 }
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment