From 440e22ef03c916a15c7943a500c2efa0a22abeb9 Mon Sep 17 00:00:00 2001 From: izajime <izanmario8@gmail.com> Date: Sat, 23 Nov 2024 14:56:42 +0100 Subject: [PATCH] Fix: Ahora al subir la taberna de nivel comprueba las monedas y las resta --- .../ellegadodepintia/TabernaActivity.kt | 12 ++++++- .../exploradoresDePintia/ModalConfirmacion.kt | 32 +++++++++++-------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/example/ellegadodepintia/TabernaActivity.kt b/app/src/main/java/com/example/ellegadodepintia/TabernaActivity.kt index 47a4210..995444e 100644 --- a/app/src/main/java/com/example/ellegadodepintia/TabernaActivity.kt +++ b/app/src/main/java/com/example/ellegadodepintia/TabernaActivity.kt @@ -14,15 +14,25 @@ class TabernaActivity : AppCompatActivity() { GameState.jugador.addObserver { actualizarNivelTaberna() } val botonMejorar = findViewById<TextView>(R.id.botonMejorar) + val textoInformacion = findViewById<TextView>(R.id.textoInformacion) actualizarNivelTaberna() + botonMejorar.setOnClickListener { val confirmacionFragment = ModalConfirmacion() + + confirmacionFragment.onDismissListener = { mejorar -> + if (mejorar) { + "Se ha realizado la mejora con éxito".also { textoInformacion.text = it } + } else { + "No se ha podido realizar la mejora".also { textoInformacion.text = it } + } + } confirmacionFragment.show(supportFragmentManager, "confirmacion") } } - private fun actualizarNivelTaberna(){ + private fun actualizarNivelTaberna() { val textoNivel = findViewById<TextView>(R.id.nivelActual) "Nivel actual: ${GameState.jugador.nivelCiudad}".also { textoNivel.text = it } diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalConfirmacion.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalConfirmacion.kt index cacbf64..e1ae727 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalConfirmacion.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalConfirmacion.kt @@ -1,6 +1,5 @@ package com.example.ellegadodepintia.exploradoresDePintia -import android.content.DialogInterface import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -11,11 +10,12 @@ import androidx.fragment.app.DialogFragment import com.example.ellegadodepintia.R import com.example.ellegadodepintia.exploradoresDePintia.model.GameState import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto +import com.example.ellegadodepintia.repositorios.RepositorioJugador class ModalConfirmacion : DialogFragment() { var objeto: Objeto? = null var coste: Int? = null - private var onDismissListener: (() -> Unit)? = null + var onDismissListener: ((isMejora: Boolean) -> Unit)? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -29,29 +29,33 @@ class ModalConfirmacion : DialogFragment() { val nivelActual = GameState.jugador.nivelCiudad val costeNuevoNivel = 50 * nivelActual + val monedasJugador = GameState.jugador.monedas val textoInformacion = view.findViewById<TextView>(R.id.textoInformacion) ("Vas a mejorar la taberna por el coste de $costeNuevoNivel monedas. ¿Estás seguro?").also { textoInformacion.text = it } val botonMejorar = view.findViewById<Button>(R.id.botonMejorar) botonMejorar.setOnClickListener{ - val nObjetos = (nivelActual + 1) * 2 - GameState.jugador.actualizarObjetosTienda(nObjetos) - GameState.jugador.actualizarObjetosArmeria(nObjetos) - GameState.jugador.actualizarNivelCiudad(nivelActual + 1) - "Se ha subido de nivel la taberna correctamente".also { textoInformacion.text = it } - dismiss() + if (monedasJugador >= costeNuevoNivel){ + val nObjetos = (nivelActual + 1) * 2 + GameState.jugador.actualizarObjetosTienda(nObjetos) + GameState.jugador.actualizarObjetosArmeria(nObjetos) + GameState.jugador.actualizarNivelCiudad(nivelActual + 1) + GameState.jugador.actualizarMonedas(monedasJugador - costeNuevoNivel) + RepositorioJugador.setMonedas(monedasJugador - costeNuevoNivel) + onDismissListener?.invoke(true) + dismiss() + } else { + onDismissListener?.invoke(false) + dismiss() + } + } val botonCancelar = view.findViewById<Button>(R.id.botonCancelar) botonCancelar.setOnClickListener{ + onDismissListener?.invoke(false) dismiss() } } - - override fun onDismiss(dialog: DialogInterface) { - super.onDismiss(dialog) - onDismissListener?.invoke() - } - } -- GitLab