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 0fcf8f43e50e546f3c64a87888b3d0ad6896f0e3..a2db6ac1566fc7b9c7454d08dcf29d0a8beff288 100644 --- a/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt +++ b/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt @@ -29,6 +29,7 @@ class MinijuegoReparacion : AppCompatActivity() { var stop = false val handler = Handler() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) soundManager = SoundManager(this) @@ -77,15 +78,15 @@ class MinijuegoReparacion : AppCompatActivity() { } private fun agregarFragmentosAlRelativeLayout(relativeLayout: RelativeLayout) { - val mesaHeightMin = 1700 - val mesaHeightMax = 1900 + val mesaHeightMin = relativeToHeight(1700) + val mesaHeightMax = relativeToHeight(1900) for (fragmento in fragmentos) { val imageView = ImageView(this) imageView.setImageBitmap(fragmento.bitmap) - val params = RelativeLayout.LayoutParams(120, 120) + val params = RelativeLayout.LayoutParams(relativeToWidth(120), relativeToHeight(120)) - params.leftMargin = Random.nextInt(250, 750) + params.leftMargin = Random.nextInt(relativeToWidth(250), relativeToWidth(750)) params.topMargin = Random.nextInt(mesaHeightMin, mesaHeightMax) imageView.layoutParams = params @@ -104,8 +105,8 @@ class MinijuegoReparacion : AppCompatActivity() { mostrarMartilloGolpe(relativeLayout) for ((index, fragmento) in fragmentos.withIndex()) { val imageView = relativeLayout.getChildAt(index) as? ImageView ?: continue - val margenIzquierdaFinal = fragmento.columna * 120 + 250 - val margenArribaFinal = fragmento.fila * 120 + 1300 + val margenIzquierdaFinal = fragmento.columna * relativeToWidth(120) + relativeToWidth(250) + val margenArribaFinal = fragmento.fila * relativeToHeight(120) + relativeToHeight(1300) val precisionRandom = Random.nextFloat() * 0.4f + 0.6f val precision = 1f - (clics * 0.20f) * precisionRandom @@ -113,7 +114,7 @@ class MinijuegoReparacion : AppCompatActivity() { val margenArriba = fragmento.yPos + (margenArribaFinal - fragmento.yPos) * precision val rotacion = fragmento.rotation * (1 - precision) - val params = RelativeLayout.LayoutParams(120, 120) + val params = RelativeLayout.LayoutParams(relativeToWidth(120), relativeToHeight(120)) params.leftMargin = margenIzquierda.toInt() params.topMargin = margenArriba.toInt() imageView.layoutParams = params @@ -135,8 +136,8 @@ class MinijuegoReparacion : AppCompatActivity() { var para = false val initialX = ruleImageView.x val initialY = ruleImageView.y - val randomX = Random.nextFloat() * (1050 - 350) - val randomY = Random.nextFloat() * (1400 - 250) + val randomX = Random.nextFloat() * (relativeToWidth(1050) - relativeToWidth(350)) + val randomY = Random.nextFloat() * (relativeToHeight(1400) - relativeToHeight(250)) ruleImageView.x = randomX ruleImageView.y = randomY val deltaX = ruleImageView.x - initialX @@ -237,8 +238,8 @@ class MinijuegoReparacion : AppCompatActivity() { nubeView.setBackgroundResource(R.drawable.effect_reparar_animation) val tam = Random.nextInt(150, 250) val params = RelativeLayout.LayoutParams(tam, tam) - params.leftMargin = Random.nextInt(100, 800) - params.topMargin = Random.nextInt(1300, 1900) + params.leftMargin = Random.nextInt(relativeToWidth(100), relativeToWidth(700)) + params.topMargin = Random.nextInt(relativeToHeight(1300), relativeToHeight(1900)) nubeView.layoutParams = params nubeView.rotation = Random.nextFloat()* 360 relativeLayout.addView(nubeView) @@ -261,8 +262,8 @@ class MinijuegoReparacion : AppCompatActivity() { martilloView.setImageResource(R.drawable.asi_reparar_martillo) val tamMartillo = Random.nextInt(300, 500) val params = RelativeLayout.LayoutParams(tamMartillo, tamMartillo) - params.leftMargin = Random.nextInt(100, 700) - params.topMargin = Random.nextInt(1300, 1900) + params.leftMargin = Random.nextInt(relativeToWidth(100), relativeToWidth(700)) + params.topMargin = Random.nextInt(relativeToHeight(1300), relativeToHeight(1900)) martilloView.rotation = 50f martilloView.layoutParams = params relativeLayout.addView(martilloView) @@ -283,6 +284,16 @@ class MinijuegoReparacion : AppCompatActivity() { soundManager.stopSound() stop = true } + // Funciones auxiliares para convertir a proporciones relativas + private fun relativeToWidth(value: Int): Int { + val metrics = resources.displayMetrics + var screenWidth = metrics.widthPixels + return (value * screenWidth) / 1080 + } - + private fun relativeToHeight(value: Int): Int { + val metrics = resources.displayMetrics + var screenHeight = metrics.heightPixels + return (value * screenHeight) / 2285 + } }