diff --git a/app/src/main/java/com/mintris/MainActivity.kt b/app/src/main/java/com/mintris/MainActivity.kt
index c535adf..9ec72af 100644
--- a/app/src/main/java/com/mintris/MainActivity.kt
+++ b/app/src/main/java/com/mintris/MainActivity.kt
@@ -38,6 +38,11 @@ import android.widget.Toast
import android.content.BroadcastReceiver
import android.content.IntentFilter
import android.app.AlertDialog
+import android.graphics.drawable.ColorDrawable
+import androidx.core.content.ContextCompat
+import android.widget.Button
+import android.widget.ScrollView
+import android.widget.ImageButton
class MainActivity : AppCompatActivity(),
GamepadController.GamepadConnectionListener,
@@ -61,6 +66,7 @@ class MainActivity : AppCompatActivity(),
private lateinit var progressionScreen: ProgressionScreen
private lateinit var themeSelector: ThemeSelector
private lateinit var blockSkinSelector: BlockSkinSelector
+ private var pauseMenuScrollView: ScrollView? = null
// Game state
private var isSoundEnabled = true
@@ -124,6 +130,7 @@ class MainActivity : AppCompatActivity(),
progressionManager = PlayerProgressionManager(this)
themeSelector = binding.themeSelector
blockSkinSelector = binding.blockSkinSelector
+ pauseMenuScrollView = binding.pauseMenuScrollView
// Initialize gamepad controller
gamepadController = GamepadController(gameView)
@@ -1227,6 +1234,14 @@ class MainActivity : AppCompatActivity(),
item.alpha = if (i == index) 1.0f else 0.7f
item.scaleX = if (i == index) 1.2f else 1.0f
item.scaleY = if (i == index) 1.2f else 1.0f
+ // Add or remove border based on selection
+ if (item is Button) {
+ item.background = if (i == index) {
+ ContextCompat.getDrawable(this, R.drawable.menu_item_selected)
+ } else {
+ ColorDrawable(Color.TRANSPARENT)
+ }
+ }
}
}
@@ -1237,6 +1252,7 @@ class MainActivity : AppCompatActivity(),
if (pauseMenuItems.isEmpty()) return
currentMenuSelection = (currentMenuSelection - 1 + pauseMenuItems.size) % pauseMenuItems.size
highlightMenuItem(currentMenuSelection)
+ scrollToSelectedItem()
gameHaptics.vibrateForPieceMove()
}
@@ -1247,8 +1263,30 @@ class MainActivity : AppCompatActivity(),
if (pauseMenuItems.isEmpty()) return
currentMenuSelection = (currentMenuSelection + 1) % pauseMenuItems.size
highlightMenuItem(currentMenuSelection)
+ scrollToSelectedItem()
gameHaptics.vibrateForPieceMove()
}
+
+ private fun scrollToSelectedItem() {
+ if (pauseMenuItems.isEmpty()) return
+
+ val selectedItem = pauseMenuItems[currentMenuSelection]
+ val scrollView = pauseMenuScrollView ?: return
+
+ // Calculate the item's position relative to the scroll view
+ val itemTop = selectedItem.top
+ val itemBottom = selectedItem.bottom
+ val scrollViewHeight = scrollView.height
+
+ // If the item is partially or fully below the visible area, scroll down
+ if (itemBottom > scrollViewHeight) {
+ scrollView.smoothScrollTo(0, itemBottom - scrollViewHeight)
+ }
+ // If the item is partially or fully above the visible area, scroll up
+ else if (itemTop < 0) {
+ scrollView.smoothScrollTo(0, itemTop)
+ }
+ }
/**
* Activate the currently selected menu item
diff --git a/app/src/main/res/drawable/menu_item_selected.xml b/app/src/main/res/drawable/menu_item_selected.xml
new file mode 100644
index 0000000..3beb40d
--- /dev/null
+++ b/app/src/main/res/drawable/menu_item_selected.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml
index 0e03b36..7630ab8 100644
--- a/app/src/main/res/layout-land/activity_main.xml
+++ b/app/src/main/res/layout-land/activity_main.xml
@@ -242,8 +242,12 @@
+ android:layout_height="match_parent"
+ android:scrollbars="none"
+ android:overScrollMode="never"
+ android:fillViewport="true">
+
+ android:gravity="center"
+ android:layout_marginTop="16dp">
+ android:fontFamily="sans-serif" />
+ android:fontFamily="sans-serif"
+ android:layout_marginHorizontal="16dp" />
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-