merge buttons on click functions

This commit is contained in:
adrienmalin 2018-08-17 00:49:04 +02:00
parent 7843848653
commit 10c6d6a31d
3 changed files with 30 additions and 36 deletions

View File

@ -12,9 +12,9 @@ class EndOfMatchDialog: DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?)= override fun onCreateDialog(savedInstanceState: Bundle?)=
AlertDialog.Builder(activity).apply{ AlertDialog.Builder(activity).apply{
val players = (activity as MainActivity).players val players = (activity as MainActivity).players
val names = players.map { it.name }.toTypedArray() val names = players.map { it.name }
val winnerName = players.maxBy { it.score }?.name ?: "" val winnerName = players.maxBy { it.score }?.name ?: ""
val score = players.map { it.score }.sortedDescending().toIntArray() val score = players.map { it.score }.sortedDescending()
setTitle(getString(R.string.end_match_dialog_title, winnerName)) setTitle(getString(R.string.end_match_dialog_title, winnerName))
setMessage(getString(R.string.score, score[0], score[1])) setMessage(getString(R.string.score, score[0], score[1]))
@ -23,7 +23,7 @@ class EndOfMatchDialog: DialogFragment() {
DialogInterface.OnClickListener { dialog, id -> DialogInterface.OnClickListener { dialog, id ->
startActivity( startActivity(
Intent(context, MainActivity::class.java).apply { Intent(context, MainActivity::class.java).apply {
putExtra("names", names) putExtra("names", names.toTypedArray())
} }
) )
} }

View File

@ -8,7 +8,6 @@ import android.view.View
import android.widget.Button import android.widget.Button
import android.os.Build import android.os.Build
import android.support.v7.app.AppCompatDelegate import android.support.v7.app.AppCompatDelegate
import android.support.v7.view.menu.ActionMenuItem
import android.view.Menu import android.view.Menu
import android.widget.Toast import android.widget.Toast
import android.view.MenuItem import android.view.MenuItem
@ -24,11 +23,10 @@ class MainActivity : AppCompatActivity() {
var buttons: Array<Button> = emptyArray() var buttons: Array<Button> = emptyArray()
var imageViews: Array<ImageView?> = emptyArray() var imageViews: Array<ImageView?> = emptyArray()
var history: MutableList<State> = ArrayList() var history: MutableList<State> = ArrayList()
var step: Int = 0 var game: Int = 0
var undo: MenuItem? = null var undo: MenuItem? = null
var redo: MenuItem? = null var redo: MenuItem? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
@ -66,13 +64,13 @@ class MainActivity : AppCompatActivity() {
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
R.id.action_undo -> { R.id.action_undo -> {
step-- game--
reloadState() reloadState()
redo?.isVisible = true redo?.isVisible = true
true true
} }
R.id.action_redo -> { R.id.action_redo -> {
step++ game++
reloadState() reloadState()
undo?.isVisible = true undo?.isVisible = true
true true
@ -96,19 +94,19 @@ class MainActivity : AppCompatActivity() {
fun saveState() { fun saveState() {
val state = State(players.map { it.score }, serviceSide) val state = State(players.map { it.score }, serviceSide)
if (step == history.size) { if (game == history.size) {
history.add(state) history.add(state)
} else { } else {
history[step] = state history[game] = state
history = history.subList(0, step+1).toMutableList() history = history.subList(0, game+1).toMutableList()
} }
if (step > 0) { if (game > 0) {
undo?.isVisible = true undo?.isVisible = true
} }
} }
fun reloadState() { fun reloadState() {
history[step].let{ history[game].let{
players.zip(it.score).forEach{(player, score) -> player.score = score} players.zip(it.score).forEach{(player, score) -> player.score = score}
serviceSide = it.serviceSide serviceSide = it.serviceSide
relaunchSide = when(serviceSide) { relaunchSide = when(serviceSide) {
@ -116,11 +114,11 @@ class MainActivity : AppCompatActivity() {
Side.RIGHT -> Side.LEFT Side.RIGHT -> Side.LEFT
} }
} }
when(step){ when(game){
0 -> undo?.isVisible = false 0 -> undo?.isVisible = false
history.size - 1 -> redo?.isVisible = false history.size - 1 -> redo?.isVisible = false
} }
this.step = step this.game = game
updateUI() updateUI()
} }
@ -156,26 +154,22 @@ class MainActivity : AppCompatActivity() {
} }
} }
fun onClickLeftPlayer(view: View) { fun updateScore(view: View) {
updateScore(players[Side.LEFT.value]) for (side in enumValues<Side>()) {
} if (view == buttons[side.value]) {
if (!matchIsFinished()) {
fun onClickRightPlayer(view: View) { game++
updateScore(players[Side.RIGHT.value]) players[side.value].score++
} if (players.sumBy { it.score } % 2 == 0) {
serviceSide = relaunchSide.also { relaunchSide = serviceSide }
fun updateScore(scoringPlayer: Player) { }
if ( !matchIsFinished() ) { saveState()
step++ updateUI()
scoringPlayer.score++ }
if (players.sumBy { it.score } % 2 == 0) { if (matchIsFinished()) {
serviceSide = relaunchSide.also { relaunchSide = serviceSide } EndOfMatchDialog().show(supportFragmentManager, "EndOfMatchDialog")
}
} }
saveState()
updateUI()
}
if ( matchIsFinished() ) {
EndOfMatchDialog().show(supportFragmentManager,"EndOfMatchDialog")
} }
} }

View File

@ -93,7 +93,7 @@
android:layout_weight="1" android:layout_weight="1"
android:background="@color/colorAccent" android:background="@color/colorAccent"
android:bufferType="spannable" android:bufferType="spannable"
android:onClick="onClickLeftPlayer" android:onClick="updateScore"
android:textAllCaps="false" android:textAllCaps="false"
android:textAppearance="@style/TextAppearance.AppCompat.Button" android:textAppearance="@style/TextAppearance.AppCompat.Button"
android:textSize="24sp" android:textSize="24sp"
@ -117,7 +117,7 @@
android:layout_weight="1" android:layout_weight="1"
android:background="@color/colorAccent" android:background="@color/colorAccent"
android:bufferType="spannable" android:bufferType="spannable"
android:onClick="onClickRightPlayer" android:onClick="updateScore"
android:textAllCaps="false" android:textAllCaps="false"
android:textAppearance="@style/TextAppearance.AppCompat.Button" android:textAppearance="@style/TextAppearance.AppCompat.Button"
android:textSize="24sp" android:textSize="24sp"