diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt index 08c59f3f7804b9c7c2d96d23748347342f19e9e8..56d9117457ebd4e700ee6b66cfd8468b4429f2de 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt @@ -19,6 +19,7 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.GameState import com.example.ellegadodepintia.exploradoresDePintia.model.GeneradorDeEventos import com.example.ellegadodepintia.exploradoresDePintia.model.LayoutUtils import com.example.ellegadodepintia.exploradoresDePintia.model.GestorDeEventos +import com.example.ellegadodepintia.repositorios.RepositorioObjetos import com.example.ellegadodepintia.soundManager.SoundManager import java.lang.ref.WeakReference @@ -102,6 +103,12 @@ class ExploradoresDePintia : AppCompatActivity() { }else{ GameState.jugador.destruirObjetoRandom() } + }else if (requestCode == 104 && resultCode == RESULT_OK) { + val puntosHuesos = data?.getStringExtra("PUNTOS_HUESOS")!!.toInt() + val objeto= RepositorioObjetos.obtenerObjetoPorCoste(puntosHuesos) + if (objeto != null){ + GameState.jugador.conseguirObjeto(objeto) + } } } diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Jugador.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Jugador.kt index f32aca04807376172a32736012627d3c3729d9a4..f108a4496571e4964790ddefa888fcc4fa1024ab 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Jugador.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Jugador.kt @@ -13,6 +13,7 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.habilidad.efectoH import com.example.ellegadodepintia.exploradoresDePintia.model.habilidad.efectoHabilidad.EfectoBuffo import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoEquipable +import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoUtilidad import com.example.ellegadodepintia.repositorios.RepositorioJugador import com.example.ellegadodepintia.repositorios.RepositorioObjetos @@ -54,6 +55,14 @@ class Jugador { ) ) + inventario.add( + ObjetoUtilidad( + nombre = "Pala Vaccea", + descripcion = "Una antigua pala con marcas de uso, forjada con madera resistente y un metal desgastado por el tiempo. Parece estar llena de historia.", + imagen = R.drawable.asi_objeto_pala + ) + ) + /*habilidades.add( Habilidad( nombre = "Revitalización Floral", diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/TipoEvento.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/TipoEvento.kt index 2cf471a37c07abf477b7859198ca5f1fde631ca6..4966a4d9e691dfa242eb888b3304b6b836e3c473 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/TipoEvento.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/TipoEvento.kt @@ -8,6 +8,8 @@ enum class TipoEvento { Riesgo, Descanso, Ladron, + Desenterrar, + /*Trampa, /* Aliado, Misterio, diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt index 3e84468cc9f31353c2729209a5fe284773f1b1c3..97ab20017e79f4178cffed90c0f2913b4f370e86 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt @@ -1,14 +1,25 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.efecto +import android.content.Intent import com.example.ellegadodepintia.exploradoresDePintia.model.GameState +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context +import com.example.ellegadodepintia.minijuego1.InicioMinijuego1 + class EfectoUtilizarObjetoUtil(private val nombreObjeto: String) : Efecto(100) { override fun ejecutar(): String { val tieneObjeto = GameState.jugador.inventario.removeIf { it.nombre == nombreObjeto } if (tieneObjeto){ - GameState.eventoActual.actualizarFinalizado(true) - return "Has usado el objeto $nombreObjeto de tu inventario. Has logrado escapar" + if (nombreObjeto == "Pala Vaccea"){ + val intent = Intent(context, InicioMinijuego1::class.java) + context!!.startActivity(intent) + GameState.eventoActual.actualizarFinalizado(true) + return "¡Has obtenido un objeto de coste equivalente a los puntos que has obtenido! Echa un vistazo a tu inventario" + }else{ + GameState.eventoActual.actualizarFinalizado(true) + return "Has usado el objeto $nombreObjeto de tu inventario. Has logrado escapar" + } }else{ return "No tienes el $nombreObjeto en tu inventario" } diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DesenterrarFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DesenterrarFactory.kt new file mode 100644 index 0000000000000000000000000000000000000000..0bffea7579abc5d2bf48b507c07dd23023a36bd6 --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DesenterrarFactory.kt @@ -0,0 +1,52 @@ +package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory + +import com.example.ellegadodepintia.R +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.EfectoUtilizarObjetoUtil + +class DesenterrarFactory : EventoFactory { + private val desenterrarMap = mapOf( + "¡Has encontrado un antiguo yacimiento arqueológico! Aquà se esconden reliquias misteriosas esperando ser desenterradas. ¿Qué secretos del pasado descubrirás?" to Pair( + R.drawable.asi_exploradores_desenterrar, listOf( + Opcion( + descripcion = "Desenterrar", + atributoRequerida = Atributo.Nula, + EfectoUtilizarObjetoUtil( + "Pala Vaccea" + ) + ), Opcion( + descripcion = "Ignorar", + atributoRequerida = Atributo.Nula, + EfectoIgnorar(100) + ) + ) + ), + ) + + override fun generarDescripcion(): String { + return desenterrarMap.keys.random() + } + + override fun generarOpciones(descripcion: String): MutableList<Opcion> { + return desenterrarMap[descripcion]?.second?.shuffled()?.take(4)?.toMutableList() + ?: mutableListOf() + } + + override fun generarImagen(descripcion: String): Int { + return desenterrarMap[descripcion]?.first!! + } + + override fun generarEvento(): EventoDesenterrar { + val descripcion = generarDescripcion() + return EventoDesenterrar( + descripcion = descripcion, + dificultad = 0, + opciones = generarOpciones(descripcion), + imagen = generarImagen(descripcion), + resistenciaMax = (2..8).random(), + finalizado = false + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDesenterrar.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDesenterrar.kt new file mode 100644 index 0000000000000000000000000000000000000000..b6ce95e29d28be60fbe07f20d7275b19d40f4c98 --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDesenterrar.kt @@ -0,0 +1,11 @@ +package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory + +import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion + +class EventoDesenterrar( + 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 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 1be2e5f11a193b56092eed6b4fd133b1b90c6ef4..3a1beff845c1866979e24dc021165e2d53d96b0b 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 @@ -13,6 +13,7 @@ object EventoFactorySelector { TipoEvento.Riesgo -> RiesgoFactory() TipoEvento.Descanso -> DescansoFactory() TipoEvento.Ladron -> LadronFactory() + TipoEvento.Desenterrar -> DesenterrarFactory() } } } diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego1/FinMinijuego1.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego1/FinMinijuego1.kt index 03f06c3c6715cae32a4590b3208b057f424ab029..aa19c8e3e142845a899cfc61b8b1648e3b4acac1 100644 --- a/app/src/main/java/com/example/ellegadodepintia/minijuego1/FinMinijuego1.kt +++ b/app/src/main/java/com/example/ellegadodepintia/minijuego1/FinMinijuego1.kt @@ -1,5 +1,6 @@ package com.example.ellegadodepintia.minijuego1 +import android.content.Intent import android.os.Bundle import android.widget.Button import android.widget.TextView @@ -25,8 +26,10 @@ class FinMinijuego1 : AppCompatActivity() { // Acción del botón para reiniciar o volver botonReiniciar.setOnClickListener { - // Regresar a la actividad anterior - finish() // Termina esta actividad y vuelve a la anterior + val resultadoIntent = Intent() + resultadoIntent.putExtra("PUNTOS_HUESOS", puntuacion.toString()) + setResult(RESULT_OK, resultadoIntent) + finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt index 9f987e3ef5f6881201f706a09532d54458c97d55..bacf8a08f8dce0eaccdf41f90bef9faf1d50abf9 100644 --- a/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt +++ b/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt @@ -28,6 +28,7 @@ class InicioMinijuego1 : AppCompatActivity() { // Intent para iniciar una nueva actividad (supongamos que tienes una Activity llamada GameActivity) val intent = Intent(this, Minijuego1::class.java) startActivity(intent) + finish() } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt index 37ee84023018c53dff76bf151e5d3124bdf50488..020b372f73ea23569f5d70eb316feabf845178b1 100644 --- a/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt +++ b/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt @@ -17,6 +17,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import com.example.ellegadodepintia.R +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context import com.example.ellegadodepintia.soundManager.SoundManager import kotlin.random.Random @@ -124,7 +125,7 @@ class Minijuego1 : AppCompatActivity() { val intent = Intent(this@Minijuego1, FinMinijuego1::class.java) intent.putExtra("puntuacion", puntaje) if (!fuera) { - startActivity(intent) + context!!.startActivityForResult(intent, 104) } finish() } 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 bf91a4596e31d3fa0ae64c5402b6d50f2bde8c8f..f1072323c00dcff1d94eb40a4d4af222642bc44f 100644 --- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt +++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt @@ -12,25 +12,25 @@ object RepositorioObjetos { ObjetoDeValor( nombre = "Vasito de barro cocido", descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.", - coste = 20, + coste = 10, imagen = R.drawable.asi_exploradores_vasito ), ObjetoDeValor( nombre = "Jabonera de cerámica", descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.", - coste = 20, + coste = 15, imagen = R.drawable.asi_exploradores_jabonera ), ObjetoDeValor( nombre = "Copa negra con inscripciones", descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.", - coste = 20, + coste = 15, imagen = R.drawable.asi_minijuego_3_copa_negra_brunida ), ObjetoDeValor( nombre = "Tapadera de cerámica zoomorfa", descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.", - coste = 20, + coste = 30, imagen = R.drawable.asi_minijuego_3_tapadera_zoomorfo ), ObjetoEquipable( @@ -79,6 +79,11 @@ object RepositorioObjetos { 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 ), + ObjetoUtilidad( + nombre = "Pala Vaccea", + descripcion = "Una antigua pala con marcas de uso, forjada con madera resistente y un metal desgastado por el tiempo. Parece estar llena de historia.", + imagen = R.drawable.asi_objeto_pala + ), ObjetoDeValor( nombre= "Moneda de plata Vaccea", descripcion = "Pequeño denario con sÃmbolos celtÃberos, utilizadas para el comercio. Su circulación refleja una economÃa organizada en torno a la élite guerrera", @@ -92,6 +97,27 @@ object RepositorioObjetos { return objetos[nombre] } + fun obtenerObjetoPorCoste(coste: Int): Objeto? { + val objetosFiltrados = objetos.values + .filterIsInstance<ObjetoDeValor>() + .filter { it.coste <= coste } + .groupBy { it.coste } + + if (objetosFiltrados.isEmpty()){ + return null + } + + val costeMasCercano = objetosFiltrados.keys + .filter { it <= coste } + .maxOrNull() + + val objetosConCosteMasCercano = objetosFiltrados[costeMasCercano] ?: return null + return objetosConCosteMasCercano.random() + } + + + + fun obtenerObjetosAleatoriosTienda(cantidad: Int): ArrayList<String> { val consumibles = objetos.values.filter { it is ObjetoConsumible || it is ObjetoUtilidad } return ArrayList<String>().apply { diff --git a/app/src/main/res/drawable/asi_exploradores_desenterrar.png b/app/src/main/res/drawable/asi_exploradores_desenterrar.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba43438fd0253e4bcdc3f10a3f8d495d3f9d893 Binary files /dev/null and b/app/src/main/res/drawable/asi_exploradores_desenterrar.png differ diff --git a/app/src/main/res/drawable/asi_objeto_pala.png b/app/src/main/res/drawable/asi_objeto_pala.png new file mode 100644 index 0000000000000000000000000000000000000000..563298e3ce8411ce2d7357a66d28df4c04676896 Binary files /dev/null and b/app/src/main/res/drawable/asi_objeto_pala.png differ