mirror of
https://github.com/cmclark00/mintris.git
synced 2025-05-18 05:15:20 +01:00
Refactor: Move selectedLevel and randomModeEnabled to ViewModel
This commit is contained in:
parent
301bf1e64f
commit
2e2cd92192
2 changed files with 75 additions and 24 deletions
|
@ -86,12 +86,10 @@ class MainActivity : AppCompatActivity(),
|
|||
// Game state
|
||||
private var piecesPlaced = 0
|
||||
private var gameStartTime = 0L
|
||||
private var selectedLevel = 1
|
||||
private val maxLevel = 20
|
||||
private var lastLines = 0 // Track the previous lines count
|
||||
private var lastLinesGroup = 0 // Track which 10-line group we're in (0-9, 10-19, etc.)
|
||||
private var lastRandomLevel = 0 // Track the level at which we last did a random change
|
||||
private var isRandomModeEnabled = false
|
||||
private var currentTheme = PlayerProgressionManager.THEME_CLASSIC
|
||||
private val handler = Handler(Looper.getMainLooper())
|
||||
|
||||
|
@ -241,9 +239,11 @@ class MainActivity : AppCompatActivity(),
|
|||
gameMusic.setEnabled(enabled)
|
||||
})
|
||||
|
||||
// Load random mode setting
|
||||
isRandomModeEnabled = getSharedPreferences("com.com.pixelmintgames.pixelmintdrop.preferences", Context.MODE_PRIVATE)
|
||||
.getBoolean("random_mode_enabled", false)
|
||||
// Observe Random Mode state
|
||||
viewModel.isRandomModeEnabled.observe(this, Observer { enabled ->
|
||||
// Update the switch UI
|
||||
binding.randomModeSwitch?.isChecked = enabled
|
||||
})
|
||||
|
||||
// Initialize gamepad controller
|
||||
gamepadController = GamepadController(gameView)
|
||||
|
@ -397,7 +397,7 @@ class MainActivity : AppCompatActivity(),
|
|||
val newHighScore = highScoreManager.isHighScore(finalScore)
|
||||
statsManager.endSession() // End session after calculations
|
||||
|
||||
Log.d(TAG, "Game Over. Score: $finalScore, Level: ${viewModel.currentLevel.value}, Lines: ${gameBoard.lines}, Start Level: $selectedLevel, New High Score: $newHighScore, XP Gained: $xpGained")
|
||||
Log.d(TAG, "Game Over. Score: $finalScore, Level: ${viewModel.currentLevel.value}, Lines: ${gameBoard.lines}, Start Level: ${viewModel.selectedLevel.value}, New High Score: $newHighScore, XP Gained: $xpGained")
|
||||
|
||||
// Show appropriate screen: Progression or Game Over directly
|
||||
if (xpGained > 0 || newHighScore) {
|
||||
|
@ -480,16 +480,18 @@ class MainActivity : AppCompatActivity(),
|
|||
|
||||
binding.pauseLevelUpButton.setOnClickListener {
|
||||
gameHaptics.performHapticFeedback(it, HapticFeedbackConstants.VIRTUAL_KEY)
|
||||
if (selectedLevel < maxLevel) {
|
||||
selectedLevel++
|
||||
val currentSelected = viewModel.selectedLevel.value ?: 1
|
||||
if (currentSelected < maxLevel) {
|
||||
viewModel.setSelectedLevel(currentSelected + 1)
|
||||
updateLevelSelector()
|
||||
}
|
||||
}
|
||||
|
||||
binding.pauseLevelDownButton.setOnClickListener {
|
||||
gameHaptics.performHapticFeedback(it, HapticFeedbackConstants.VIRTUAL_KEY)
|
||||
if (selectedLevel > 1) {
|
||||
selectedLevel--
|
||||
val currentSelected = viewModel.selectedLevel.value ?: 1
|
||||
if (currentSelected > 1) {
|
||||
viewModel.setSelectedLevel(currentSelected - 1)
|
||||
updateLevelSelector()
|
||||
}
|
||||
}
|
||||
|
@ -531,6 +533,16 @@ class MainActivity : AppCompatActivity(),
|
|||
|
||||
// Initialize pause menu items for gamepad navigation
|
||||
initPauseMenuNavigation()
|
||||
|
||||
// Set up random mode switch
|
||||
binding.randomModeSwitch?.apply {
|
||||
isChecked = viewModel.isRandomModeEnabled.value ?: false
|
||||
isEnabled = progressionManager.getPlayerLevel() >= 5
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
// Only need to call toggle, ViewModel handles saving
|
||||
viewModel.toggleRandomMode()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -653,14 +665,11 @@ class MainActivity : AppCompatActivity(),
|
|||
|
||||
// Set up random mode switch
|
||||
binding.randomModeSwitch?.apply {
|
||||
isChecked = isRandomModeEnabled
|
||||
isChecked = viewModel.isRandomModeEnabled.value ?: false
|
||||
isEnabled = progressionManager.getPlayerLevel() >= 5
|
||||
setOnCheckedChangeListener { _, isChecked ->
|
||||
isRandomModeEnabled = isChecked
|
||||
getSharedPreferences("com.com.pixelmintgames.pixelmintdrop.preferences", Context.MODE_PRIVATE)
|
||||
.edit()
|
||||
.putBoolean("random_mode_enabled", isChecked)
|
||||
.apply()
|
||||
// Only need to call toggle, ViewModel handles saving
|
||||
viewModel.toggleRandomMode()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -835,8 +844,8 @@ class MainActivity : AppCompatActivity(),
|
|||
* Update the level selector display
|
||||
*/
|
||||
private fun updateLevelSelector() {
|
||||
binding.pauseLevelText.text = selectedLevel.toString()
|
||||
gameBoard.updateLevel(selectedLevel)
|
||||
binding.pauseLevelText.text = viewModel.selectedLevel.value.toString()
|
||||
gameBoard.updateLevel(viewModel.selectedLevel.value ?: 1)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -879,10 +888,10 @@ class MainActivity : AppCompatActivity(),
|
|||
* Start a new game
|
||||
*/
|
||||
private fun startGame() {
|
||||
Log.d(TAG, "Starting game at level $selectedLevel")
|
||||
Log.d(TAG, "Starting game at level ${viewModel.selectedLevel.value}")
|
||||
// Reset game state
|
||||
viewModel.resetGame() // Resets score and level in ViewModel
|
||||
viewModel.setLevel(selectedLevel) // Set initial level from selection
|
||||
viewModel.setLevel(viewModel.selectedLevel.value ?: 1) // Set initial level from selection
|
||||
piecesPlaced = 0
|
||||
gameStartTime = System.currentTimeMillis()
|
||||
lastLines = 0
|
||||
|
@ -953,7 +962,7 @@ class MainActivity : AppCompatActivity(),
|
|||
val newHighScore = highScoreManager.isHighScore(finalScore)
|
||||
statsManager.endSession() // End session after calculations
|
||||
|
||||
Log.d(TAG, "Game Over. Score: $finalScore, Level: ${viewModel.currentLevel.value}, Lines: ${gameBoard.lines}, Start Level: $selectedLevel, New High Score: $newHighScore, XP Gained: $xpGained")
|
||||
Log.d(TAG, "Game Over. Score: $finalScore, Level: ${viewModel.currentLevel.value}, Lines: ${gameBoard.lines}, Start Level: ${viewModel.selectedLevel.value}, New High Score: $newHighScore, XP Gained: $xpGained")
|
||||
|
||||
// Show appropriate screen: Progression or Game Over directly
|
||||
if (xpGained > 0 || newHighScore) {
|
||||
|
@ -997,7 +1006,7 @@ class MainActivity : AppCompatActivity(),
|
|||
// Reset session stats
|
||||
statsManager.startNewSession()
|
||||
progressionManager.startNewSession()
|
||||
gameBoard.updateLevel(selectedLevel)
|
||||
gameBoard.updateLevel(viewModel.selectedLevel.value ?: 1)
|
||||
}
|
||||
|
||||
private fun restartGame() {
|
||||
|
@ -2007,7 +2016,7 @@ class MainActivity : AppCompatActivity(),
|
|||
binding.comboText.text = gameBoard.getCombo().toString()
|
||||
|
||||
// If random mode is enabled, check if we should change theme or block skin
|
||||
if (isRandomModeEnabled) {
|
||||
if (viewModel.isRandomModeEnabled.value == true) {
|
||||
// Get the current 10-line group (0 for 0-9, 1 for 10-19, etc.)
|
||||
val currentLinesGroup = lines / 10
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue