diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b268ef36cd2de3a14ddddf25aa9f5d4e95731e18..2159e853647dc794a0b2787150f89d2bdea8f8d1 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -2,7 +2,7 @@ <project version="4"> <component name="deploymentTargetSelector"> <selectionStates> - <SelectionState runConfigName="app"> + <SelectionState runConfigName="MainActivity"> <option name="selectionMode" value="DROPDOWN" /> </SelectionState> </selectionStates> 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 d9e365369cf31d68c616e9011fff40c08548cd40..b40dc864f7cd173aa7125ef169e26de603be494a 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt @@ -13,6 +13,7 @@ import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import com.example.ellegadodepintia.R +import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo import com.example.ellegadodepintia.exploradoresDePintia.model.GameState import com.example.ellegadodepintia.exploradoresDePintia.model.GeneradorDeEventos @@ -75,9 +76,16 @@ class ExploradoresDePintia : AppCompatActivity() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == 100 && resultCode == RESULT_OK) { - val resultado = data?.getStringExtra("resultado") - Toast.makeText(this, resultado, Toast.LENGTH_SHORT).show() - // Aquà puedes realizar acciones según el resultado + if (data?.getStringExtra("PUNTUACION") != ""){ + val puntuacion = data?.getStringExtra("PUNTUACION")!!.toInt() + GameState.jugador.actualizarAtributo(Atributo.Energia, puntuacion) + GameState.jugador.actualizarAtributo(Atributo.Vida, puntuacion) + + }else{ + val resultado = data.getStringExtra("resultado") + Toast.makeText(this, resultado, Toast.LENGTH_SHORT).show() + } + } } diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt index eff38d902fd9b6f53c88cd3962bf21213bd642d2..58e4db798f15124c5976f47685a235db6b17e4dc 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt @@ -11,7 +11,7 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory.Eve object GeneradorDeEventos { - private const val CANTIDAD = 6 // Numero de eventos generados + private const val CANTIDAD = 2 // Numero de eventos generados private var eventos = ArrayList<Evento>() private fun crearEvento(): Evento { 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 510704a719aebd5586501429faa35fe740822733..2b016ae3c781f30e0a5ee18bd9b07233b046fd56 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 @@ -94,6 +94,12 @@ class Jugador { fun actualizarAtributo(atributo: Atributo, valor: Int) { atributos[atributo] = atributos[atributo]!!.plus(valor) + if (atributo == Atributo.Vida && atributos[atributo]!! >= vidaMax){ + atributos[atributo] = vidaMax + } + if (atributo == Atributo.Energia && atributos[atributo]!! >= energiaMax){ + atributos[atributo] = energiaMax + } notifyObservers() if (atributo == Atributo.Vida && atributos[atributo]!! <= 0){ "¡Has sido derrotado!".also { context!!.findViewById<TextView>(R.id.textoResultado).text = it } 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 41b62f9b94168f9144e5914b7ac1e470b5a983e3..9dd0640f4783e1fbc30530e3d1e71fcbf7eebd6d 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 @@ -6,6 +6,7 @@ enum class TipoEvento { Tienda, Trampa, Riesgo, + Descanso, /*Trampa, Aliado, Misterio, diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoNubeVaccea.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoNubeVaccea.kt new file mode 100644 index 0000000000000000000000000000000000000000..3984778a8834fb5afc9cd5ae219db13f0138ce73 --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoNubeVaccea.kt @@ -0,0 +1,24 @@ +package com.example.ellegadodepintia.exploradoresDePintia.model.efecto + +import android.content.Intent +import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context +import com.example.ellegadodepintia.minijuego2.Minijuego2 + + +class EfectoNubeVaccea() : Efecto(100) { + override fun ejecutar(): String { + if (GameState.jugador.atributos[Atributo.Energia] == GameState.jugador.energiaMax && + GameState.jugador.atributos[Atributo.Vida] == GameState.jugador.vidaMax){ + return "Tienes la vida y la energÃa al máximo. ¡No necesitas descansar!" + } + + val intent = Intent(context, Minijuego2::class.java) + context!!.startActivityForResult(intent, 100) + + GameState.eventoActual.actualizarFinalizado(true) + return "Has descansado" + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DescansoFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DescansoFactory.kt new file mode 100644 index 0000000000000000000000000000000000000000..20f6e438be2a7feaa632d5f94736289f3e302e54 --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DescansoFactory.kt @@ -0,0 +1,51 @@ +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.EfectoNubeVaccea + +class DescansoFactory : EventoFactory { + private val descansosMap = mapOf( + "Llegaste a un campamento vacceo, con un gran fuego en el centro y chozas hechas de madera y barro. Aquà puedes descansar, recuperar energÃa y estar listo para nuevas aventuras." to Pair( + R.drawable.asi_exploradores_campamento, listOf( + Opcion( + descripcion = "Descansar", + atributoRequerida = Atributo.Energia, + EfectoNubeVaccea() + + ), Opcion( + descripcion = "Continuar", + atributoRequerida = Atributo.Nula, + EfectoIgnorar(100) + ) + ) + ) + ) + + override fun generarDescripcion(): String { + return descansosMap.keys.random() + } + + override fun generarOpciones(descripcion: String): MutableList<Opcion> { + return descansosMap[descripcion]?.second?.toMutableList() + ?: mutableListOf() + } + + override fun generarImagen(descripcion: String): Int { + return descansosMap[descripcion]?.first!! + } + + override fun generarEvento(): EventoDescanso { + val descripcion = generarDescripcion() + return EventoDescanso( + 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/EventoDescanso.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDescanso.kt new file mode 100644 index 0000000000000000000000000000000000000000..d30a839cc13c4ebba9023266ef6ccd4bbd4b473c --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDescanso.kt @@ -0,0 +1,11 @@ +package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory + +import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion + +class EventoDescanso( + 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 74217d6ec4833ee489055b96b4ef7b9737ce7180..2291d141578fa669876117c9fdb6616367366cef 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.Tienda -> TiendaFactory() TipoEvento.Trampa -> TrampaFactory() TipoEvento.Riesgo -> RiesgoFactory() + TipoEvento.Descanso -> DescansoFactory() } } @@ -20,9 +21,10 @@ object EventoFactorySelector { val probabilidades = mapOf( TipoEvento.Reliquia to 0.3, TipoEvento.Tienda to 0.1, - TipoEvento.Riesgo to 0.3, + TipoEvento.Riesgo to 0.2, TipoEvento.Trampa to 0.1, - TipoEvento.Combate to 0.2 + TipoEvento.Combate to 0.2, + TipoEvento.Descanso to 0.1 ) val acumulado = probabilidades.entries.fold(mutableListOf<Pair<Double, TipoEvento>>()) { acc, entry -> diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt index c554c42ab43e8e18dd0a26cb55144ae8dfc6cc0b..d2ed23e353a2beb7e8549b890a04beb711709c17 100644 --- a/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt +++ b/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt @@ -1,5 +1,6 @@ package com.example.ellegadodepintia.minijuego2 +import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Looper @@ -248,21 +249,29 @@ class Minijuego2 : AppCompatActivity() { private fun detenerJuego() { jugando = false soundManager.stopSound() - soundManager.playSound(R.raw.sound_over,100) + soundManager.playSound(R.raw.sound_over, 100) + protagonista.clearAnimation() val animacionMuerte = AnimationUtils.loadAnimation(this, R.anim.caida) - obstacleTimer?.let { handler.removeCallbacks(it) } // Detener el temporizador de obstáculos protagonista.startAnimation(animacionMuerte) - protagonista.visibility = View.GONE - botonReinicio.visibility = View.VISIBLE // Mostrar botón de reinicio + + // Mostrar botón de reinicio + botonReinicio.visibility = View.VISIBLE val animacion = AnimationUtils.loadAnimation(this, R.anim.animatitu) botonReinicio.startAnimation(animacion) + + // Configurar el comportamiento del botón de reinicio botonReinicio.setOnClickListener { - botonReinicio.clearAnimation() - reiniciarJuego() + // Devuelve la puntuación actual y finaliza la actividad + val resultadoIntent = Intent() + resultadoIntent.putExtra("PUNTUACION", puntuacion.toString()) + setResult(RESULT_OK, resultadoIntent) + finish() } } + + /* private fun reiniciarJuego() { // Reiniciar variables del juego puntuacion = 0 @@ -275,7 +284,7 @@ class Minijuego2 : AppCompatActivity() { } botonReinicio.visibility = View.GONE // Ocultar botón de reinicio iniciarJuego() // Reiniciar el juego - } + }*/ private fun moverFondo() { // Mueve ambos fondos hacia la izquierda diff --git a/app/src/main/res/drawable/asi_exploradores_campamento.png b/app/src/main/res/drawable/asi_exploradores_campamento.png new file mode 100644 index 0000000000000000000000000000000000000000..fcfdf8fab44ae57cb82d102faaf535be81fd9635 Binary files /dev/null and b/app/src/main/res/drawable/asi_exploradores_campamento.png differ