From 317f906c65aa7aaee298871d45cf3c830f3b3b2a Mon Sep 17 00:00:00 2001
From: victor <victor.calleja.garcia@estudiantes.uva.es>
Date: Mon, 25 Nov 2024 13:24:09 +0100
Subject: [PATCH] =?UTF-8?q?Feature:=20bloking=20y=20apa=C3=B1oi=20nferface?=
 =?UTF-8?q?s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/src/main/AndroidManifest.xml              |  3 +-
 .../ellegadodepintia/ListaMinijuegos.kt       |  2 +
 .../example/ellegadodepintia/MapActivity.kt   | 67 ++++++++++++++++++-
 .../ExploradoresDePintia.kt                   |  6 ++
 .../minijuego1/InicioMinijuego1.kt            |  7 ++
 .../ellegadodepintia/minijuego1/Minijuego1.kt |  6 ++
 .../ellegadodepintia/minijuego2/Minijuego2.kt | 18 +++--
 .../ellegadodepintia/minijuego3/Minijuego3.kt | 20 ++++--
 .../MinijuegoInvestigar.kt                    |  6 ++
 .../MinijuegoReparacion.kt                    |  6 ++
 app/src/main/res/layout/activity_armeria.xml  | 16 +++++
 app/src/main/res/layout/activity_taberna.xml  | 17 ++++-
 app/src/main/res/layout/activity_tienda.xml   | 17 ++++-
 13 files changed, 173 insertions(+), 18 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2977a79..6f2b238 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,7 +14,8 @@
         tools:targetApi="31" >
         <activity
             android:name=".MainActivity"
-            android:exported="true" >
+            android:exported="true"
+            android:screenOrientation="portrait">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
diff --git a/app/src/main/java/com/example/ellegadodepintia/ListaMinijuegos.kt b/app/src/main/java/com/example/ellegadodepintia/ListaMinijuegos.kt
index 2f17a0b..6749bd4 100644
--- a/app/src/main/java/com/example/ellegadodepintia/ListaMinijuegos.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/ListaMinijuegos.kt
@@ -21,6 +21,8 @@ class ListaMinijuegos : AppCompatActivity(){
         val minijuego1Layout = findViewById<FrameLayout>(R.id.minijuego1)
         minijuego1Layout.setOnClickListener {
             val intent = Intent(this, InicioMinijuego1::class.java)
+            val flag = true
+            intent.putExtra("FLAG_KEY", flag)
             startActivity(intent)
         }
 
diff --git a/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt b/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt
index 97158bf..15a5cad 100644
--- a/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/MapActivity.kt
@@ -3,7 +3,10 @@ package com.example.ellegadodepintia
 import android.content.Intent
 import android.graphics.Color
 import android.os.Bundle
+import android.util.DisplayMetrics
+import android.view.View
 import android.widget.ImageButton
+import android.widget.RelativeLayout
 import android.widget.TextView
 import androidx.appcompat.app.AppCompatActivity
 import com.example.ellegadodepintia.exploradoresDePintia.ExploradoresDePintia
@@ -14,9 +17,8 @@ class MapActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_map)
-
         GameState.jugador.addObserver { actualizarMonedas() }
-
+        ajustarPosiciones()
         val mapButton: ImageButton= findViewById(R.id.mapButton)
         val leaderboardButton: ImageButton = findViewById(R.id.leaderboardButton)
         val shopButton: ImageButton = findViewById(R.id.shopButton)
