Victory!
This commit is contained in:
@ -5,6 +5,7 @@ import android.support.v7.app.AppCompatActivity
|
||||
import android.support.v7.app.AppCompatDelegate
|
||||
import android.view.View
|
||||
import android.arch.lifecycle.ViewModelProviders
|
||||
import android.content.Intent
|
||||
import android.speech.tts.TextToSpeech
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.text.method.LinkMovementMethod
|
||||
@ -53,21 +54,18 @@ class MatchActivity : AppCompatActivity() {
|
||||
matchModel = ViewModelProviders.of(this).get(MatchModel::class.java)
|
||||
matchModel?.let {
|
||||
if (!it.matchStarted) {
|
||||
it.startMatch(
|
||||
intent.getStringExtra("player1Name"),
|
||||
intent.getStringExtra("player2Name"),
|
||||
intent.getIntExtra("starterId", 0),
|
||||
intent.getBooleanExtra("enableTTS", false),
|
||||
intent.getBooleanExtra("enableSTT", false)
|
||||
)
|
||||
if (it.ttsEnabled) {
|
||||
tts = TextToSpeech(
|
||||
this,
|
||||
TextToSpeech.OnInitListener {
|
||||
fun onInit(status: Int) {}
|
||||
}
|
||||
intent.apply {
|
||||
it.startMatch(
|
||||
getStringExtra("player1Name"),
|
||||
getStringExtra("player2Name"),
|
||||
getIntExtra("starterId", 0),
|
||||
getBooleanExtra("enableTTS", false),
|
||||
getBooleanExtra("enableSTT", false)
|
||||
)
|
||||
}
|
||||
if (it.ttsEnabled) {
|
||||
tts = TextToSpeech(this, TextToSpeech.OnInitListener { fun onInit(status: Int) {} })
|
||||
}
|
||||
Snackbar.make(
|
||||
findViewById(R.id.coordinatorLayout),
|
||||
R.string.button_hint,
|
||||
@ -102,54 +100,66 @@ class MatchActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
fun updateUI() {
|
||||
matchModel?.apply {
|
||||
if (matchFinished) {
|
||||
matchModel?.let {
|
||||
textScore?.text = getString(
|
||||
R.string.score,
|
||||
it.players[it.serviceSide].score,
|
||||
it.players[it.relaunchSide].score
|
||||
)
|
||||
textService?.text = getString(R.string.service, it.players[it.serviceSide].name)
|
||||
|
||||
} else {
|
||||
textScore?.text = getString(
|
||||
R.string.score,
|
||||
players[serviceSide].score,
|
||||
players[relaunchSide].score
|
||||
)
|
||||
textService?.text = getString(R.string.service, players[serviceSide].name)
|
||||
for ((button, player) in buttons.zip(it.players)) {
|
||||
button.text = fromHtml(getString(R.string.button_text, player.name, player.score))
|
||||
}
|
||||
|
||||
for ((button, player) in buttons.zip(players)) {
|
||||
button.text = fromHtml(getString(R.string.button_text, player.name, player.score))
|
||||
when (it.serviceSide) {
|
||||
0 -> {
|
||||
imageViews[0]?.setImageResource(R.drawable.ic_service_0)
|
||||
imageViews[1]?.setImageResource(0)
|
||||
}
|
||||
|
||||
when (serviceSide) {
|
||||
0 -> {
|
||||
imageViews[0]?.setImageResource(R.drawable.ic_service_0)
|
||||
imageViews[1]?.setImageResource(0)
|
||||
}
|
||||
else -> {
|
||||
imageViews[0]?.setImageResource(0)
|
||||
imageViews[1]?.setImageResource(R.drawable.ic_service_1)
|
||||
}
|
||||
else -> {
|
||||
imageViews[0]?.setImageResource(0)
|
||||
imageViews[1]?.setImageResource(R.drawable.ic_service_1)
|
||||
}
|
||||
}
|
||||
|
||||
undo?.isVisible = when (playId) {
|
||||
0 -> false
|
||||
else -> true
|
||||
}
|
||||
redo?.isVisible = when (playId) {
|
||||
history.size - 1 -> false
|
||||
else -> true
|
||||
}
|
||||
undo?.isVisible = when (it.playId) {
|
||||
0 -> false
|
||||
else -> true
|
||||
}
|
||||
redo?.isVisible = when (it.playId) {
|
||||
it.history.size - 1 -> false
|
||||
else -> true
|
||||
}
|
||||
|
||||
if (ttsEnabled) {
|
||||
if (it.ttsEnabled) {
|
||||
if (it.matchFinished) {
|
||||
val (loser, winner) = it.players.sortedBy { player -> player.score }
|
||||
tts?.speak(
|
||||
getString(
|
||||
R.string.victory_speech,
|
||||
winner.name,
|
||||
winner.score,
|
||||
loser.score
|
||||
),
|
||||
TextToSpeech.QUEUE_FLUSH,
|
||||
hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "Victory")
|
||||
)
|
||||
} else {
|
||||
tts?.speak(
|
||||
getString(
|
||||
R.string.update_score_speech,
|
||||
players[serviceSide].score,
|
||||
players[relaunchSide].score,
|
||||
players[serviceSide].name
|
||||
it.players[it.serviceSide].score,
|
||||
it.players[it.relaunchSide].score,
|
||||
it.players[it.serviceSide].name
|
||||
),
|
||||
TextToSpeech.QUEUE_FLUSH,
|
||||
hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "MessageId")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (it.matchFinished) endMatch()
|
||||
}
|
||||
}
|
||||
|
||||
@ -166,4 +176,17 @@ class MatchActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
fun endMatch() {
|
||||
matchModel?.let {
|
||||
startActivity(
|
||||
Intent(this, VictoryActivity::class.java).apply {
|
||||
putExtra("winnerName", it.players.maxBy{ player -> player.score }?.name)
|
||||
putExtra("player1Name", it.players[0].name)
|
||||
putExtra("player2Name", it.players[1].name)
|
||||
putExtra("score", getString(R.string.score_only, it.players[0].score, it.players[1].score))
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ class MatchModel : ViewModel() {
|
||||
}
|
||||
|
||||
fun undo() {
|
||||
matchFinished = false
|
||||
playId--
|
||||
reloadState()
|
||||
}
|
||||
|
@ -1,12 +1,92 @@
|
||||
package adrienmalin.pingpoints
|
||||
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.arch.lifecycle.ViewModelProviders
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.support.v7.app.AppCompatDelegate
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
|
||||
|
||||
class VictoryActivity : AppCompatActivity() {
|
||||
|
||||
var victoryModel: VictoryModel? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
|
||||
setContentView(R.layout.activity_victory)
|
||||
setSupportActionBar(findViewById(R.id.toolbar))
|
||||
|
||||
val previousMatch = getPreferences(Context.MODE_PRIVATE)
|
||||
|
||||
// Init victoryModel
|
||||
victoryModel = ViewModelProviders.of(this).get(VictoryModel::class.java)
|
||||
|
||||
victoryModel?.let {
|
||||
if (!it.matchFinished) {
|
||||
it.matchFinished = true
|
||||
it.winnerName = intent.getStringExtra("winnerName")
|
||||
it.player1Name = intent.getStringExtra("player1Name")
|
||||
it.player2Name = intent.getStringExtra("player2Name")
|
||||
it.score = intent.getStringExtra("score")
|
||||
|
||||
it.previousMatches = previousMatch.getString("previousMatches", "")
|
||||
previousMatch.edit().apply {
|
||||
putString(
|
||||
"previousMatches",
|
||||
getString(
|
||||
R.string.score_names,
|
||||
it.player1Name,
|
||||
it.score,
|
||||
it.player2Name
|
||||
) + '\n' + it.previousMatches
|
||||
)
|
||||
commit()
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun newMatch(view: View) {
|
||||
startActivity(
|
||||
Intent(this, StarterNameActivity::class.java)
|
||||
)
|
||||
}
|
||||
|
||||
fun share(view: View) {
|
||||
victoryModel?.let {
|
||||
startActivity(
|
||||
Intent().apply {
|
||||
action = Intent.ACTION_SEND
|
||||
putExtra(
|
||||
Intent.EXTRA_SUBJECT,
|
||||
getString(
|
||||
R.string.share_subject,
|
||||
it.player1Name,
|
||||
it.player2Name
|
||||
)
|
||||
)
|
||||
putExtra(
|
||||
Intent.EXTRA_TEXT,
|
||||
getString(
|
||||
R.string.share_message,
|
||||
it.player1Name,
|
||||
it.player2Name,
|
||||
it.winnerName,
|
||||
it.score
|
||||
)
|
||||
)
|
||||
type = "text/plain"
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
12
app/src/main/java/adrienmalin/pingpoints/VictoryModel.kt
Normal file
12
app/src/main/java/adrienmalin/pingpoints/VictoryModel.kt
Normal file
@ -0,0 +1,12 @@
|
||||
package adrienmalin.pingpoints
|
||||
|
||||
import android.arch.lifecycle.ViewModel
|
||||
|
||||
class VictoryModel : ViewModel() {
|
||||
var matchFinished: Boolean = false
|
||||
var winnerName:String = ""
|
||||
var player1Name = ""
|
||||
var player2Name = ""
|
||||
var score = ""
|
||||
var previousMatches: String = ""
|
||||
}
|
Reference in New Issue
Block a user