update on cards and player names

hh
Laurent 6 years ago
parent 1d9d301ae0
commit 301ba027f9
  1. 20
      app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt
  2. 10
      app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerConfiguration.kt
  4. 30
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableDrawer.kt
  5. 16
      app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt
  6. 1
      app/src/main/java/net/pokeranalytics/android/util/Global.kt
  7. 4
      app/src/main/res/values/colors.xml

@ -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.PlayerRow
import net.pokeranalytics.android.ui.view.rowrepresentable.SeparatorRow import net.pokeranalytics.android.ui.view.rowrepresentable.SeparatorRow
import net.pokeranalytics.android.util.NULL_TEXT 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.isSameDay
import net.pokeranalytics.android.util.extensions.mediumDate import net.pokeranalytics.android.util.extensions.mediumDate
import java.util.* import java.util.*
@ -191,5 +192,24 @@ open class Player : RealmObject(), NameManageable, Savable, Deletable, StaticRow
return null 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
}
}
} }

@ -30,6 +30,7 @@ import net.pokeranalytics.android.util.extensions.formatted
import net.pokeranalytics.android.util.extensions.fullDate import net.pokeranalytics.android.util.extensions.fullDate
import java.util.* import java.util.*
import kotlin.Comparator import kotlin.Comparator
import kotlin.math.max
data class PositionAmount(var position: Int, var amount: Double, var isAllin: Boolean) 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
}
} }

@ -53,6 +53,8 @@ class ReplayerConfiguration(var handHistory: HandHistory) {
this.width = width this.width = width
this.height = height this.height = height
val maxPlayerCards = this.handHistory.maxPlayerCards
val portrait = height > width val portrait = height > width
val playerPerColumn = if (portrait) 4 else 3 val playerPerColumn = if (portrait) 4 else 3
val playerPerRow = 12 / playerPerColumn // 3 or 4 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)) 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<RectF>() val cardsRectangles = mutableListOf<RectF>()
if (cardsUsed > 0) { if (cardsUsed > 0) {
val cardWPaddingWidth = pzWidth / maxCards val cardWPaddingWidth = pzWidth / maxCards

@ -10,6 +10,7 @@ import net.pokeranalytics.android.model.handhistory.Position
import net.pokeranalytics.android.model.handhistory.Street import net.pokeranalytics.android.model.handhistory.Street
import net.pokeranalytics.android.model.realm.handhistory.Card import net.pokeranalytics.android.model.realm.handhistory.Card
import net.pokeranalytics.android.ui.modules.handhistory.model.ComputedAction import net.pokeranalytics.android.ui.modules.handhistory.model.ComputedAction
import net.pokeranalytics.android.util.RANDOM_PLAYER
import net.pokeranalytics.android.util.extensions.formatted import net.pokeranalytics.android.util.extensions.formatted
import timber.log.Timber import timber.log.Timber
@ -19,6 +20,7 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) {
private const val tableStrokeWidth = 30f private const val tableStrokeWidth = 30f
private const val playerStrokeWidth = 8f private const val playerStrokeWidth = 8f
private const val cardStrokeWidth = 6f
private val strokePaint = Paint() private val strokePaint = Paint()
private val fillPaint = Paint() private val fillPaint = Paint()
@ -26,6 +28,7 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) {
private val tablePaint = Paint() private val tablePaint = Paint()
private val textPaint = Paint() private val textPaint = Paint()
private val cardTextPaint = Paint() private val cardTextPaint = Paint()
private val cardStrokePaint = Paint()
fun configurePaints(context: Context) { fun configurePaints(context: Context) {
tablePaint.isAntiAlias = true tablePaint.isAntiAlias = true
@ -37,6 +40,10 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) {
strokePaint.style = Paint.Style.STROKE strokePaint.style = Paint.Style.STROKE
strokePaint.strokeWidth = playerStrokeWidth strokePaint.strokeWidth = playerStrokeWidth
cardStrokePaint.isAntiAlias = true
cardStrokePaint.style = Paint.Style.STROKE
cardStrokePaint.strokeWidth = cardStrokeWidth
fillPaint.isAntiAlias = true fillPaint.isAntiAlias = true
textPaint.color = context.getColor(R.color.white) textPaint.color = context.getColor(R.color.white)
@ -60,6 +67,7 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) {
val hh = config.handHistory val hh = config.handHistory
val positions = Position.positionsPerPlayers(hh.numberOfPlayers) val positions = Position.positionsPerPlayers(hh.numberOfPlayers)
for (i in 0 until hh.numberOfPlayers) { for (i in 0 until hh.numberOfPlayers) {
val isHero = (hh.heroIndex == i)
Timber.d("Getting player $i setup ") Timber.d("Getting player $i setup ")
val playerSetup = hh.playerSetupForPosition(i) val playerSetup = hh.playerSetupForPosition(i)
@ -76,6 +84,9 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) {
val circle = config.circleForPlayer(i) val circle = config.circleForPlayer(i)
canvas.drawCircle(circle.x, circle.y, circle.radius, this.fillPaint) canvas.drawCircle(circle.x, circle.y, circle.radius, this.fillPaint)
canvas.drawCircle(circle.x, circle.y, circle.radius, this.strokePaint) 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 // Player name
val name = playerSetup?.player?.name ?: positions.elementAt(i).value val name = playerSetup?.player?.name ?: positions.elementAt(i).value
@ -92,15 +103,18 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) {
// Dealer button // Dealer button
val dealerCircle = config.dealerCircle 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) 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.drawCircle(dealerCircle.x, dealerCircle.y, dealerCircle.radius, strokePaint)
canvas.drawText("D", dealerCircle.x, dealerCircle.y + this.textPaint.textSize / 3, this.textPaint) canvas.drawText("D", dealerCircle.x, dealerCircle.y + this.textPaint.textSize / 3, this.textPaint)
val cardRects = config.cardRects(i) val cardRects = config.cardRects(i)
playerSetup?.cards?.forEachIndexed { j, card -> val cards = playerSetup?.cards
val cardRect = cardRects[j] 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) fillPaint.color = context.getColor(R.color.white)
canvas.drawRoundRect(cardRect, config.cardRadius, config.cardRadius, fillPaint) canvas.drawRoundRect(cardRect, config.cardRadius, config.cardRadius, fillPaint)
@ -112,6 +126,14 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) {
cardTextPaint.color = context.getColor(suit.color) cardTextPaint.color = context.getColor(suit.color)
val suitY = cardRect.top + config.cardSpecs.height * 0.88f val suitY = cardRect.top + config.cardSpecs.height * 0.88f
canvas.drawText(suit.value, cardRect.centerX(), suitY, cardTextPaint) 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)
}
} }
} }

