diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a6e64bbb1bd96a794b6dc89cf937808671f286f6..73557341e7d0f1d72372ea4b67d46770c0055c13 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -36,6 +36,7 @@ <activity android:name=".exploradoresDePintia.Resumen" android:exported="true"/> <activity android:name=".TabernaActivity" android:exported="true"/> <activity android:name=".TiendaActivity" android:exported="true"/> + <activity android:name=".ArmeriaActivity" android:exported="true"/> </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/ArmeriaActivity.kt b/app/src/main/java/com/example/ellegadodepintia/ArmeriaActivity.kt new file mode 100644 index 0000000000000000000000000000000000000000..541e5e0cbcbc9f1f10222fd2b35764f33ce816ad --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/ArmeriaActivity.kt @@ -0,0 +1,139 @@ +package com.example.ellegadodepintia + +import android.graphics.Color +import android.os.Bundle +import android.view.View +import android.widget.Button +import android.widget.ImageView +import android.widget.TextView +import androidx.appcompat.app.AppCompatActivity +import com.example.ellegadodepintia.exploradoresDePintia.ModalDetallesCompra +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState +import com.example.ellegadodepintia.exploradoresDePintia.model.LayoutUtils +import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto +import com.example.ellegadodepintia.repositorios.RepositorioJugador +import com.example.ellegadodepintia.repositorios.RepositorioObjetos + +class ArmeriaActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_armeria) + + GameState.jugador.addObserver { LayoutUtils.actualizarMonedasTienda(this) + cargarObjetos()} + + val nivelCiudad = GameState.jugador.nivelCiudad + val nObjetos = nivelCiudad * 2 + + val texto = findViewById<TextView>(R.id.textoInformacion) + + val botonRefrescar = findViewById<Button>(R.id.botonRefrescar) + botonRefrescar.setOnClickListener { + if(GameState.jugador.monedas >= 5){ + GameState.jugador.actualizarObjetosArmeria(nObjetos) + RepositorioJugador.setMonedas(GameState.jugador.monedas - 5) + GameState.jugador.actualizarMonedas(GameState.jugador.monedas - 5) + "Se ha actualizado la tienda".also { texto.text = it } + } else { + "No tienes suficientes monedas para refrescar".also { texto.text = it } + } + + } + + val textoMonedas = findViewById<TextView>(R.id.textoMonedas) + GameState.jugador.monedas.toString().also { textoMonedas.text = it } + cargarObjetos() + } + + private fun cargarObjetos(){ + + val nivelCiudad = GameState.jugador.nivelCiudad + val nObjetos = nivelCiudad * 2 + val objetos = RepositorioObjetos.convertirNombresAObjetos(GameState.jugador.objetosArmeria) + val preciosGenerados = ArrayList<Int>() + + val slots = listOf<ImageView>( + findViewById(R.id.slot01), + findViewById(R.id.slot02), + findViewById(R.id.slot03), + findViewById(R.id.slot04), + findViewById(R.id.slot05), + findViewById(R.id.slot06) + ) + + val precios = listOf<TextView>( + findViewById(R.id.precio01), + findViewById(R.id.precio02), + findViewById(R.id.precio03), + findViewById(R.id.precio04), + findViewById(R.id.precio05), + findViewById(R.id.precio06) + ) + + val monedas = listOf<ImageView>( + findViewById(R.id.moneda01), + findViewById(R.id.moneda02), + findViewById(R.id.moneda03), + findViewById(R.id.moneda04), + findViewById(R.id.moneda05), + findViewById(R.id.moneda06) + ) + + precios.forEachIndexed { index, precio -> + if (index < nObjetos) { + val resultado = (30..75).random() / nivelCiudad + preciosGenerados.add(resultado) + resultado.toString().also { precio.text = it } + } else { + val nivelTaberna = index / 2 + 1 + "Taberna lvl $nivelTaberna".also { precio.text = it } + precio.textSize = 11f + precio.setTextColor(Color.RED) + + } + } + + slots.forEachIndexed { index, slot -> + if (index < nObjetos) { + slot.setImageResource(objetos[index]!!.imagen) + slot.setOnClickListener { + val modalDetallesFragment = ModalDetallesCompra().apply { + objeto = objetos[index] + coste = preciosGenerados[index] + } + + modalDetallesFragment.onDismissListener = { accionRealizada -> + if (accionRealizada) { + ejecutarCompra(objetos[index], preciosGenerados[index]) + } + } + + modalDetallesFragment.show(supportFragmentManager, "modalDetalles") + } + } else { + slot.setImageResource(R.drawable.asi_candado_tienda) + slot.scaleType = ImageView.ScaleType.CENTER + } + } + + monedas.forEachIndexed { index, moneda -> + if (index >= nObjetos) { + moneda.visibility = View.GONE + } + } + } + + private fun ejecutarCompra(objeto: Objeto?, coste: Int){ + val texto = findViewById<TextView>(R.id.textoInformacion) + if (GameState.jugador.monedas < coste){ + "No hay dinero".also { texto.text = it } + }else{ + GameState.jugador.actualizarMonedas(GameState.jugador.monedas - coste) + RepositorioJugador.setMonedas(GameState.jugador.monedas) + if (objeto != null) { + GameState.jugador.conseguirObjeto(objeto) + } + "Objeto comprado y añadido al inventario".also { texto.text = it } + } + } +} diff --git a/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt b/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt index 13553b83c27286554208f21d74dc692545cddaa8..35d525cf0966019e68f3c70f8d9ac4f91ecbb4e7 100644 --- a/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt +++ b/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt @@ -48,5 +48,11 @@ class MapActivity : AppCompatActivity() { val intent = Intent(this, TiendaActivity::class.java) startActivity(intent) } + + val armeria = findViewById<ImageButton>(R.id.botonArmeria) + armeria.setOnClickListener { + val intent = Intent(this, ArmeriaActivity::class.java) + startActivity(intent) + } } } diff --git a/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt b/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt index 6db47be7ebcc82c8de5735fdc5dbc04d78e13b9c..fe945231baa1804dbd81c4843053700f64790074 100644 --- a/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt +++ b/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt @@ -1,8 +1,17 @@ package com.example.ellegadodepintia +import android.graphics.Color import android.os.Bundle +import android.view.View +import android.widget.Button import android.widget.ImageView +import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import com.example.ellegadodepintia.exploradoresDePintia.ModalDetallesCompra +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState +import com.example.ellegadodepintia.exploradoresDePintia.model.LayoutUtils +import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto +import com.example.ellegadodepintia.repositorios.RepositorioJugador import com.example.ellegadodepintia.repositorios.RepositorioObjetos class TiendaActivity : AppCompatActivity() { @@ -10,11 +19,41 @@ class TiendaActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_tienda) - val objetos = RepositorioObjetos.obtenerObjetosAleatoriosTienda(6) + GameState.jugador.addObserver { LayoutUtils.actualizarMonedasTienda(this) + cargarObjetos()} - //TODO hay que hacer que dependiendo del nivel de la ciudad haga más cosas - val slots = listOf( - findViewById<ImageView>(R.id.slot01), + val nivelCiudad = GameState.jugador.nivelCiudad + val nObjetos = nivelCiudad * 2 + + val texto = findViewById<TextView>(R.id.textoInformacion) + + val botonRefrescar = findViewById<Button>(R.id.botonRefrescar) + botonRefrescar.setOnClickListener { + if(GameState.jugador.monedas >= 5){ + GameState.jugador.actualizarObjetosTienda(nObjetos) + RepositorioJugador.setMonedas(GameState.jugador.monedas - 5) + GameState.jugador.actualizarMonedas(GameState.jugador.monedas - 5) + "Se ha actualizado la tienda".also { texto.text = it } + } else { + "No tienes suficientes monedas para refrescar".also { texto.text = it } + } + + } + + val textoMonedas = findViewById<TextView>(R.id.textoMonedas) + GameState.jugador.monedas.toString().also { textoMonedas.text = it } + cargarObjetos() + } + + private fun cargarObjetos(){ + + val nivelCiudad = GameState.jugador.nivelCiudad + val nObjetos = nivelCiudad * 2 + val objetos = RepositorioObjetos.convertirNombresAObjetos(GameState.jugador.objetosTienda) + val preciosGenerados = ArrayList<Int>() + + val slots = listOf<ImageView>( + findViewById(R.id.slot01), findViewById(R.id.slot02), findViewById(R.id.slot03), findViewById(R.id.slot04), @@ -22,8 +61,79 @@ class TiendaActivity : AppCompatActivity() { findViewById(R.id.slot06) ) + val precios = listOf<TextView>( + findViewById(R.id.precio01), + findViewById(R.id.precio02), + findViewById(R.id.precio03), + findViewById(R.id.precio04), + findViewById(R.id.precio05), + findViewById(R.id.precio06) + ) + + val monedas = listOf<ImageView>( + findViewById(R.id.moneda01), + findViewById(R.id.moneda02), + findViewById(R.id.moneda03), + findViewById(R.id.moneda04), + findViewById(R.id.moneda05), + findViewById(R.id.moneda06) + ) + + precios.forEachIndexed { index, precio -> + if (index < nObjetos) { + val resultado = (30..75).random() / nivelCiudad + preciosGenerados.add(resultado) + resultado.toString().also { precio.text = it } + } else { + val nivelTaberna = index / 2 + 1 + "Taberna lvl $nivelTaberna".also { precio.text = it } + precio.textSize = 11f + precio.setTextColor(Color.RED) + + } + } + slots.forEachIndexed { index, slot -> - slot.setImageResource(objetos[index].imagen) + if (index < nObjetos) { + slot.setImageResource(objetos[index]!!.imagen) + slot.setOnClickListener { + val modalDetallesFragment = ModalDetallesCompra().apply { + objeto = objetos[index] + coste = preciosGenerados[index] + } + + modalDetallesFragment.onDismissListener = { accionRealizada -> + if (accionRealizada) { + ejecutarCompra(objetos[index], preciosGenerados[index]) + } + } + + modalDetallesFragment.show(supportFragmentManager, "modalDetalles") + } + } else { + slot.setImageResource(R.drawable.asi_candado_tienda) + slot.scaleType = ImageView.ScaleType.CENTER + } + } + + monedas.forEachIndexed { index, moneda -> + if (index >= nObjetos) { + moneda.visibility = View.GONE + } + } + } + + private fun ejecutarCompra(objeto: Objeto?, coste: Int){ + val texto = findViewById<TextView>(R.id.textoInformacion) + if (GameState.jugador.monedas < coste){ + "No hay dinero".also { texto.text = it } + }else{ + GameState.jugador.actualizarMonedas(GameState.jugador.monedas - coste) + RepositorioJugador.setMonedas(GameState.jugador.monedas) + if (objeto != null) { + GameState.jugador.conseguirObjeto(objeto) + } + "Objeto comprado y añadido al inventario".also { texto.text = it } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/Resumen.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/Resumen.kt index 69233420502f012d1673c5044527a4f0b210a3b2..b0c47e856a3a7dc9bc26b9dbc25d72a1c378358c 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/Resumen.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/Resumen.kt @@ -38,7 +38,7 @@ class Resumen : AppCompatActivity() { val mensajeResultado = result.data?.getStringExtra("resultado")!!.toInt() println(mensajeResultado) val textoResumen = findViewById<TextView>(R.id.textoResumen) - "Ha susado el ticker para generar aun más monedas. Enhorabuena, has conseguido $mensajeResultado monedas.".also { + "Has usado el ticker para generar aun más monedas. Enhorabuena, has conseguido $mensajeResultado monedas.".also { textoResumen.text = it } GameState.jugador.monedas+=mensajeResultado-gananciaTotal 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 c0233449b5ad43f226ffbf6a6eed5df857229e0a..f32aca04807376172a32736012627d3c3729d9a4 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,8 +13,8 @@ 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.exploradoresDePintia.model.objeto.efectoObjeto.EfectoEquipableAumento +import com.example.ellegadodepintia.repositorios.RepositorioJugador +import com.example.ellegadodepintia.repositorios.RepositorioObjetos class Jugador { var nivelCiudad = 1 @@ -27,6 +27,8 @@ class Jugador { var habilidades = ArrayList<Habilidad>(1) var buffos = ArrayList<EfectoBuffo>() var monedas = 0 + var objetosTienda = ArrayList<String>(6) + var objetosArmeria = ArrayList<String>(6) init { atributos[Atributo.Vida] = 10 @@ -34,32 +36,6 @@ class Jugador { atributos[Atributo.Investigacion] = 1 atributos[Atributo.Energia] = 10 - inventario.add( - ObjetoUtilidad( - nombre = "Ticket", - 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 - ) - ) - - inventario.add( - ObjetoEquipable( - nombre = "Espada de Hierro", - descripcion = "Una espada de hierro sencilla y confiable perfecta para un aventurero novato.", - efecto = EfectoEquipableAumento(1, Atributo.Ataque), - imagen = R.drawable.asi_objeto_espadadefault - ) - ) - - inventario.add( - ObjetoUtilidad( - nombre = "Pico Vacceo", - descripcion = "Un pico viejo y oscuro con dibujos extraños que parecen brillar cerca de las piedras, como si estuviera esperando que lo uses para algo importante.", - imagen = R.drawable.asi_objeto_pico - ) - ) - - habilidades.add( Habilidad( nombre = "Furia del Vacceo", @@ -175,6 +151,20 @@ class Jugador { notifyObservers() } + fun actualizarObjetosTienda(nObjetos : Int){ + val nuevosObjetos = RepositorioObjetos.obtenerObjetosAleatoriosTienda(nObjetos) + this.objetosTienda = nuevosObjetos + RepositorioJugador.setObjetosTienda(nuevosObjetos) + notifyObservers() + } + + fun actualizarObjetosArmeria(nObjetos : Int){ + val nuevosObjetos = RepositorioObjetos.obtenerObjetosAleatoriosArmeria(nObjetos) + this.objetosArmeria = nuevosObjetos + RepositorioJugador.setObjetosArmeria(nuevosObjetos) + notifyObservers() + } + fun reset() { observers.clear() @@ -191,6 +181,7 @@ class Jugador { vidaMax = 10 energiaMax = 10 + actualizarObjetosTienda(nivelCiudad*2) } fun destruirObjetoRandom(){ diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/LayoutUtils.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/LayoutUtils.kt index 4f7f8c778784553a90d00e0d3db4ee67c49b95b0..4e40ca1b07b7024192735fbc08c866a8464b99f2 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/LayoutUtils.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/LayoutUtils.kt @@ -1,6 +1,7 @@ package com.example.ellegadodepintia.exploradoresDePintia.model import android.app.Activity +import android.content.Context import android.view.View import android.widget.ImageView import android.widget.ProgressBar @@ -115,6 +116,12 @@ object LayoutUtils { GameState.jugador.monedas.toString() .also { context!!.findViewById<TextView>(R.id.moneyText).text = it } } + + fun actualizarMonedasTienda(tienda : Context) { + GameState.jugador.monedas.toString() + .also { (tienda as Activity).findViewById<TextView>(R.id.textoMonedas).text = it } + } + fun actualizarMonedasInventario(view: View) { GameState.jugador.monedas.toString() .also { view.findViewById<TextView>(R.id.moneyText).text = it } 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 df00a229895e8bd78e1f59f8397763696e9e64d3..ba597e8f6b590e080ee0fa5cb1be3de203c860b7 100644 --- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioJugador.kt +++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioJugador.kt @@ -14,14 +14,32 @@ object RepositorioJugador { db.collection("users").document(email).get().addOnSuccessListener { GameState.jugador.monedas = (it.get("monedas") as Long).toInt() GameState.jugador.nivelCiudad = (it.get("nivelCiudad") as Long).toInt() + + val objetosTienda = (it.get("objetosTienda") as? List<*>) + ?.filterIsInstance<String>() + ?.toCollection(ArrayList()) + ?: ArrayList() + + GameState.jugador.objetosTienda = objetosTienda + + val objetosArmeria = (it.get("objetosArmeria") as? List<*>) + ?.filterIsInstance<String>() + ?.toCollection(ArrayList()) + ?: ArrayList() + + GameState.jugador.objetosArmeria = objetosArmeria } } fun addJugador(email: String, username: String) { db.collection("users").document(email).set( - hashMapOf("monedas" to 0, + hashMapOf( + "monedas" to 0, "username" to username, - "nivelCiudad" to 1) + "nivelCiudad" to 1, + "objetosTienda" to RepositorioObjetos.obtenerObjetosAleatoriosTienda(2), + "objetosArmeria" to RepositorioObjetos.obtenerObjetosAleatoriosArmeria(2) + ) ) } @@ -30,6 +48,16 @@ object RepositorioJugador { userRef.set(hashMapOf("monedas" to monedas), SetOptions.merge()) } + fun setObjetosTienda(objetosTienda : ArrayList<String>) { + val userRef = db.collection("users").document(email) + userRef.set(hashMapOf("objetosTienda" to objetosTienda), SetOptions.merge()) + } + + fun setObjetosArmeria(objetosArmeria : ArrayList<String>) { + val userRef = db.collection("users").document(email) + userRef.set(hashMapOf("objetosArmeria" to objetosArmeria), SetOptions.merge()) + } + fun cargarJugadores(callback: (List<PlayerLeaderBoard>) -> Unit) { db.collection("users") .get() 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 492cc14dce4bc393a5925345751653747ee7fc0a..29cf1d55e9375e7ec8dd1fdf2c1ee0b00b11b874 100644 --- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt +++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt @@ -1,4 +1,4 @@ -package com.example.ellegadodepintia.repositorios + package com.example.ellegadodepintia.repositorios import com.example.ellegadodepintia.R import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo @@ -86,8 +86,28 @@ object RepositorioObjetos { return objetos[nombre] } - fun obtenerObjetosAleatoriosTienda(cantidad: Int): List<ObjetoConsumible> { - val consumibles = objetos.values.filterIsInstance<ObjetoConsumible>() - return List(cantidad) { consumibles.random() } + fun obtenerObjetosAleatoriosTienda(cantidad: Int): ArrayList<String> { + val consumibles = objetos.values.filter { it is ObjetoConsumible || it is ObjetoUtilidad } + return ArrayList<String>().apply { + repeat(cantidad) { + add((consumibles.random()).nombre) + } + } + } + + fun obtenerObjetosAleatoriosArmeria(cantidad: Int): ArrayList<String> { + val equipables = objetos.values.filterIsInstance<ObjetoEquipable>() + return ArrayList<String>().apply { + repeat(cantidad) { + println((equipables.random()).nombre) + add((equipables.random()).nombre) + } + } + } + + fun convertirNombresAObjetos(nombres: List<String>): List<Objeto?> { + return nombres.map { nombre -> + obtenerObjetoPorNombre(nombre) + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable/asi_candado_tienda.png b/app/src/main/res/drawable/asi_candado_tienda.png new file mode 100644 index 0000000000000000000000000000000000000000..54e9192f897fe5e2285dba96950d0a9b878cca18 Binary files /dev/null and b/app/src/main/res/drawable/asi_candado_tienda.png differ diff --git a/app/src/main/res/drawable/background_armeria.png b/app/src/main/res/drawable/background_armeria.png new file mode 100644 index 0000000000000000000000000000000000000000..4742c125c2252bf979fd1fb13af2ed148ef7bbe3 Binary files /dev/null and b/app/src/main/res/drawable/background_armeria.png differ diff --git a/app/src/main/res/drawable/texto_armeria.png b/app/src/main/res/drawable/texto_armeria.png new file mode 100644 index 0000000000000000000000000000000000000000..7f63df090651d2832043125b5694aa2be6297442 Binary files /dev/null and b/app/src/main/res/drawable/texto_armeria.png differ diff --git a/app/src/main/res/drawable/texto_herreria.png b/app/src/main/res/drawable/texto_herreria.png deleted file mode 100644 index 804b3676088f2e03da96abb6991b7d5b4ce7bdca..0000000000000000000000000000000000000000 Binary files a/app/src/main/res/drawable/texto_herreria.png and /dev/null differ diff --git a/app/src/main/res/layout/activity_armeria.xml b/app/src/main/res/layout/activity_armeria.xml new file mode 100644 index 0000000000000000000000000000000000000000..d83f1fccffe7afd90f58d4c034fa9585a8d8e370 --- /dev/null +++ b/app/src/main/res/layout/activity_armeria.xml @@ -0,0 +1,497 @@ +<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="@color/pintiaBackground" + tools:context=".exploradoresDePintia.ExploradoresDePintia" + tools:ignore="HardcodedText, UseCompoundDrawables"> + + <ImageView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:contentDescription="Taberna" + android:src="@drawable/background_armeria" + android:scaleType="centerCrop" /> + + <ImageView + android:id="@+id/tituloJuego" + android:layout_width="wrap_content" + android:layout_height="120dp" + android:layout_centerHorizontal="true" + android:contentDescription="Titulo del minijuego" + android:src="@drawable/texto_armeria" + android:textColor="#401201" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <LinearLayout + android:id="@+id/layoutMonedas" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="5dp" + android:background="@drawable/style_texto_border" + android:gravity="center" + android:layout_marginBottom="8dp" + app:layout_constraintTop_toBottomOf="@id/tituloJuego" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> + + <TextView + android:id="@+id/textoMonedas" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="100" + android:textColor="#401201" + android:textSize="20sp" /> + + <ImageView + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginStart="4dp" + android:contentDescription="Icono de moneda" + android:src="@drawable/logo_pintia" + android:scaleType="centerCrop" /> + </LinearLayout> + + <GridLayout + android:id="@+id/inventarioGrid" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="20dp" + android:layout_marginStart="5dp" + android:layout_marginEnd="5dp" + android:background="@drawable/style_texto_border" + android:columnCount="2" + android:padding="12dp" + android:rowCount="3" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/layoutMonedas"> + + <LinearLayout + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal"> + + <androidx.cardview.widget.CardView + android:layout_width="100dp" + android:layout_height="100dp" + android:elevation="0dp" + app:cardCornerRadius="10dp" + android:layout_marginEnd="15dp" + android:layout_marginStart="15dp" + android:layout_marginTop="15dp" + android:layout_marginBottom="5dp" + android:backgroundTint="#F2CDA0"> + + <ImageView + android:id="@+id/slot01" + android:layout_width="100dp" + android:layout_height="100dp" + android:contentDescription="Imagen que sobresale de Slot 1" + android:scaleType="centerCrop" + android:src="@drawable/asi_exploradores_jabonera" /> + + </androidx.cardview.widget.CardView> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:orientation="horizontal" + android:gravity="center" + android:layout_marginBottom="8dp"> + + <TextView + android:id="@+id/precio01" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="100" + android:textColor="#401201" + android:textSize="20sp" /> + + <ImageView + android:id="@+id/moneda01" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginStart="4dp" + android:contentDescription="Icono de moneda" + android:src="@drawable/logo_pintia" + android:scaleType="centerCrop" /> + </LinearLayout> + + </LinearLayout> + + <LinearLayout + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal"> + + <androidx.cardview.widget.CardView + android:layout_width="100dp" + android:layout_height="100dp" + android:elevation="0dp" + app:cardCornerRadius="10dp" + android:layout_marginEnd="15dp" + android:layout_marginStart="15dp" + android:layout_marginTop="15dp" + android:layout_marginBottom="5dp" + android:backgroundTint="#F2CDA0"> + + + <ImageView + android:id="@+id/slot02" + android:layout_width="100dp" + android:layout_height="100dp" + android:contentDescription="Imagen que sobresale de Slot 1" + android:scaleType="centerCrop" + android:src="@drawable/asi_exploradores_jabonera" /> + + </androidx.cardview.widget.CardView> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:orientation="horizontal" + android:gravity="center" + android:layout_marginBottom="8dp"> + + <TextView + android:id="@+id/precio02" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="100" + android:textColor="#401201" + android:textSize="20sp" /> + + <ImageView + android:id="@+id/moneda02" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginStart="4dp" + android:contentDescription="Icono de moneda" + android:src="@drawable/logo_pintia" + android:scaleType="centerCrop" /> + </LinearLayout> + + + </LinearLayout> + + + <LinearLayout + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal"> + + <androidx.cardview.widget.CardView + android:layout_width="100dp" + android:layout_height="100dp" + android:elevation="0dp" + app:cardCornerRadius="10dp" + android:layout_marginEnd="15dp" + android:layout_marginStart="15dp" + android:layout_marginTop="15dp" + android:layout_marginBottom="5dp" + android:backgroundTint="#F2CDA0"> + + + <ImageView + android:id="@+id/slot03" + android:layout_width="100dp" + android:layout_height="100dp" + android:contentDescription="Imagen que sobresale de Slot 1" + android:scaleType="centerCrop" + android:src="@drawable/asi_exploradores_jabonera" /> + + </androidx.cardview.widget.CardView> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:orientation="horizontal" + android:gravity="center" + android:layout_marginBottom="8dp"> + + <TextView + android:id="@+id/precio03" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="100" + android:textColor="#401201" + android:textSize="20sp" /> + + <ImageView + android:id="@+id/moneda03" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginStart="4dp" + android:contentDescription="Icono de moneda" + android:src="@drawable/logo_pintia" + android:scaleType="centerCrop" /> + </LinearLayout> + + </LinearLayout> + + <LinearLayout + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal"> + + <androidx.cardview.widget.CardView + android:layout_width="100dp" + android:layout_height="100dp" + android:elevation="0dp" + app:cardCornerRadius="10dp" + android:layout_marginEnd="15dp" + android:layout_marginStart="15dp" + android:layout_marginTop="15dp" + android:layout_marginBottom="5dp" + android:backgroundTint="#F2CDA0"> + + + <ImageView + android:id="@+id/slot04" + android:layout_width="100dp" + android:layout_height="100dp" + android:contentDescription="Imagen que sobresale de Slot 1" + android:scaleType="centerCrop" + android:src="@drawable/asi_exploradores_jabonera" /> + + </androidx.cardview.widget.CardView> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:orientation="horizontal" + android:gravity="center" + android:layout_marginBottom="8dp"> + + <TextView + android:id="@+id/precio04" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="100" + android:textColor="#401201" + android:textSize="20sp" /> + + <ImageView + android:id="@+id/moneda04" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginStart="4dp" + android:contentDescription="Icono de moneda" + android:src="@drawable/logo_pintia" + android:scaleType="centerCrop" /> + </LinearLayout> + + </LinearLayout> + + <LinearLayout + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal"> + + <androidx.cardview.widget.CardView + android:layout_width="100dp" + android:layout_height="100dp" + android:elevation="0dp" + app:cardCornerRadius="10dp" + android:layout_marginEnd="15dp" + android:layout_marginStart="15dp" + android:layout_marginTop="15dp" + android:layout_marginBottom="5dp" + android:backgroundTint="#F2CDA0"> + + + <ImageView + android:id="@+id/slot05" + android:layout_width="100dp" + android:layout_height="100dp" + android:contentDescription="Imagen que sobresale de Slot 1" + android:scaleType="centerCrop" + android:src="@drawable/asi_exploradores_jabonera" /> + + </androidx.cardview.widget.CardView> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:orientation="horizontal" + android:gravity="center" + android:layout_marginBottom="8dp"> + + <TextView + android:id="@+id/precio05" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="100" + android:textColor="#401201" + android:textSize="20sp" /> + + <ImageView + android:id="@+id/moneda05" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginStart="4dp" + android:contentDescription="Icono de moneda" + android:src="@drawable/logo_pintia" + android:scaleType="centerCrop" /> + </LinearLayout> + + </LinearLayout> + + + <LinearLayout + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_horizontal"> + + <androidx.cardview.widget.CardView + android:layout_width="100dp" + android:layout_height="100dp" + android:elevation="0dp" + app:cardCornerRadius="10dp" + android:layout_marginEnd="15dp" + android:layout_marginStart="15dp" + android:layout_marginTop="15dp" + android:layout_marginBottom="5dp" + android:backgroundTint="#F2CDA0"> + + <ImageView + android:id="@+id/slot06" + android:layout_width="100dp" + android:layout_height="100dp" + android:contentDescription="Imagen que sobresale de Slot 1" + android:scaleType="centerCrop" + android:src="@drawable/asi_exploradores_jabonera" /> + + </androidx.cardview.widget.CardView> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal|bottom" + android:orientation="horizontal" + android:gravity="center" + android:layout_marginBottom="8dp"> + + <TextView + android:id="@+id/precio06" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="100" + android:textColor="#401201" + android:textSize="20sp" /> + + <ImageView + android:id="@+id/moneda06" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginStart="4dp" + android:contentDescription="Icono de moneda" + android:src="@drawable/logo_pintia" + android:scaleType="centerCrop" /> + </LinearLayout> + + </LinearLayout> + + </GridLayout> + + <TextView + android:id="@+id/textoInformacion" + android:layout_width="300dp" + android:layout_height="wrap_content" + android:text="Aquà aparecera la información relevante de las compras" + android:textSize="15sp" + android:fontFamily="@font/pixeled" + android:padding="6sp" + android:textColor="#401201" + android:background="@drawable/style_texto_border" + android:layout_marginTop="10dp" + app:layout_constraintTop_toBottomOf="@id/inventarioGrid" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:gravity="center"/> + + + <Button + android:id="@+id/botonRefrescar" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="20dp" + android:backgroundTint="@color/pintiaButton" + android:fontFamily="@font/pixeled" + android:text="Refrescar tienda por 5 monedas" + android:textColor="@color/pintiaButtonText" + android:textStyle="bold" + app:layout_constraintTop_toBottomOf="@id/textoInformacion" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + + <LinearLayout + android:id="@+id/bottom_navigation" + style="?android:attr/buttonBarStyle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/style_background_gradiente" + android:orientation="horizontal" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent"> + + <ImageButton + android:id="@+id/leaderboardButton" + android:layout_width="0dp" + android:layout_height="60dp" + android:layout_weight="1" + android:background="?attr/selectableItemBackground" + android:src="@drawable/icon_leaderboard" + android:contentDescription="Abre el mapa" + android:padding="5dp" + android:scaleType="fitCenter" /> + + <ImageButton + android:id="@+id/mapButton" + android:layout_width="0dp" + android:layout_height="60dp" + android:layout_weight="1" + android:background="?attr/selectableItemBackground" + android:src="@drawable/icon_map" + android:contentDescription="Abre el ranking" + android:layout_marginEnd="40dp" + android:layout_marginStart="40dp" + android:scaleType="fitCenter" /> + + <ImageButton + android:id="@+id/shopButton" + android:layout_width="0dp" + android:layout_height="60dp" + android:layout_weight="1" + android:background="?attr/selectableItemBackground" + android:src="@drawable/icon_shop" + android:contentDescription="Abre la tienda" + android:padding="5dp" + android:scaleType="fitCenter" /> + </LinearLayout> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index 716825ec26f3c274389084a76e426faa885c94f8..a734b0912e2f23469fcf36140c62fca2aa1cda60 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -74,7 +74,7 @@ android:textColor="@color/pintiaTitleText" /> <ImageButton - android:id="@+id/botonHerreria" + android:id="@+id/botonArmeria" style="?android:attr/buttonBarButtonStyle" android:layout_width="192dp" android:layout_height="145dp" @@ -86,7 +86,7 @@ android:elevation="100dp" android:fontFamily="@font/pixeled" android:scaleType="fitCenter" - android:src="@drawable/texto_herreria" + android:src="@drawable/texto_armeria" android:textColor="@color/pintiaTitleText" /> <ImageButton diff --git a/app/src/main/res/layout/activity_tienda.xml b/app/src/main/res/layout/activity_tienda.xml index 72bf1c15f040f8dc3321a42ff214aa6fe2563ef4..3d00ebadc41e064a2cf90b2d739e374ecc12f025 100644 --- a/app/src/main/res/layout/activity_tienda.xml +++ b/app/src/main/res/layout/activity_tienda.xml @@ -26,6 +26,37 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + <LinearLayout + android:id="@+id/layoutMonedas" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="5dp" + android:background="@drawable/style_texto_border" + android:gravity="center" + android:layout_marginBottom="8dp" + app:layout_constraintTop_toBottomOf="@id/tituloJuego" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> + + <TextView + android:id="@+id/textoMonedas" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="@font/pixeled" + android:text="100" + android:textColor="#401201" + android:textSize="20sp" /> + + <ImageView + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginStart="4dp" + android:contentDescription="Icono de moneda" + android:src="@drawable/logo_pintia" + android:scaleType="centerCrop" /> + </LinearLayout> + <GridLayout android:id="@+id/inventarioGrid" android:layout_width="wrap_content" @@ -39,7 +70,7 @@ android:rowCount="3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tituloJuego"> + app:layout_constraintTop_toBottomOf="@id/layoutMonedas"> <LinearLayout android:orientation="vertical" @@ -86,6 +117,7 @@ android:textSize="20sp" /> <ImageView + android:id="@+id/moneda01" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginStart="4dp" @@ -142,6 +174,7 @@ android:textSize="20sp" /> <ImageView + android:id="@+id/moneda02" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginStart="4dp" @@ -200,6 +233,7 @@ android:textSize="20sp" /> <ImageView + android:id="@+id/moneda03" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginStart="4dp" @@ -256,6 +290,7 @@ android:textSize="20sp" /> <ImageView + android:id="@+id/moneda04" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginStart="4dp" @@ -312,6 +347,7 @@ android:textSize="20sp" /> <ImageView + android:id="@+id/moneda05" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginStart="4dp" @@ -368,6 +404,7 @@ android:textSize="20sp" /> <ImageView + android:id="@+id/moneda06" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginStart="4dp" @@ -380,6 +417,37 @@ </GridLayout> + <TextView + android:id="@+id/textoInformacion" + android:layout_width="300dp" + android:layout_height="wrap_content" + android:text="Aquà aparecera la información relevante de las compras" + android:textSize="15sp" + android:fontFamily="@font/pixeled" + android:padding="6sp" + android:textColor="#401201" + android:background="@drawable/style_texto_border" + android:layout_marginTop="10dp" + app:layout_constraintTop_toBottomOf="@id/inventarioGrid" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:gravity="center"/> + + + <Button + android:id="@+id/botonRefrescar" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="20dp" + android:backgroundTint="@color/pintiaButton" + android:fontFamily="@font/pixeled" + android:text="Refrescar tienda por 5 monedas" + android:textColor="@color/pintiaButtonText" + android:textStyle="bold" + app:layout_constraintTop_toBottomOf="@id/textoInformacion" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + <LinearLayout android:id="@+id/bottom_navigation" style="?android:attr/buttonBarStyle"