Match point + previous matches in table

This commit is contained in:
adrienmalin 2018-12-04 20:52:15 +01:00
parent 7b2c35c5a6
commit 3a34e9a390
9 changed files with 56 additions and 38 deletions

Binary file not shown.

View File

@ -133,7 +133,7 @@ class MatchActivity : AppCompatActivity() {
}
if (it.ttsEnabled) {
if (it.matchFinished) {
if (it.matchFinished()) {
val (loser, winner) = it.players.sortedBy { player -> player.score }
tts?.speak(
getString(
@ -156,16 +156,23 @@ class MatchActivity : AppCompatActivity() {
TextToSpeech.QUEUE_FLUSH,
hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "MessageId")
)
if (it.matchPoint()) {
tts?.speak(
getString(R.string.match_point),
TextToSpeech.QUEUE_ADD,
hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "MessageId")
)
}
}
}
if (it.matchFinished) endMatch()
if (it.matchFinished()) endMatch()
}
}
fun updateScore(view: View) {
matchModel?.apply {
if (!matchFinished) {
if (!matchFinished()) {
for (side in 0..1) {
if (view == buttons[side]) {
updateScore(side)

View File

@ -1,20 +1,17 @@
package adrienmalin.pingpoints
import android.arch.lifecycle.LiveData
import android.arch.lifecycle.MutableLiveData
import android.arch.lifecycle.ViewModel
class MatchModel : ViewModel() {
var matchStarted: Boolean = false
var matchFinished: Boolean = false
var players: List<Player> = emptyList()
var serviceSide: Int = 0
var relaunchSide: Int = 1
var ttsEnabled: Boolean = false
var sttEnabled: Boolean = false
var playId: Int = 0
var history: MutableList<Play> = ArrayList()
var history: MutableList<Point> = ArrayList()
fun startMatch(player1Name: String, player2Name:String, starterId: Int, enableTTS: Boolean, enableSTT: Boolean) {
matchStarted = true
@ -36,14 +33,20 @@ class MatchModel : ViewModel() {
serviceSide = relaunchSide.also { relaunchSide = serviceSide }
}
saveState()
}
// Is match finished?
fun matchFinished(): Boolean {
val (minScore, maxScore) = players.map { it.score }.sorted()
if ((maxScore >= 11) and (maxScore - minScore >= 2)) matchFinished = true
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() {
val play = Play(players.map { it.score }, serviceSide)
val play = Point(players.map { it.score }, serviceSide)
if (playId == history.size) {
history.add(play)
} else {
@ -53,7 +56,6 @@ class MatchModel : ViewModel() {
}
fun undo() {
matchFinished = false
playId--
reloadState()
}

View File

@ -1,6 +1,6 @@
package adrienmalin.pingpoints
data class Play (
data class Point (
val score: List<Int>,
val serviceSide: Int
)

View File

@ -192,7 +192,6 @@ class StarterNameActivity : AppCompatActivity() {
putExtra(
"starterId",
when(radioStarterId) {
R.id.radioPlayer1Starts -> 0
R.id.radioPlayer2Starts -> 1
else -> 0
}

View File

@ -7,6 +7,8 @@ import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.app.AppCompatDelegate
import android.view.View
import android.widget.ArrayAdapter
import android.widget.GridView
import android.widget.TextView
@ -38,7 +40,7 @@ class VictoryActivity : AppCompatActivity() {
putString(
"previousMatches",
getString(
R.string.score_names,
R.string.result,
it.player1Name,
it.score,
it.player2Name
@ -50,8 +52,16 @@ class VictoryActivity : AppCompatActivity() {
// UpdateUI
findViewById<TextView>(R.id.congrats).text = getString(R.string.congrats, it.winnerName)
findViewById<TextView>(R.id.scoreNames).text = getString(R.string.score_names, it.player1Name, it.score, it.player2Name)
findViewById<TextView>(R.id.previousMatches).text = it.previousMatches
findViewById<GridView>(R.id.resultGrid).adapter = ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
arrayOf(it.player1Name, it.score, it.player2Name)
)
findViewById<GridView>(R.id.previousMatchesGrid).adapter = ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
it.previousMatches.split("\t|\n".toRegex())
)
}
}

View File

@ -34,25 +34,25 @@
android:layout_marginRight="8dp" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
android:text="@string/congrats"/>
<TextView
android:text="@string/score_names"
android:layout_width="wrap_content"
<GridView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/scoreNames" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/congrats" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
android:layout_marginStart="8dp" android:textAppearance="@style/TextAppearance.AppCompat.Large"/>
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
android:layout_marginRight="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/congrats" android:id="@+id/resultGrid"
android:numColumns="3"/>
<TextView
android:text="@string/previous_matches"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView3" android:layout_marginTop="24dp"
app:layout_constraintTop_toBottomOf="@+id/scoreNames" app:layout_constraintEnd_toEndOf="parent"
android:id="@+id/textView3"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="7dp"
android:layout_marginStart="7dp"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textAllCaps="true"/>
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textAllCaps="true"
app:layout_constraintTop_toBottomOf="@+id/resultGrid" android:layout_marginTop="32dp"/>
<Button
android:text="@string/new_match"
android:layout_width="wrap_content"
@ -69,16 +69,14 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="8dp" android:layout_marginStart="8dp"
android:drawableStart="@drawable/ic_share" android:onClick="share"/>
<TextView
android:text="TextView"
<GridView
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/previousMatches" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/textView3" android:layout_marginBottom="8dp"
android:gravity="center_horizontal" app:layout_constraintBottom_toBottomOf="parent"/>
android:layout_height="0dp" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/textView3" android:layout_marginLeft="8dp"
android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent"
android:numColumns="5" android:id="@+id/previousMatchesGrid" android:clickable="false"/>
</android.support.constraint.ConstraintLayout>

View File

@ -37,4 +37,5 @@ Vous pouvez à tout moment changer la permission dans les paramètres Android."
<string name="share_subject">Match Ping Points : %s contre %s</string>
<string name="share_message">"%s contre %s:\n%s a gagné par %s\nPing Points est disponible sur Google Play\n "</string>
<string name="score_only">%d - %d</string>
<string name="match_point">Balle de match</string>
</resources>

View File

@ -38,9 +38,10 @@
<string name="previous_matches">Previous matches</string>
<string name="new_match">New match</string>
<string name="share">Share</string>
<string name="score_names" translatable="false">%s %s %s</string>
<string name="result" translatable="false">"%s\t%s\t%s"</string>
<string name="victory_speech">%s wins by %d to %d.</string>
<string name="share_subject">Ping Points Match: %s vs. %s</string>
<string name="share_message">%s vs. %s:\n%s won by %s\nGet Ping Points on Google Play</string>
<string name="score_only">%d - %d</string>
<string name="score_only">"%d\t-\t%d"</string>
<string name="match_point">Match point</string>
</resources>