From 301ba027f907890409438d28ab06044a7e76402b Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 8 Jun 2020 12:35:25 +0200 Subject: [PATCH] update on cards and player names --- .../android/model/realm/Player.kt | 20 +++++++ .../model/realm/handhistory/HandHistory.kt | 10 ++++ .../replayer/ReplayerConfiguration.kt | 4 +- .../handhistory/replayer/TableDrawer.kt | 52 +++++++++++++------ .../android/ui/view/PlayerImageView.kt | 16 +----- .../net/pokeranalytics/android/util/Global.kt | 1 + app/src/main/res/values/colors.xml | 4 ++ 7 files changed, 76 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt index 18e47b48..71edbd31 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt @@ -17,6 +17,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepres import net.pokeranalytics.android.ui.view.rowrepresentable.PlayerRow import net.pokeranalytics.android.ui.view.rowrepresentable.SeparatorRow import net.pokeranalytics.android.util.NULL_TEXT +import net.pokeranalytics.android.util.RANDOM_PLAYER import net.pokeranalytics.android.util.extensions.isSameDay import net.pokeranalytics.android.util.extensions.mediumDate import java.util.* @@ -191,5 +192,24 @@ open class Player : RealmObject(), NameManageable, Savable, Deletable, StaticRow return null } + val initials: String + get() { + return if (this.name.isNotEmpty()) { + val playerData = this.name.split(" ") + when { + playerData.size > 1 -> { + playerData[0].first().toString() + playerData[1].first().toString() + } + this.name.length > 1 -> { + this.name.substring(0, 2) + } + else -> { + this.name.substring(0, this.name.length) + } + } + } else { + RANDOM_PLAYER + } + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt index 73d93282..a9877cd3 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt @@ -30,6 +30,7 @@ import net.pokeranalytics.android.util.extensions.formatted import net.pokeranalytics.android.util.extensions.fullDate import java.util.* import kotlin.Comparator +import kotlin.math.max data class PositionAmount(var position: Int, var amount: Double, var isAllin: Boolean) @@ -639,4 +640,13 @@ open class HandHistory : RealmObject(), Deletable, RowRepresentable, Filterable, } } + val maxPlayerCards: Int + get() { + var max = 0 + this.playerSetups.forEach { + max = max(it.cards.size, max) + } + return max + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerConfiguration.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerConfiguration.kt index 841c4d74..7bfc03db 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerConfiguration.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerConfiguration.kt @@ -53,6 +53,8 @@ class ReplayerConfiguration(var handHistory: HandHistory) { this.width = width this.height = height + val maxPlayerCards = this.handHistory.maxPlayerCards + val portrait = height > width val playerPerColumn = if (portrait) 4 else 3 val playerPerRow = 12 / playerPerColumn // 3 or 4 @@ -144,7 +146,7 @@ class ReplayerConfiguration(var handHistory: HandHistory) { this.playerCircles.add(Circle(rectCenterX, rectCenterY - circleOffset, this.playerItemsHeight / 2)) - val cardsUsed = this.handHistory.playerSetupForPosition(pIndex)?.cards?.size ?: 0 + val cardsUsed = this.handHistory.playerSetupForPosition(pIndex)?.cards?.size ?: maxPlayerCards val cardsRectangles = mutableListOf() if (cardsUsed > 0) { val cardWPaddingWidth = pzWidth / maxCards diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableDrawer.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableDrawer.kt index c517113f..566ecc26 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableDrawer.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableDrawer.kt @@ -10,6 +10,7 @@ import net.pokeranalytics.android.model.handhistory.Position import net.pokeranalytics.android.model.handhistory.Street import net.pokeranalytics.android.model.realm.handhistory.Card import net.pokeranalytics.android.ui.modules.handhistory.model.ComputedAction +import net.pokeranalytics.android.util.RANDOM_PLAYER import net.pokeranalytics.android.util.extensions.formatted import timber.log.Timber @@ -19,6 +20,7 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { private const val tableStrokeWidth = 30f private const val playerStrokeWidth = 8f + private const val cardStrokeWidth = 6f private val strokePaint = Paint() private val fillPaint = Paint() @@ -26,6 +28,7 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { private val tablePaint = Paint() private val textPaint = Paint() private val cardTextPaint = Paint() + private val cardStrokePaint = Paint() fun configurePaints(context: Context) { tablePaint.isAntiAlias = true @@ -37,6 +40,10 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { strokePaint.style = Paint.Style.STROKE strokePaint.strokeWidth = playerStrokeWidth + cardStrokePaint.isAntiAlias = true + cardStrokePaint.style = Paint.Style.STROKE + cardStrokePaint.strokeWidth = cardStrokeWidth + fillPaint.isAntiAlias = true textPaint.color = context.getColor(R.color.white) @@ -60,6 +67,7 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { val hh = config.handHistory val positions = Position.positionsPerPlayers(hh.numberOfPlayers) for (i in 0 until hh.numberOfPlayers) { + val isHero = (hh.heroIndex == i) Timber.d("Getting player $i setup ") val playerSetup = hh.playerSetupForPosition(i) @@ -76,6 +84,9 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { val circle = config.circleForPlayer(i) canvas.drawCircle(circle.x, circle.y, circle.radius, this.fillPaint) canvas.drawCircle(circle.x, circle.y, circle.radius, this.strokePaint) + val playerInitials = playerSetup?.player?.initials ?: RANDOM_PLAYER + this.textPaint.textSize = circle.radius + canvas.drawText(playerInitials, circle.x, circle.y + circle.radius * 0.4f, this.textPaint) // Player name val name = playerSetup?.player?.name ?: positions.elementAt(i).value @@ -92,26 +103,37 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { // Dealer button val dealerCircle = config.dealerCircle - fillPaint.color = context.getColor(R.color.red) + this.fillPaint.color = context.getColor(R.color.red) canvas.drawCircle(dealerCircle.x, dealerCircle.y, dealerCircle.radius, fillPaint) - strokePaint.color = context.getColor(R.color.white) + this.strokePaint.color = context.getColor(R.color.white) canvas.drawCircle(dealerCircle.x, dealerCircle.y, dealerCircle.radius, strokePaint) canvas.drawText("D", dealerCircle.x, dealerCircle.y + this.textPaint.textSize / 3, this.textPaint) val cardRects = config.cardRects(i) - playerSetup?.cards?.forEachIndexed { j, card -> - val cardRect = cardRects[j] - fillPaint.color = context.getColor(R.color.white) - canvas.drawRoundRect(cardRect, config.cardRadius, config.cardRadius, fillPaint) - - cardTextPaint.color = context.getColor(R.color.black) - val valueY = cardRect.top + config.cardSpecs.height * 0.44f - canvas.drawText(card.formattedValue, cardRect.centerX(), valueY, cardTextPaint) - - val suit = card.suit ?: Card.Suit.UNDEFINED - cardTextPaint.color = context.getColor(suit.color) - val suitY = cardRect.top + config.cardSpecs.height * 0.88f - canvas.drawText(suit.value, cardRect.centerX(), suitY, cardTextPaint) + val cards = playerSetup?.cards + cardRects.forEachIndexed { j, cardRect -> + + if (j < cards?.size ?: 0 && (config.showVillainHands || isHero)) { // show card + val card = cards?.get(j)!! // tested line before + fillPaint.color = context.getColor(R.color.white) + canvas.drawRoundRect(cardRect, config.cardRadius, config.cardRadius, fillPaint) + + cardTextPaint.color = context.getColor(R.color.black) + val valueY = cardRect.top + config.cardSpecs.height * 0.44f + canvas.drawText(card.formattedValue, cardRect.centerX(), valueY, cardTextPaint) + + val suit = card.suit ?: Card.Suit.UNDEFINED + cardTextPaint.color = context.getColor(suit.color) + val suitY = cardRect.top + config.cardSpecs.height * 0.88f + canvas.drawText(suit.value, cardRect.centerX(), suitY, cardTextPaint) + + } else { // show hidden cards + fillPaint.color = context.getColor(R.color.card_fill) + canvas.drawRoundRect(cardRect, config.cardRadius, config.cardRadius, fillPaint) + cardStrokePaint.color = context.getColor(R.color.card_border) + canvas.drawRoundRect(cardRect, config.cardRadius, config.cardRadius, cardStrokePaint) + } + } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt index d1e54e85..13122948 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt @@ -77,20 +77,6 @@ class PlayerImageView : FrameLayout { */ fun setPlayer(player: Player, size: Size = Size.NORMAL) { - // Initial - val playerInitial = if (player.name.isNotEmpty()) { - val playerData = player.name.split(" ") - if (playerData.size > 1) { - playerData[0].first().toString() + playerData[1].first().toString() - } else if (player.name.length > 1) { - player.name.substring(0, 2) - } else { - player.name.substring(0, player.name.length) - } - } else { - "☺︎" //NULL_TEXT - } - // Picture if (player.hasPicture()) { @@ -105,7 +91,7 @@ class PlayerImageView : FrameLayout { } else { playerImageView.playerStroke.background = ResourcesCompat.getDrawable(resources, R.drawable.circle_stroke_kaki, null) playerImageView.player_image.setImageDrawable(null) - playerImageView.playerInitial.text = playerInitial + playerImageView.playerInitial.text = player.initials playerImageView.playerInitial.setTextSize(TypedValue.COMPLEX_UNIT_SP, size.getFontSize()) } diff --git a/app/src/main/java/net/pokeranalytics/android/util/Global.kt b/app/src/main/java/net/pokeranalytics/android/util/Global.kt index 4fb20690..e3a56c20 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Global.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Global.kt @@ -1,3 +1,4 @@ package net.pokeranalytics.android.util const val NULL_TEXT: String = "--" +const val RANDOM_PLAYER: String = "☺︎" diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 92c60918..fed595f4 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -19,6 +19,7 @@ #40000000 #58C473 + #2558C473 #65FF82 #282e29 @@ -33,6 +34,9 @@ #283227 #1E231E + #6BA379 + #53775C + #FF5F57 #FF7F79 #C64943