diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt index e8992e14..ca398d5e 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt @@ -157,7 +157,7 @@ open class Card : RealmObject() { /*** * Returns the formatted value of the card */ - private val formattedValue: String + val formattedValue: String get() { return Value.format(this.value) } /*** 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 33b71a0f..841c4d74 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 @@ -3,6 +3,7 @@ package net.pokeranalytics.android.ui.modules.handhistory.replayer import android.graphics.RectF import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.model.realm.handhistory.HandHistory +import timber.log.Timber class ReplayerConfiguration(var handHistory: HandHistory) { @@ -36,6 +37,7 @@ class ReplayerConfiguration(var handHistory: HandHistory) { private var playerItemsHeight = 10f private var playerItemsWidth = 10f private var paddingPercentage = 0.8f + private var cardsPaddingPercentage = 0.9f private var tableHPadding = 0f private var tableVPadding = 0f @@ -47,6 +49,7 @@ class ReplayerConfiguration(var handHistory: HandHistory) { * Calculates the position of all elements to draw */ fun setDimension(width: Float, height: Float) { + Timber.d("Setting dimensions...") this.width = width this.height = height @@ -66,12 +69,13 @@ class ReplayerConfiguration(var handHistory: HandHistory) { this.playerItemsHeight = pzHeight / 3 this.playerItemsWidth = pzWidth * this.paddingPercentage - val cardWidth = pzWidth * paddingPercentage / maxCards + val cardWidth = pzWidth * this.cardsPaddingPercentage / this.maxCards this.cardSpecs = Size(cardWidth, cardWidth * 1.75f) this.cardRadius = cardWidth / 4 + val playerCount = this.handHistory.numberOfPlayers // number of players in this order: bottom / left / top / right - val repartition = when (this.handHistory.numberOfPlayers) { + val repartition = when (playerCount) { 2 -> mutableListOf(1, 0, 1, 0) 3 -> mutableListOf(1, 1, 0, 1) 4 -> mutableListOf(1, 1, 1, 1) @@ -83,8 +87,12 @@ class ReplayerConfiguration(var handHistory: HandHistory) { 10 -> mutableListOf(4, 1, 4, 1) else -> throw PAIllegalStateException("can't happen") } - if (portrait && this.handHistory.numberOfPlayers > 4) { repartition.reverse() } + if (repartition.sum() != playerCount) { + throw PAIllegalStateException("Problem in the $playerCount players repartition: $repartition") + } + if (portrait && playerCount > 4) { repartition.reverse() } // adjustment for portrait vs landscape + var pIndex = -1 repartition.forEachIndexed { index, count -> val x = width / (count + 1) @@ -92,10 +100,11 @@ class ReplayerConfiguration(var handHistory: HandHistory) { var rectCenterX = x var rectCenterY = y - var circleOffset = playerItemsHeight * 1.5f - var pIndex = -1 + var circleOffset = playerItemsHeight * 1.75f for (i in 1..count) { - pIndex++ + + pIndex += 1 + Timber.d("Creating dimensions for player $pIndex") when (index) { 0 -> { // bottom 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 154c37ff..c517113f 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 @@ -4,24 +4,28 @@ import android.content.Context import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Paint +import androidx.core.content.res.ResourcesCompat import net.pokeranalytics.android.R 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.extensions.formatted +import timber.log.Timber class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { companion object { - const val tableStrokeWidth = 30f - const val playerStrokeWidth = 8f + private const val tableStrokeWidth = 30f + private const val playerStrokeWidth = 8f private val strokePaint = Paint() private val fillPaint = Paint() private val tablePaint = Paint() private val textPaint = Paint() + private val cardTextPaint = Paint() fun configurePaints(context: Context) { tablePaint.isAntiAlias = true @@ -39,6 +43,10 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { textPaint.textAlign = Paint.Align.CENTER textPaint.isAntiAlias = true + cardTextPaint.color = context.getColor(R.color.black) + cardTextPaint.typeface = ResourcesCompat.getFont(context, R.font.roboto_bold) + cardTextPaint.textAlign = Paint.Align.CENTER + cardTextPaint.isAntiAlias = true } /*** @@ -47,10 +55,12 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { fun initializeTable(config: ReplayerConfiguration, canvas: Canvas, context: Context) { canvas.drawRoundRect(config.tableRect, config.tableCornerRadius, config.tableCornerRadius, this.tablePaint) + cardTextPaint.textSize = config.cardSpecs.height * .38f val hh = config.handHistory val positions = Position.positionsPerPlayers(hh.numberOfPlayers) for (i in 0 until hh.numberOfPlayers) { + Timber.d("Getting player $i setup ") val playerSetup = hh.playerSetupForPosition(i) // Stack zone @@ -88,12 +98,20 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { canvas.drawCircle(dealerCircle.x, dealerCircle.y, dealerCircle.radius, strokePaint) canvas.drawText("D", dealerCircle.x, dealerCircle.y + this.textPaint.textSize / 3, this.textPaint) - playerSetup?.cards?.let { cards -> - val cardRects = config.cardRects(i) - for (cardRect in cardRects) { - fillPaint.color = context.getColor(R.color.white) - canvas.drawRoundRect(cardRect, config.cardRadius, config.cardRadius, fillPaint) - } + 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) } }