This commit is contained in:
adrienmalin
2018-12-03 23:41:52 +01:00
parent 621c035c74
commit 9f4b35070d
16 changed files with 338 additions and 264 deletions

View File

@ -2,12 +2,10 @@ package adrienmalin.pingpoints
import android.os.Build
import android.text.Html
import android.text.Spanned
fun Html.fromHtml2(source: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml(source, Html.FROM_HTML_MODE_COMPACT)
} else {
Html.fromHtml(source)
}
fun fromHtml(source: String): Spanned = when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.N -> Html.fromHtml(source, Html.FROM_HTML_MODE_COMPACT)
else -> Html.fromHtml(source)
}

View File

@ -5,6 +5,11 @@ import android.support.v7.app.AppCompatActivity
import android.support.v7.app.AppCompatDelegate
import android.view.View
import android.arch.lifecycle.ViewModelProviders
import android.speech.tts.TextToSpeech
import android.support.design.widget.Snackbar
import android.widget.*
const val REQ_CODE_SPEECH_INPUT = 1
class MatchActivity : AppCompatActivity() {
@ -14,13 +19,13 @@ class MatchActivity : AppCompatActivity() {
var buttons: Array<Button> = emptyArray()
var imageViews: Array<ImageView?> = emptyArray()
var matchModel: MatchModel? = null
var tts: TextToSpeech? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
setContentView(R.layout.activity_match)
setSupportActionBar(findViewById(R.id.toolbar))
val matchModel = ViewModelProviders.of(this).get(MatchModel::class.java)
textScore = findViewById(R.id.textScore)
textService = findViewById(R.id.textService)
buttons = arrayOf(
@ -31,11 +36,69 @@ class MatchActivity : AppCompatActivity() {
findViewById(R.id.imgService0),
findViewById(R.id.imgService1)
)
val matchModel = ViewModelProviders.of(this).get(MatchModel::class.java)
if (!matchModel.matchStarted) {
matchModel.startMatch(
intent.getStringExtra("player1Name"),
intent.getStringExtra("player2Name"),
intent.getIntExtra("starterId", 0),
intent.getBooleanExtra("enableTTS", false),
intent.getBooleanExtra("enableSTT", false)
)
if (matchModel.ttsEnabled) {
tts = TextToSpeech(
this,
TextToSpeech.OnInitListener {
fun onInit(status: Int) {}
}
)
}
Snackbar.make(
findViewById(R.id.coordinatorLayout),
R.string.button_hint,
Snackbar.LENGTH_SHORT
).show()
}
updateUI()
}
fun updateUI() {
matchModel?.apply {
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(players)) {
button.text = fromHtml(getString(R.string.button_text, player.name, player.score))
}
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)
}
}
if (ttsEnabled) {
tts?.speak(
getString(
R.string.update_score_speech,
players[serviceSide].score,
players[relaunchSide].score,
players[serviceSide].name
),
TextToSpeech.QUEUE_FLUSH,
hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "MessageId")
)
}
}
}
fun updateScore(view: View) {

View File

@ -6,14 +6,21 @@ import android.arch.lifecycle.ViewModel
class MatchModel : ViewModel() {
var matchStarted: Boolean = false
var players: List<Player> = emptyList()
var serverId: Int = 0
var serviceSide: Int = 0
var relaunchSide: Int = 1
var ttsEnabled: Boolean = false
var sttEnabled: Boolean = false
fun startMatch(player1Name: String, player2Name:String, starterId: Int, enableTTS: Boolean, enableSTT: Boolean) {
matchStarted = true
players = listOf(Player(player1Name), Player(player2Name))
serverId = starterId
serviceSide = starterId
relaunchSide = when(starterId) {
0 -> 1
else -> 0
}
ttsEnabled = enableTTS
sttEnabled = enableSTT
}

View File

@ -14,7 +14,6 @@ import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.text.Html
import android.text.method.LinkMovementMethod
import android.view.View
import android.widget.*
@ -40,7 +39,7 @@ class StarterNameActivity : AppCompatActivity() {
setSupportActionBar(findViewById(R.id.toolbar))
// Set HTML text for icons credits
findViewById<TextView>(R.id.iconsCredit).run {
setText(Html.fromHtml2(getString(R.string.iconCredits)))
setText(fromHtml(getString(R.string.iconCredits)))
movementMethod = LinkMovementMethod.getInstance()
}
// Find views

View File

@ -1,13 +0,0 @@
package adrienmalin.pingpoints
import android.os.Build
import android.text.Html
import android.widget.TextView
fun TextView.setHtmlText(htmlText: String) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
this.setText(Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT));
} else {
this.setText(Html.fromHtml(htmlText));
}
}