From 336e1d0113b6c72b193859d94fb292f46068d17b Mon Sep 17 00:00:00 2001 From: izajime <izanmario8@gmail.com> Date: Sun, 24 Nov 2024 18:22:54 +0100 Subject: [PATCH] Feature: El inventario se guarda en la base de datos --- .../exploradoresDePintia/model/Jugador.kt | 13 ++++++++++++- .../repositorios/RepositorioJugador.kt | 15 +++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) 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 397ff5f..8d36697 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,7 +13,6 @@ 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 @@ -108,6 +107,11 @@ class Jugador { fun conseguirObjeto(objeto: Objeto): String { return if (inventario.size < 9) { inventario.add(objeto) + val nuevoInventarioNombres = ArrayList<String>() + for(objetoInventario in inventario){ + nuevoInventarioNombres.add(objetoInventario.nombre) + } + RepositorioJugador.setInventario(nuevoInventarioNombres) "Se ha añadido ${objeto.nombre} al inventario" } else { "¡El inventario está lleno!" @@ -126,6 +130,11 @@ class Jugador { fun destruirObjeto(objeto: Objeto) { inventario.remove(objeto) + val nuevoInventarioNombres = ArrayList<String>() + for(objetoInventario in inventario){ + nuevoInventarioNombres.add(objetoInventario.nombre) + } + RepositorioJugador.setInventario(nuevoInventarioNombres) notifyObservers() } @@ -192,6 +201,8 @@ class Jugador { vidaMax = 10 energiaMax = 10 actualizarObjetosTienda(nivelCiudad*2) + actualizarObjetosArmeria(nivelCiudad*2) + RepositorioJugador.setInventario(ArrayList()) } fun destruirObjetoRandom(){ 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 22ad0ac..5f1703b 100644 --- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioJugador.kt +++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioJugador.kt @@ -28,6 +28,15 @@ object RepositorioJugador { ?: ArrayList() GameState.jugador.objetosArmeria = objetosArmeria + + val inventario = (it.get("inventario") as? List<*>) + ?.filterIsInstance<String>() + ?.toCollection(ArrayList()) + ?: ArrayList() + + for(nombreObjeto in inventario){ + GameState.jugador.inventario.add(RepositorioObjetos.obtenerObjetoPorNombre(nombreObjeto)!!) + } } } @@ -37,6 +46,7 @@ object RepositorioJugador { "monedas" to 0, "username" to username, "nivelCiudad" to 1, + "inventario" to ArrayList<String>(), "objetosTienda" to RepositorioObjetos.obtenerObjetosAleatoriosTienda(2), "objetosArmeria" to RepositorioObjetos.obtenerObjetosAleatoriosArmeria(2) ) @@ -63,6 +73,11 @@ object RepositorioJugador { userRef.set(hashMapOf("nivelCiudad" to nivelCiudad), SetOptions.merge()) } + fun setInventario(objetos : ArrayList<String>) { + val userRef = db.collection("users").document(email) + userRef.set(hashMapOf("inventario" to objetos), SetOptions.merge()) + } + fun cargarJugadores(callback: (List<PlayerLeaderBoard>) -> Unit) { db.collection("users") .get() -- GitLab