|
|
|
@ -12,6 +12,29 @@ 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.RANDOM_PLAYER |
|
|
|
import net.pokeranalytics.android.util.extensions.formatted |
|
|
|
import net.pokeranalytics.android.util.extensions.formatted |
|
|
|
|
|
|
|
import timber.log.Timber |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data class ChipColor(val fillColor: Int, val borderColor: Int) { |
|
|
|
|
|
|
|
companion object { |
|
|
|
|
|
|
|
val all: List<ChipColor> by lazy { |
|
|
|
|
|
|
|
listOf( |
|
|
|
|
|
|
|
ChipColor(R.color.white, R.color.grey), |
|
|
|
|
|
|
|
ChipColor(R.color.green, R.color.white), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_2, R.color.chip_dash_color_2), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_3, R.color.chip_dash_color_3), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_4, R.color.chip_dash_color_4), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_5, R.color.chip_dash_color_5), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_6, R.color.chip_dash_color_6), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_7, R.color.chip_dash_color_7), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_8, R.color.chip_dash_color_8), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_9, R.color.chip_dash_color_9), |
|
|
|
|
|
|
|
ChipColor(R.color.chip_dash_color_7, R.color.player_color_2), |
|
|
|
|
|
|
|
ChipColor(R.color.player_color_6, R.color.player_color_9) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
|
|
|
|
|
|
|
|
@ -32,8 +55,12 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
private val cardStrokePaint = Paint() |
|
|
|
private val cardStrokePaint = Paint() |
|
|
|
private val chipBorderPaint = Paint() |
|
|
|
private val chipBorderPaint = Paint() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private val colorsByAmount = hashMapOf<Double, ChipColor>() |
|
|
|
|
|
|
|
|
|
|
|
fun configurePaints(context: Context) { |
|
|
|
fun configurePaints(context: Context) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.colorsByAmount.clear() |
|
|
|
|
|
|
|
|
|
|
|
backgroundPaint.color = context.getColor(backgroundColor) |
|
|
|
backgroundPaint.color = context.getColor(backgroundColor) |
|
|
|
|
|
|
|
|
|
|
|
tablePaint.isAntiAlias = true |
|
|
|
tablePaint.isAntiAlias = true |
|
|
|
@ -87,8 +114,9 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// draw pot |
|
|
|
// draw pot |
|
|
|
val potAction = computedAction ?: config.lastActionBeforeStreet(street) |
|
|
|
drawPot(street, computedAction, config, canvas, context) |
|
|
|
potAction?.let { drawPot(potAction, config, canvas, context) } |
|
|
|
// val potAction = computedAction ?: config.lastActionBeforeStreet(street) |
|
|
|
|
|
|
|
// potAction?.let { drawPot(potAction, config, canvas, context) } |
|
|
|
|
|
|
|
|
|
|
|
// draw board |
|
|
|
// draw board |
|
|
|
drawBoardCards(street, config, canvas, context) |
|
|
|
drawBoardCards(street, config, canvas, context) |
|
|
|
@ -129,9 +157,12 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
|
|
|
|
|
|
|
|
when (config.currentStep) { |
|
|
|
when (config.currentStep) { |
|
|
|
is Street -> { // animate chips |
|
|
|
is Street -> { // animate chips |
|
|
|
if (config.lastChipCommittingActionOfPlayer(i) != null) { |
|
|
|
if (!config.isLastFrame) { |
|
|
|
|
|
|
|
lastCommitedAmount(i, config)?.let { amount -> |
|
|
|
|
|
|
|
val color = colorForAmount(amount) |
|
|
|
val circle = config.animatedChipCircle(i) |
|
|
|
val circle = config.animatedChipCircle(i) |
|
|
|
drawChipCircle(circle, canvas, context) |
|
|
|
drawChipCircle(circle, color, canvas, context) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
is ComputedAction -> { |
|
|
|
is ComputedAction -> { |
|
|
|
@ -142,22 +173,33 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private fun drawChipForAction(i: Int, config: ReplayerConfiguration, canvas: Canvas, context: Context) { |
|
|
|
private fun drawChipForAction(i: Int, config: ReplayerConfiguration, canvas: Canvas, context: Context) { |
|
|
|
|
|
|
|
lastCommitedAmount(i, config)?.let { amount -> |
|
|
|
config.lastChipCommittingActionOfPlayer(i)?.let { action -> |
|
|
|
drawChip(amount, i, config, canvas, context) |
|
|
|
when { |
|
|
|
|
|
|
|
action.action.type?.isSignificant == true -> { |
|
|
|
|
|
|
|
action.action.amount?.let { amount -> |
|
|
|
|
|
|
|
drawChip(amount, action.positionIndex, config, canvas, context) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
action.action.type?.isCall == true -> { |
|
|
|
|
|
|
|
action.getStreetLastSignificantAction()?.action?.amount?.let { amount -> |
|
|
|
// config.lastChipCommittingActionOfPlayer(i)?.let { action -> |
|
|
|
drawChip(amount, action.positionIndex, config, canvas, context) |
|
|
|
// when { |
|
|
|
} |
|
|
|
// action.action.type?.isSignificant == true -> { |
|
|
|
} |
|
|
|
// action.action.amount?.let { amount -> |
|
|
|
else -> {} |
|
|
|
// drawChip(amount, action.positionIndex, config, canvas, context) |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// action.action.type?.isCall == true -> { |
|
|
|
|
|
|
|
// action.getStreetLastSignificantAction()?.action?.amount?.let { amount -> |
|
|
|
|
|
|
|
// drawChip(amount, action.positionIndex, config, canvas, context) |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// else -> {} |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// } |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun lastCommitedAmount(i: Int, config: ReplayerConfiguration): Double? { |
|
|
|
|
|
|
|
var committingAction = config.lastChipCommittingActionOfPlayer(i) |
|
|
|
|
|
|
|
if (committingAction?.action?.type?.isCall == true) { |
|
|
|
|
|
|
|
committingAction = committingAction.getStreetLastSignificantAction() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return committingAction?.action?.amount |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/*** |
|
|
|
/*** |
|
|
|
@ -200,7 +242,8 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
|
|
|
|
|
|
|
|
private fun drawChip(amount: Double, chipText: ReplayerConfiguration.TextPoint, chipCircle: ReplayerConfiguration.Circle, canvas: Canvas, context: Context) { |
|
|
|
private fun drawChip(amount: Double, chipText: ReplayerConfiguration.TextPoint, chipCircle: ReplayerConfiguration.Circle, canvas: Canvas, context: Context) { |
|
|
|
|
|
|
|
|
|
|
|
drawChipCircle(chipCircle, canvas, context) |
|
|
|
val color = colorForAmount(amount) |
|
|
|
|
|
|
|
drawChipCircle(chipCircle, color, canvas, context) |
|
|
|
|
|
|
|
|
|
|
|
this.textPaint.textSize = chipText.fontSize |
|
|
|
this.textPaint.textSize = chipText.fontSize |
|
|
|
this.textPaint.color = context.getColor(R.color.white) |
|
|
|
this.textPaint.color = context.getColor(R.color.white) |
|
|
|
@ -208,11 +251,21 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private fun drawChipCircle(chipCircle: ReplayerConfiguration.Circle, canvas: Canvas, context: Context) { |
|
|
|
private fun colorForAmount(amount: Double): ChipColor { |
|
|
|
|
|
|
|
|
|
|
|
this.fillPaint.color = context.getColor(R.color.green) |
|
|
|
this.colorsByAmount[amount]?.let { return it } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val index = this.colorsByAmount.size % ChipColor.all.size |
|
|
|
|
|
|
|
val color = ChipColor.all[index] |
|
|
|
|
|
|
|
this.colorsByAmount[amount] = color |
|
|
|
|
|
|
|
return color |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun drawChipCircle(chipCircle: ReplayerConfiguration.Circle, chipColor: ChipColor, canvas: Canvas, context: Context) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.fillPaint.color = context.getColor(chipColor.fillColor) |
|
|
|
canvas.drawCircle(chipCircle.x, chipCircle.y, chipCircle.radius, this.fillPaint) |
|
|
|
canvas.drawCircle(chipCircle.x, chipCircle.y, chipCircle.radius, this.fillPaint) |
|
|
|
this.chipBorderPaint.color = context.getColor(R.color.white) |
|
|
|
this.chipBorderPaint.color = context.getColor(chipColor.borderColor) |
|
|
|
val chipBorderStrokeWidth = chipCircle.radius / 3f |
|
|
|
val chipBorderStrokeWidth = chipCircle.radius / 3f |
|
|
|
this.chipBorderPaint.strokeWidth = chipBorderStrokeWidth |
|
|
|
this.chipBorderPaint.strokeWidth = chipBorderStrokeWidth |
|
|
|
|
|
|
|
|
|
|
|
@ -363,6 +416,9 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
|
|
|
|
|
|
|
|
private fun drawBoardCards(street: Street, config: ReplayerConfiguration, canvas: Canvas, context: Context) { |
|
|
|
private fun drawBoardCards(street: Street, config: ReplayerConfiguration, canvas: Canvas, context: Context) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// when the step is the street, we wait for the last frame to display the board |
|
|
|
|
|
|
|
if ((config.currentStep == street && config.isLastFrame) || config.currentStep != street) { |
|
|
|
|
|
|
|
|
|
|
|
val cards = config.handHistory.cardsForStreet(street) |
|
|
|
val cards = config.handHistory.cardsForStreet(street) |
|
|
|
config.boardCardRects.take(street.totalBoardCards).forEachIndexed { index, rectF -> |
|
|
|
config.boardCardRects.take(street.totalBoardCards).forEachIndexed { index, rectF -> |
|
|
|
drawCard(cards[index], rectF, config, canvas, context) |
|
|
|
drawCard(cards[index], rectF, config, canvas, context) |
|
|
|
@ -370,10 +426,18 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private fun drawPot(action: ComputedAction, config: ReplayerConfiguration, canvas: Canvas, context: Context) { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
val pot = config.actionList.potSizeForStreet(action.street) |
|
|
|
private fun drawPot(street: Street, computedAction: ComputedAction?, config: ReplayerConfiguration, canvas: Canvas, context: Context) { |
|
|
|
val totalPot = config.actionList.totalPotSize(action.action.index + 1) |
|
|
|
|
|
|
|
|
|
|
|
val pot = config.actionList.potSizeForStreet(street) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val action = computedAction ?: config.lastActionBeforeStreet(street) |
|
|
|
|
|
|
|
val totalPot = action?.let { |
|
|
|
|
|
|
|
config.actionList.totalPotSize(it.action.index + 1) |
|
|
|
|
|
|
|
} ?: run { |
|
|
|
|
|
|
|
pot |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
drawChip(pot, config.potTextPoint, config.potChipCircle, canvas, context) |
|
|
|
drawChip(pot, config.potTextPoint, config.potChipCircle, canvas, context) |
|
|
|
val tpTextPoint = config.totalPotTextPoint |
|
|
|
val tpTextPoint = config.totalPotTextPoint |
|
|
|
|