diff --git a/app/src/main/java/com/example/android/unscramble/ui/game/GameFragment.kt b/app/src/main/java/com/example/android/unscramble/ui/game/GameFragment.kt index 18d8d60bace3ff3a686d74ea7df5cd2bcd5bb24c..5777f0d939ef5553960bb2979c38f21c64a3ec1f 100644 --- a/app/src/main/java/com/example/android/unscramble/ui/game/GameFragment.kt +++ b/app/src/main/java/com/example/android/unscramble/ui/game/GameFragment.kt @@ -67,13 +67,19 @@ class GameFragment : Fragment() { binding.skip.setOnClickListener { onSkipWord() } // Update the UI - binding.score.text = getString(R.string.score, 0) - binding.wordCount.text = getString( - R.string.word_count, 0, MAX_NO_OF_WORDS) // Observe the scrambledCharArray LiveData, passing in the LifecycleOwner and the observer. viewModel.currentScrambledWord.observe(viewLifecycleOwner) { newWord -> binding.textViewUnscrambledWord.text = newWord } + viewModel.currentWordCount.observe(viewLifecycleOwner + ) { newWordCount -> + binding.wordCount.text = + getString(R.string.word_count, newWordCount, MAX_NO_OF_WORDS) + } + viewModel.score.observe(viewLifecycleOwner + ) { newScore -> + binding.score.text = getString(R.string.score, newScore) + } } /* @@ -135,7 +141,7 @@ class GameFragment : Fragment() { private fun showFinalScoreDialog() { MaterialAlertDialogBuilder(requireContext()) .setTitle(getString(R.string.congratulations)) - .setMessage(getString(R.string.you_scored, viewModel.score)) + .setMessage(getString(R.string.you_scored, viewModel.score.value)) .setCancelable(false) .setNegativeButton(getString(R.string.exit)) { _, _ -> exitGame() diff --git a/app/src/main/java/com/example/android/unscramble/ui/game/GameViewModel.kt b/app/src/main/java/com/example/android/unscramble/ui/game/GameViewModel.kt index fa7009597c102dd4ef86072029033f2e4c2a836e..d1f0462f70d6e68ab9c126d579de09f7ff92eb80 100644 --- a/app/src/main/java/com/example/android/unscramble/ui/game/GameViewModel.kt +++ b/app/src/main/java/com/example/android/unscramble/ui/game/GameViewModel.kt @@ -6,11 +6,12 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class GameViewModel: ViewModel() { - private var _score = 0 - val score: Int + private val _score = MutableLiveData(0) + val score: LiveData<Int> get() = _score - private var _currentWordCount = 0 - val currentWordCount: Int + + private val _currentWordCount = MutableLiveData(0) + val currentWordCount: LiveData<Int> get() = _currentWordCount private val _currentScrambledWord = MutableLiveData<String>() @@ -40,20 +41,20 @@ class GameViewModel: ViewModel() { getNextWord() } else { _currentScrambledWord.value = String(tempWord) - ++_currentWordCount + _currentWordCount.value = (_currentWordCount.value)?.inc() wordsList.add(currentWord) } } fun nextWord(): Boolean { - return if (currentWordCount < MAX_NO_OF_WORDS) { + return if (currentWordCount.value!! < MAX_NO_OF_WORDS) { getNextWord() true } else false } private fun increaseScore() { - _score += SCORE_INCREASE + _score.value = (_score.value)?.plus(SCORE_INCREASE) } fun isUserWordCorrect(playerWord: String): Boolean { @@ -65,8 +66,8 @@ class GameViewModel: ViewModel() { } fun reinitializeData() { - _score = 0 - _currentWordCount = 0 + _score.value = 0 + _currentWordCount.value = 0 wordsList.clear() getNextWord() }