@@ -60,4 +62,65 @@ class MapActivity : AppCompatActivity() {
     private fun actualizarMonedas(){
         GameState.jugador.monedas.toString().also { findViewById<TextView>(R.id.moneyText).text = it }
     }
+
+    private fun ajustarPosiciones() {
+        // Dimensiones de la pantalla original
+        val originalWidth = 1080f
+        val originalHeight = 2285f
+
+        // Obtener las dimensiones actuales de la pantalla
+        val displayMetrics = DisplayMetrics()
+        windowManager.defaultDisplay.getMetrics(displayMetrics)
+        val currentWidth = displayMetrics.widthPixels.toFloat()
+        val currentHeight = displayMetrics.heightPixels.toFloat()
+        val density = displayMetrics.density // Densidad de la pantalla actual
+
+        // Calcular la proporción de la pantalla actual respecto a la original
+        val widthRatio = currentWidth / originalWidth
+        val heightRatio = currentHeight / originalHeight
+
+        // Ajustar los botones con el ratio de proporción
+        ajustarBoton(findViewById(R.id.botonAventura), 55f, 65f, 199f, 140f, widthRatio, heightRatio, density)
+        ajustarBoton(findViewById(R.id.botonTaberna), 169f, 380f, 168f, 127f, widthRatio, heightRatio, density)
+        ajustarBoton(findViewById(R.id.botonTienda), -1f, 422f, 148f, 127f, widthRatio, heightRatio, density)
+        ajustarBoton(findViewById(R.id.botonArmeria), 199f, 540f, 192f, 145f, widthRatio, heightRatio, density)
+        ajustarBoton(findViewById(R.id.botonEntrenar), 241f, 226f, 170f, 125f, widthRatio, heightRatio, density)
+    }
+
+    private fun ajustarBoton(
+        button: View,
+        originalX: Float,  // Margen Start original en dp
+        originalY: Float,  // Margen Bottom original en dp
+        originalWidth: Float,  // Ancho original en dp
+        originalHeight: Float, // Alto original en dp
+        widthRatio: Float,
+        heightRatio: Float,
+        density: Float
+    ) {
+        val params = button.layoutParams as RelativeLayout.LayoutParams
+
+        // Ajustar las posiciones según el ratio de la pantalla
+        val newMarginStart = (originalX * widthRatio * density).toInt() // Ajustamos la posición X
+        val newBottomMargin = (originalY * heightRatio * density).toInt() // Ajustamos la posición Y (Bottom)
+
+        // Ajustar el tamaño según el ratio de la pantalla
+        val newWidth = (originalWidth * widthRatio * density).toInt()
+        val newHeight = (originalHeight * heightRatio * density).toInt()
+
+        // Establecer tamaños mínimos y máximos
+        val minSizePx = (48 * density).toInt() // Tamaño mínimo de 48dp en píxeles
+        val maxSizePx = (300 * density).toInt() // Tamaño máximo de 300dp en píxeles
+
+        // Aplicar los nuevos márgenes y tamaños
+        params.marginStart = newMarginStart
+        params.bottomMargin = newBottomMargin
+        params.width = newWidth.coerceIn(minSizePx, maxSizePx) // Tamaño mínimo y máximo
+        params.height = newHeight.coerceIn(minSizePx, maxSizePx) // Tamaño mínimo y máximo
+
+        // Aplicar los parámetros ajustados al botón
+        button.layoutParams = params
+    }
+
+
+
 }
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt
index 672d853..0820566 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt
@@ -148,4 +148,10 @@ class ExploradoresDePintia : AppCompatActivity() {
             true
         }
     }
+    override fun onBackPressed() {
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
+        if (flag){
+            super.onBackPressed()
+        }
+    }
 }
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt
index 4818bfd..5b12fc6 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt
@@ -43,7 +43,14 @@ class InicioMinijuego1 : AppCompatActivity() {
             modal.show(supportFragmentManager, "ModalFragment")
         }
     }
+    override fun onBackPressed() {
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
+        if (flag){
+            super.onBackPressed()
+        }
+    }
 }
+
 class ModalFragment : DialogFragment() {
 
     override fun onCreateView(
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt
index 020b372..ef0da19 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt
@@ -157,6 +157,12 @@ class Minijuego1 : AppCompatActivity() {
         handler.removeCallbacksAndMessages(null)
         soundManager.stopSound()
     }
+    override fun onBackPressed() {
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
+        if (flag){
+            super.onBackPressed()
+        }
+    }
 
     // Mostrar partículas o animación en la posición del botón tocado
     private fun mostrarParticulas(x: Float, y: Float, esHueso: Boolean) {
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt
index 47bab3d..fedfcc2 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt
@@ -1,24 +1,24 @@
 package com.example.ellegadodepintia.minijuego2
 
 import android.content.Intent
+import android.graphics.drawable.AnimationDrawable
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
+import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
+import android.view.ViewGroup
+import android.view.animation.AnimationUtils
+import android.widget.Button
 import android.widget.ImageView
 import android.widget.RelativeLayout
 import android.widget.TextView
 import androidx.appcompat.app.AppCompatActivity
-import kotlin.random.Random
-import android.graphics.drawable.AnimationDrawable
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import android.view.animation.AnimationUtils
-import android.widget.Button
 import androidx.fragment.app.DialogFragment
 import com.example.ellegadodepintia.R
 import com.example.ellegadodepintia.soundManager.SoundManager
+import kotlin.random.Random
 
 class Minijuego2 : AppCompatActivity() {
 
@@ -317,6 +317,12 @@ class Minijuego2 : AppCompatActivity() {
         super.onPause()
         soundManager.stopSound()
     }
+    override fun onBackPressed() {
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
+        if (flag){
+            super.onBackPressed()
+        }
+    }
 
 }
 class ModalFragment : DialogFragment() {
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego3/Minijuego3.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego3/Minijuego3.kt
index 45e97d4..08cc887 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego3/Minijuego3.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego3/Minijuego3.kt
@@ -212,23 +212,21 @@ class Minijuego3 : AppCompatActivity() {
     }
 
     private fun mostrarGameOver(mensaje: String) {
-        Toast.makeText(this, mensaje, Toast.LENGTH_SHORT).show()
+        Toast.makeText(this, mensaje, Toast.LENGTH_SHORT) .show()
         botonVolver.visibility = ImageView.VISIBLE
-        botonVolver.setOnClickListener{
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
+        if(!flag){
             val resultadoIntent = Intent()
             resultadoIntent.putExtra("TIEMPO", tiempoRestante.toString())
             println(tiempoRestante)
             setResult(RESULT_OK, resultadoIntent)
             finish()
         }
+
         gridLayout.removeAllViews()
     }
 
-    override fun onBackPressed() {
-        cuentraAtras?.cancel()
-        tiempoCorriendo = false
-        super.onBackPressed()
-    }
+
 
     private fun girarCarta(button: Button, imageResId: Int, isReversing: Boolean = false) {
         val scale = applicationContext.resources.displayMetrics.density
@@ -285,6 +283,14 @@ class Minijuego3 : AppCompatActivity() {
         super.onPause()
         soundManager.stopSound()
     }
+    override fun onBackPressed() {
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
+        if (flag){
+            cuentraAtras?.cancel()
+            tiempoCorriendo = false
+            super.onBackPressed()
+        }
+    }
 }
 class ModalFragment : DialogFragment() {
 
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuegoInvestigacion/MinijuegoInvestigar.kt b/app/src/main/java/com/example/ellegadodepintia/minijuegoInvestigacion/MinijuegoInvestigar.kt
index ae659a5..4f2b605 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuegoInvestigacion/MinijuegoInvestigar.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuegoInvestigacion/MinijuegoInvestigar.kt
@@ -207,4 +207,10 @@ class MinijuegoInvestigar : AppCompatActivity() {
         super.onPause()
         soundManager.stopSound()
     }
+    override fun onBackPressed() {
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
+        if (flag){
+            super.onBackPressed()
+        }
+    }
 }
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt b/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
index a2db6ac..86a5440 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
@@ -296,4 +296,10 @@ class MinijuegoReparacion : AppCompatActivity() {
         var screenHeight = metrics.heightPixels
         return (value * screenHeight) / 2285
     }
+    override fun onBackPressed() {
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
+        if (flag){
+            super.onBackPressed()
+        }
+    }
 }
diff --git a/app/src/main/res/layout/activity_armeria.xml b/app/src/main/res/layout/activity_armeria.xml
index d83f1fc..7d95bdc 100644
--- a/app/src/main/res/layout/activity_armeria.xml
+++ b/app/src/main/res/layout/activity_armeria.xml
@@ -14,6 +14,20 @@
         android:src="@drawable/background_armeria"
         android:scaleType="centerCrop" />
 
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:fillViewport="true"
+        android:layout_marginBottom="60dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent">
+
+    <LinearLayout
+        android:id="@+id/mainArea"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:orientation="vertical">
     <ImageView
         android:id="@+id/tituloJuego"
         android:layout_width="wrap_content"
@@ -448,6 +462,8 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"/>
 
+    </LinearLayout>
+    </ScrollView>
     <LinearLayout
         android:id="@+id/bottom_navigation"
         style="?android:attr/buttonBarStyle"
diff --git a/app/src/main/res/layout/activity_taberna.xml b/app/src/main/res/layout/activity_taberna.xml
index 23dcc7b..1530f40 100644
--- a/app/src/main/res/layout/activity_taberna.xml
+++ b/app/src/main/res/layout/activity_taberna.xml
@@ -14,6 +14,20 @@
         android:src="@drawable/background_taberna"
         android:scaleType="centerCrop" />
 
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:fillViewport="true"
+        android:layout_marginBottom="60dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent">
+
+    <LinearLayout
+        android:id="@+id/mainArea"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:orientation="vertical">
     <ImageView
         android:id="@+id/tituloJuego"
         android:layout_width="wrap_content"
@@ -100,7 +114,8 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/textoInformacion"/>
-
+    </LinearLayout>
+    </ScrollView>
     <LinearLayout
         android:id="@+id/bottom_navigation"
         style="?android:attr/buttonBarStyle"
diff --git a/app/src/main/res/layout/activity_tienda.xml b/app/src/main/res/layout/activity_tienda.xml
index 3d00eba..97a20b6 100644
--- a/app/src/main/res/layout/activity_tienda.xml
+++ b/app/src/main/res/layout/activity_tienda.xml
@@ -14,6 +14,20 @@
         android:src="@drawable/background_tienda"
         android:scaleType="centerCrop" />
 
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:fillViewport="true"
+        android:layout_marginBottom="60dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent">
+
+        <LinearLayout
+            android:id="@+id/mainArea"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:orientation="vertical">
     <ImageView
         android:id="@+id/tituloJuego"
         android:layout_width="wrap_content"
@@ -447,7 +461,8 @@
         app:layout_constraintTop_toBottomOf="@id/textoInformacion"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"/>
-
+    </LinearLayout>
+    </ScrollView>
     <LinearLayout
         android:id="@+id/bottom_navigation"
         style="?android:attr/buttonBarStyle"
-- 
GitLab