@ -77,20 +77,6 @@ class PlayerImageView : FrameLayout {
*/ */
fun setPlayer(player: Player, size: Size = Size.NORMAL) { 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 // Picture
if (player.hasPicture()) { if (player.hasPicture()) {
@ -105,7 +91,7 @@ class PlayerImageView : FrameLayout {
} else { } else {
playerImageView.playerStroke.background = ResourcesCompat.getDrawable(resources, R.drawable.circle_stroke_kaki, null) playerImageView.playerStroke.background = ResourcesCompat.getDrawable(resources, R.drawable.circle_stroke_kaki, null)
playerImageView.player_image.setImageDrawable(null) playerImageView.player_image.setImageDrawable(null)
playerImageView.playerInitial.text = playerInitial playerImageView.playerInitial.text = player.initials
playerImageView.playerInitial.setTextSize(TypedValue.COMPLEX_UNIT_SP, size.getFontSize()) playerImageView.playerInitial.setTextSize(TypedValue.COMPLEX_UNIT_SP, size.getFontSize())
} }

@ -1,3 +1,4 @@
package net.pokeranalytics.android.util package net.pokeranalytics.android.util
const val NULL_TEXT: String = "--" const val NULL_TEXT: String = "--"
const val RANDOM_PLAYER: String = ""

@ -19,6 +19,7 @@
<color name="dark_clear">#40000000</color> <color name="dark_clear">#40000000</color>
<color name="green">#58C473</color> <color name="green">#58C473</color>
<color name="green_transparent">#2558C473</color> <color name="green_transparent">#2558C473</color>
<color name="green_light">#65FF82</color> <color name="green_light">#65FF82</color>
<color name="green_lighter_gradient">#282e29</color> <color name="green_lighter_gradient">#282e29</color>
@ -33,6 +34,9 @@
<color name="kaki_darker">#283227</color> <color name="kaki_darker">#283227</color>
<color name="kaki_darkest">#1E231E</color> <color name="kaki_darkest">#1E231E</color>
<color name="card_border">#6BA379</color>
<color name="card_fill">#53775C</color>
<color name="red">#FF5F57</color> <color name="red">#FF5F57</color>
<color name="light_red">#FF7F79</color> <color name="light_red">#FF7F79</color>
<color name="dark_red">#C64943</color> <color name="dark_red">#C64943</color>

Loading…
Cancel
Save