mirror of
https://github.com/cmclark00/mintris.git
synced 2025-05-18 10:25:19 +01:00
Add hollow border to selected menu items and fix scroll view in landscape mode
This commit is contained in:
parent
c4f103ae1e
commit
7e4423efce
3 changed files with 94 additions and 44 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue