Less match finish calculation
This commit is contained in:
		| @ -147,14 +147,14 @@ class MatchActivity : AppCompatActivity(), TextToSpeech.OnInitListener { | |||||||
|  |  | ||||||
|             if (ttsEnabled) ttsSpeak() |             if (ttsEnabled) ttsSpeak() | ||||||
|  |  | ||||||
|             if (matchFinished()) endMatch() |             if (matchFinished) endMatch() | ||||||
|             else if (sttEnabled and !ttsEnabled) launchStt() |             else if (sttEnabled and !ttsEnabled) launchStt() | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fun ttsSpeak() { |     fun ttsSpeak() { | ||||||
|         matchModel?.apply { |         matchModel?.apply { | ||||||
|             if (matchFinished()) { |             if (matchFinished) { | ||||||
|                 val (loser, winner) = players.sortedBy { it.score } |                 val (loser, winner) = players.sortedBy { it.score } | ||||||
|                 tts?.speak( |                 tts?.speak( | ||||||
|                     getString( |                     getString( | ||||||
| @ -177,7 +177,7 @@ class MatchActivity : AppCompatActivity(), TextToSpeech.OnInitListener { | |||||||
|                     TextToSpeech.QUEUE_FLUSH, |                     TextToSpeech.QUEUE_FLUSH, | ||||||
|                     hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "MessageId") |                     hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "MessageId") | ||||||
|                 ) |                 ) | ||||||
|                 if (matchPoint()) { |                 if (matchPoint) { | ||||||
|                     tts?.speak( |                     tts?.speak( | ||||||
|                         getString(R.string.match_point), |                         getString(R.string.match_point), | ||||||
|                         TextToSpeech.QUEUE_ADD, |                         TextToSpeech.QUEUE_ADD, | ||||||
| @ -190,7 +190,7 @@ class MatchActivity : AppCompatActivity(), TextToSpeech.OnInitListener { | |||||||
|  |  | ||||||
|     fun launchStt() { |     fun launchStt() { | ||||||
|         matchModel?.apply { |         matchModel?.apply { | ||||||
|             if (sttEnabled) { |             if (sttEnabled and !matchFinished) { | ||||||
|                 try { |                 try { | ||||||
|                     startActivityForResult( |                     startActivityForResult( | ||||||
|                         Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { |                         Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { | ||||||
| @ -268,7 +268,7 @@ class MatchActivity : AppCompatActivity(), TextToSpeech.OnInitListener { | |||||||
|  |  | ||||||
|     fun updateScore(view: View) { |     fun updateScore(view: View) { | ||||||
|         matchModel?.apply { |         matchModel?.apply { | ||||||
|             if (!matchFinished()) { |             if (!matchFinished) { | ||||||
|                 for (side in 0..1) { |                 for (side in 0..1) { | ||||||
|                     if (view == buttons[side]) { |                     if (view == buttons[side]) { | ||||||
|                         updateScore(players[side]) |                         updateScore(players[side]) | ||||||
|  | |||||||
| @ -5,6 +5,8 @@ import android.arch.lifecycle.ViewModel | |||||||
|  |  | ||||||
| class MatchModel : ViewModel() { | class MatchModel : ViewModel() { | ||||||
|     var matchStarted: Boolean = false |     var matchStarted: Boolean = false | ||||||
|  |     var matchFinished: Boolean = false | ||||||
|  |     var matchPoint: Boolean = false | ||||||
|     var players: List<Player> = emptyList() |     var players: List<Player> = emptyList() | ||||||
|     var serviceSide: Int = 0 |     var serviceSide: Int = 0 | ||||||
|     var relaunchSide: Int = 1 |     var relaunchSide: Int = 1 | ||||||
| @ -32,19 +34,14 @@ class MatchModel : ViewModel() { | |||||||
|         if ((players.sumBy { it.score } % 2 == 0) or (players.all { it.score >= 10 })) { |         if ((players.sumBy { it.score } % 2 == 0) or (players.all { it.score >= 10 })) { | ||||||
|             serviceSide = relaunchSide.also { relaunchSide = serviceSide } |             serviceSide = relaunchSide.also { relaunchSide = serviceSide } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         val (minScore, maxScore) = players.map { it.score }.sorted() | ||||||
|  |         matchFinished = (maxScore >= 11) and (maxScore - minScore >= 2) | ||||||
|  |         matchPoint = (maxScore >= 10) and (maxScore - minScore >= 1) | ||||||
|  |  | ||||||
|         saveState() |         saveState() | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fun matchFinished(): Boolean { |  | ||||||
|         val (minScore, maxScore) = players.map { it.score }.sorted() |  | ||||||
|         return (maxScore >= 11) and (maxScore - minScore >= 2) |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     fun matchPoint(): Boolean { |  | ||||||
|         val (minScore, maxScore) = players.map { it.score }.sorted() |  | ||||||
|         return (maxScore >= 10) and (maxScore - minScore >= 1) |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     fun saveState() { |     fun saveState() { | ||||||
|         val play = Point(players.map { it.score }, serviceSide) |         val play = Point(players.map { it.score }, serviceSide) | ||||||
|         if (playId == history.size) { |         if (playId == history.size) { | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user