diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 92ef36bae55d477e1868e24402b11d36fcf75f0c..a6e64bbb1bd96a794b6dc89cf937808671f286f6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,6 +35,7 @@ <activity android:name=".minijuegoReparacion.MinijuegoReparacion" android:exported="true"/> <activity android:name=".exploradoresDePintia.Resumen" android:exported="true"/> <activity android:name=".TabernaActivity" android:exported="true"/> + <activity android:name=".TiendaActivity" android:exported="true"/> </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt b/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt index e78b901e8890527bfcf4e095ffd8c0b1ea2ef8d1..13553b83c27286554208f21d74dc692545cddaa8 100644 --- a/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt +++ b/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt @@ -42,5 +42,11 @@ class MapActivity : AppCompatActivity() { val intent = Intent(this, TabernaActivity::class.java) startActivity(intent) } + + val tienda = findViewById<ImageButton>(R.id.botonTienda) + tienda.setOnClickListener { + val intent = Intent(this, TiendaActivity::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 new file mode 100644 index 0000000000000000000000000000000000000000..6db47be7ebcc82c8de5735fdc5dbc04d78e13b9c --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/TiendaActivity.kt @@ -0,0 +1,29 @@ +package com.example.ellegadodepintia + +import android.os.Bundle +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import com.example.ellegadodepintia.repositorios.RepositorioObjetos + +class TiendaActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_tienda) + + val objetos = RepositorioObjetos.obtenerObjetosAleatoriosTienda(6) + + //TODO hay que hacer que dependiendo del nivel de la ciudad haga más cosas + val slots = listOf( + findViewById<ImageView>(R.id.slot01), + findViewById(R.id.slot02), + findViewById(R.id.slot03), + findViewById(R.id.slot04), + findViewById(R.id.slot05), + findViewById(R.id.slot06) + ) + + slots.forEachIndexed { index, slot -> + slot.setImageResource(objetos[index].imagen) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt new file mode 100644 index 0000000000000000000000000000000000000000..59f514ec9b7bed8b6b7b859532dc452ae45b33b3 --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt @@ -0,0 +1,88 @@ +package com.example.ellegadodepintia.repositorios + +import com.example.ellegadodepintia.R +import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo +import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.* +import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoEquipableAumento +import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoObjetoCura + +object RepositorioObjetos { + private val objetos: Map<String, Objeto> by lazy { + listOf( + ObjetoDeValor( + nombre = "Vasito de barro cocido", + descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.", + coste = 20, + imagen = R.drawable.asi_exploradores_vasito + ), + ObjetoDeValor( + nombre = "Jabonera de cerámica", + descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.", + coste = 20, + imagen = R.drawable.asi_exploradores_jabonera + ), + ObjetoDeValor( + nombre = "Copa negra con inscripciones", + descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.", + coste = 20, + imagen = R.drawable.asi_minijuego_3_copa_negra_brunida + ), + ObjetoDeValor( + nombre = "Tapadera de cerámica zoomorfa", + descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.", + coste = 20, + imagen = R.drawable.asi_minijuego_3_tapadera_zoomorfo + ), + ObjetoEquipable( + nombre = "Espada de Hierro", + descripcion = "Una espada de hierro sencilla y confiable perfecta para un aventurero novato. Otorga 1 de daño extra", + efecto = EfectoEquipableAumento(1, Atributo.Ataque), + imagen = R.drawable.asi_objeto_espadadefault + ), + ObjetoConsumible( + nombre = "Elixir Menor de la Necrópolis", + descripcion = "Un frasco pequeño con un líquido granate y brillante, que destella con un resplandor profundo, capaz de restaurar 3 puntos de vida al instante.", + efecto = EfectoObjetoCura(3), + imagen = R.drawable.asi_objeto_pocima_vida_5 + ), + ObjetoConsumible( + nombre = "Elixir Mediano de la Necrópolis", + descripcion = "Un frasco robusto con un líquido amarillo brillante, que resplandece como el sol al mediodía, capaz de restaurar 5 puntos de vida al instante.", + efecto = EfectoObjetoCura(5), + imagen = R.drawable.asi_objeto_pocima_vida_10 + ), + ObjetoConsumible( + nombre = "Elixir Supremo de la Necrópolis", + descripcion = "Frasco supremo forjado con los secretos de los vacceos, restaura toda tu vitalidad al instante, ¡la poción de cura más poderosa de Pintia!", + efecto = EfectoObjetoCura(999), + imagen = R.drawable.asi_objeto_pocima_vida_all + ), + ObjetoEquipable( + nombre = "Escudo Caetrae", + descripcion = "La caetrae es un escudo redondo vacceo, forjado para la defensa en combate, que aumenta tu vida máxima en 10 puntos.", + efecto = EfectoEquipableAumento(10, Atributo.Vida), + imagen = R.drawable.asi_objeto_escudo + ), + ObjetoEquipable( + nombre = "Casco Ceremonial", + descripcion = "Casco ceremonial de oro de los vacceos decorado con intrincados patrones que simboliza el estatus social. Aumenta tu vida máxima en 8 puntos", + efecto = EfectoEquipableAumento(8, Atributo.Vida), + imagen = R.drawable.asi_objeto_casco + ), + 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 + ) + ).associateBy { it.nombre } + } + + fun obtenerObjetoPorNombre(nombre: String): Objeto? { + return objetos[nombre] + } + + fun obtenerObjetosAleatoriosTienda(cantidad: Int): List<ObjetoConsumible> { + val consumibles = objetos.values.filterIsInstance<ObjetoConsumible>() + return List(cantidad) { consumibles.random() } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/background_tienda.png b/app/src/main/res/drawable/background_tienda.png new file mode 100644 index 0000000000000000000000000000000000000000..94fc1be3349351b10df8f5518bafa66a53909417 Binary files /dev/null and b/app/src/main/res/drawable/background_tienda.png differ diff --git a/app/src/main/res/layout/activity_tienda.xml b/app/src/main/res/layout/activity_tienda.xml new file mode 100644 index 0000000000000000000000000000000000000000..72bf1c15f040f8dc3321a42ff214aa6fe2563ef4 --- /dev/null +++ b/app/src/main/res/layout/activity_tienda.xml @@ -0,0 +1,429 @@ +<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_tienda" + 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_tienda" + android:textColor="#401201" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <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/tituloJuego"> + + <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: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: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: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: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: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: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> + + <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>