From 553eb739f43a1d530efa3ddd454e955099383bf6 Mon Sep 17 00:00:00 2001 From: izajime <izan.jimenez@estudiantes.uva.es> Date: Sat, 23 Nov 2024 13:04:16 +0100 Subject: [PATCH] Feature: La taberna se sube de nivel. Falta gastar las monedas y avisar al usuario --- .../ellegadodepintia/TabernaActivity.kt | 19 ++++ .../exploradoresDePintia/ModalConfirmacion.kt | 57 ++++++++++ .../exploradoresDePintia/model/Jugador.kt | 6 + .../repositorios/RepositorioJugador.kt | 5 + app/src/main/res/layout/activity_taberna.xml | 58 ++++++---- .../main/res/layout/modal_confirmacion.xml | 107 ++++++++++++++++++ 6 files changed, 228 insertions(+), 24 deletions(-) create mode 100644 app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalConfirmacion.kt create mode 100644 app/src/main/res/layout/modal_confirmacion.xml diff --git a/app/src/main/java/com/example/ellegadodepintia/TabernaActivity.kt b/app/src/main/java/com/example/ellegadodepintia/TabernaActivity.kt index a2ff965..47a4210 100644 --- a/app/src/main/java/com/example/ellegadodepintia/TabernaActivity.kt +++ b/app/src/main/java/com/example/ellegadodepintia/TabernaActivity.kt @@ -1,11 +1,30 @@ package com.example.ellegadodepintia import android.os.Bundle +import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import com.example.ellegadodepintia.exploradoresDePintia.ModalConfirmacion +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState class TabernaActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_taberna) + + GameState.jugador.addObserver { actualizarNivelTaberna() } + + val botonMejorar = findViewById<TextView>(R.id.botonMejorar) + + actualizarNivelTaberna() + botonMejorar.setOnClickListener { + val confirmacionFragment = ModalConfirmacion() + confirmacionFragment.show(supportFragmentManager, "confirmacion") + } + } + + 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 new file mode 100644 index 0000000..cacbf64 --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalConfirmacion.kt @@ -0,0 +1,57 @@ +package com.example.ellegadodepintia.exploradoresDePintia + +import android.content.DialogInterface +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.TextView +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 + +class ModalConfirmacion : DialogFragment() { + var objeto: Objeto? = null + var coste: Int? = null + private var onDismissListener: (() -> Unit)? = null + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.modal_confirmacion, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + val nivelActual = GameState.jugador.nivelCiudad + val costeNuevoNivel = 50 * nivelActual + + 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() + } + + val botonCancelar = view.findViewById<Button>(R.id.botonCancelar) + botonCancelar.setOnClickListener{ + dismiss() + } + } + + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + onDismissListener?.invoke() + } + +} 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 bdeaf3e..5d104a2 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 @@ -145,6 +145,12 @@ class Jugador { notifyObservers() } + fun actualizarNivelCiudad(valor: Int) { + nivelCiudad = valor + RepositorioJugador.setNivelTaberna(valor) + notifyObservers() + } + fun actualizarObjetosTienda(nObjetos : Int){ val nuevosObjetos = RepositorioObjetos.obtenerObjetosAleatoriosTienda(nObjetos) this.objetosTienda = nuevosObjetos diff --git a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioJugador.kt b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioJugador.kt index ba597e8..22ad0ac 100644 --- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioJugador.kt +++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioJugador.kt @@ -58,6 +58,11 @@ object RepositorioJugador { userRef.set(hashMapOf("objetosArmeria" to objetosArmeria), SetOptions.merge()) } + fun setNivelTaberna(nivelCiudad : Int) { + val userRef = db.collection("users").document(email) + userRef.set(hashMapOf("nivelCiudad" to nivelCiudad), SetOptions.merge()) + } + fun cargarJugadores(callback: (List<PlayerLeaderBoard>) -> Unit) { db.collection("users") .get() diff --git a/app/src/main/res/layout/activity_taberna.xml b/app/src/main/res/layout/activity_taberna.xml index 3908fb1..23dcc7b 100644 --- a/app/src/main/res/layout/activity_taberna.xml +++ b/app/src/main/res/layout/activity_taberna.xml @@ -32,7 +32,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="18dp" - android:text="Nivel Ciudad: 1" + android:text="Nivel actual: 1" android:textSize="30sp" android:fontFamily="@font/pixeled" android:layout_below="@id/tituloJuego" @@ -45,7 +45,7 @@ app:layout_constraintTop_toBottomOf="@id/tituloJuego"/> <TextView - android:id="@+id/textoNivelActual" + android:id="@+id/textoDescripcion" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="20dp" @@ -59,38 +59,48 @@ android:background="@drawable/style_texto_border" android:textColor="@color/pintiaTitleText" android:textStyle="bold" - android:layout_marginTop="80dp" + android:layout_marginTop="40dp" android:layout_centerHorizontal="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/nivelActual"/> - - <LinearLayout - android:layout_width="wrap_content" + <TextView + android:id="@+id/textoInformacion" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/style_confirmar_gradiente" + android:textAlignment="center" + android:layout_marginTop="40dp" + android:padding="18dp" + android:text="Aquà se informará al usuario" + android:textSize="16sp" + android:fontFamily="@font/pixeled" + android:layout_below="@id/tituloJuego" + android:background="@drawable/style_texto_border" + android:textColor="@color/pintiaTitleText" + android:textStyle="bold" + android:layout_centerHorizontal="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - android:layout_marginBottom="45dp" - android:layout_marginTop="80dp" - app:layout_constraintBottom_toTopOf="@id/bottom_navigation" - > - <Button - android:id="@+id/botonMejorar" - android:layout_width="350dp" - android:layout_height="wrap_content" - android:padding="18dp" - android:text="Mejorar" - android:textColor="@color/pintiaTitleText" - android:textSize="30sp" - android:background="@android:color/transparent" - android:fontFamily="@font/pixeled" - android:textStyle="bold" - /> - </LinearLayout> + app:layout_constraintTop_toBottomOf="@id/textoDescripcion" /> + <Button + android:id="@+id/botonMejorar" + android:layout_width="350dp" + android:layout_height="wrap_content" + android:layout_marginTop="40dp" + android:padding="18dp" + android:text="Mejorar" + android:textColor="@color/pintiaTitleText" + android:textSize="30sp" + android:backgroundTint="@color/pintiaButton" + android:fontFamily="@font/pixeled" + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/textoInformacion"/> + <LinearLayout android:id="@+id/bottom_navigation" style="?android:attr/buttonBarStyle" diff --git a/app/src/main/res/layout/modal_confirmacion.xml b/app/src/main/res/layout/modal_confirmacion.xml new file mode 100644 index 0000000..cc304fe --- /dev/null +++ b/app/src/main/res/layout/modal_confirmacion.xml @@ -0,0 +1,107 @@ +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/style_background_gradiente" + android:padding="10dp" + tools:context=".exploradoresDePintia.ExploradoresDePintia" + tools:ignore="HardcodedText, UseCompoundDrawables,ButtonStyle" + > + + <LinearLayout + android:id="@+id/mainArea" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <TextView + android:id="@+id/textoTitulo" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:textAlignment="center" + android:text="Subida de nivel" + android:textColor="#6A0000" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + android:textSize="24sp" + android:textStyle="bold" + android:shadowColor="#000000" + android:shadowDx="2" + android:shadowDy="2" + android:shadowRadius="4" /> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_marginBottom="10dp" + android:background="#000000" /> + + <TextView + android:id="@+id/textoInformacion" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="Vas a mejorar la taberna por el coste de 50 monedas. ¿Estás seguro?" + android:textAlignment="center" + android:textColor="#000000" + android:layout_marginTop="10dp" + android:padding="8dp" + android:textSize="15sp" /> + + + + <LinearLayout + android:id="@+id/slotsInventario" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center" + android:layout_marginTop="20dp" + android:orientation="horizontal"> + + <Button + android:id="@+id/botonMejorar" + android:layout_width="135dp" + android:layout_height="wrap_content" + android:backgroundTint="@color/pintiaButton" + android:textColor="@color/pintiaButtonText" + android:text="Mejorar" + android:fontFamily="@font/pixeled" + android:layout_marginEnd="10dp" + android:textStyle="bold"/> + + <Button + android:id="@+id/botonCancelar" + android:layout_width="135dp" + android:layout_height="wrap_content" + android:backgroundTint="#c44841" + android:textColor="@color/pintiaButtonText" + android:text="Cancelar" + android:fontFamily="@font/pixeled" + tools:ignore="HardcodedText" + android:textStyle="bold"/> + + </LinearLayout> + + <TextView + android:id="@+id/textoResultadoUso" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="" + android:textAlignment="center" + android:textColor="#000000" + android:layout_marginTop="10dp" + android:padding="8dp" + android:textSize="15sp" /> + + + + </LinearLayout> + +</androidx.constraintlayout.widget.ConstraintLayout> -- GitLab