From 37fd11d162a0179d1ccd0449c25cc45e7d88b2a2 Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 15 Jun 2020 13:59:28 +0200 Subject: [PATCH] Fixes issue with stacks + show player as allin --- .../android/PokerAnalyticsApplication.kt | 3 +++ .../android/model/realm/handhistory/Action.kt | 6 +++--- .../model/realm/handhistory/HandHistory.kt | 5 +++++ .../modules/handhistory/HandHistoryAdapter.kt | 3 ++- .../modules/handhistory/model/ActionList.kt | 13 +++++++++--- .../handhistory/model/ActionReadRow.kt | 4 +++- .../handhistory/model/ComputedAction.kt | 2 +- .../replayer/ReplayerConfiguration.kt | 10 ++++++++++ .../handhistory/replayer/TableDrawer.kt | 20 ++++++++++++------- .../main/res/layout/row_hand_action_read.xml | 11 +++++++++- 10 files changed, 60 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 4032bd0c..fa64d55f 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -51,6 +51,7 @@ class PokerAnalyticsApplication : Application() { .build() Realm.setDefaultConfiguration(realmConfiguration) + // val realm = Realm.getDefaultInstance() // realm.executeTransaction { // realm.where(Session::class.java).findAll().deleteAllFromRealm() @@ -76,6 +77,8 @@ class PokerAnalyticsApplication : Application() { if (BuildConfig.DEBUG) { Timber.d("UserPreferences.defaultCurrency: ${UserDefaults.currency.symbol}") + Timber.d("Realm path = ${Realm.getDefaultInstance().path}") + // this.createFakeSessions() } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Action.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Action.kt index 4fd939aa..e09e533d 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Action.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Action.kt @@ -23,13 +23,13 @@ fun List.compact(positions: LinkedHashSet, heroIndex: Int?): L if (it.type == Action.Type.FOLD && rows.lastOrNull()?.action == Action.Type.FOLD) { rows.lastOrNull()?.positions?.add(positions.elementAt(it.position)) } else { - rows.add(it.toReadRow(positions, heroIndex)) + rows.add(it.toReadRow(positions, heroIndex, null)) // TODO stack. The method is used for text export only atm } } return rows } -fun Action.toReadRow(positions: LinkedHashSet, heroIndex: Int?): ActionReadRow { +fun Action.toReadRow(positions: LinkedHashSet, heroIndex: Int?, stack: Double?): ActionReadRow { val pos = positions.elementAt(this.position) val isHero = (heroIndex == this.position) @@ -38,7 +38,7 @@ fun Action.toReadRow(positions: LinkedHashSet, heroIndex: Int?): Actio amount = this.effectiveAmount } - return ActionReadRow(mutableListOf(pos), this.position, this.type, amount, isHero) + return ActionReadRow(mutableListOf(pos), this.position, this.type, amount, stack, isHero) } open class Action : RealmObject() { 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 a9877cd3..575b3b4f 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 @@ -21,6 +21,7 @@ import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.TimeFilterable import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.modules.handhistory.evaluator.EvaluatorBridge +import net.pokeranalytics.android.ui.modules.handhistory.model.ActionList import net.pokeranalytics.android.ui.modules.handhistory.model.ActionReadRow import net.pokeranalytics.android.ui.modules.handhistory.model.CardHolder import net.pokeranalytics.android.ui.view.RowRepresentable @@ -328,6 +329,10 @@ open class HandHistory : RealmObject(), Deletable, RowRepresentable, Filterable, // Actions per street val sortedActions = this.actions.sortedBy { it.index } + +// val actionList = ActionList() +// actionList.load(this) + Street.values().forEach { street -> string = string.addLineReturn(2) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt index 8ff71212..a281f030 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt @@ -428,6 +428,7 @@ class HandHistoryAdapter( init { itemView.player_image_rhar.tag = ActionReadRow.Tag.PLAYER.ordinal + itemView.stackText.tag = ActionReadRow.Tag.STACK.ordinal } override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { @@ -444,7 +445,7 @@ class HandHistoryAdapter( } itemView.amountText.text = actionReadRow.amount?.formatted - + itemView.stackText.text = actionReadRow.stack?.formatted } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ActionList.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ActionList.kt index 0e3d4afc..7bf76b4e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ActionList.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ActionList.kt @@ -5,6 +5,7 @@ import net.pokeranalytics.android.model.handhistory.Position import net.pokeranalytics.android.model.handhistory.Street import net.pokeranalytics.android.model.realm.handhistory.Action import net.pokeranalytics.android.model.realm.handhistory.HandHistory +import timber.log.Timber interface ActionManager { fun selectAction(index: Int, actionType: Action.Type) @@ -53,7 +54,6 @@ class ActionList(var listener: ActionListListener? = null) : ArrayList() val sortedActions = handHistory.actions.sortedBy { it.index } sortedActions.forEach { action -> totalPotSize += action.effectiveAmount @@ -65,9 +65,9 @@ class ActionList(var listener: ActionListListener? = null) : ArrayList> CA: position:${ca.position}, ${ca.action.amount}, ${ca.stackBeforeActing}, ${ca.stackAfterActing}") } - this.addAll(computedActions) // Adds action updateFollowupActions(sortedActions.size - 1) @@ -744,4 +744,11 @@ class ActionList(var listener: ActionListListener? = null) : ArrayList, override var positionIndex: Int, var action: Action.Type?, var amount: Double?, + var stack: Double?, override val isHero: Boolean) : RowRepresentable, PositionalRow { enum class Tag { - PLAYER + PLAYER, + STACK } override val viewType: Int = HandRowType.ACTION_READ.ordinal diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ComputedAction.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ComputedAction.kt index ba9ae32d..063d24b6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ComputedAction.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/ComputedAction.kt @@ -24,7 +24,7 @@ fun List.compact(positions: LinkedHashSet, heroIndex: if (it.action.type == Action.Type.FOLD && rows.lastOrNull()?.action == Action.Type.FOLD) { rows.lastOrNull()?.positions?.add(it.position) } else { - rows.add(it.action.toReadRow(positions, heroIndex)) + rows.add(it.action.toReadRow(positions, heroIndex, it.stackAfterActing)) } } return rows 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 be088c67..676188e5 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 @@ -444,6 +444,16 @@ class ReplayerConfiguration(var handHistory: HandHistory) { this.currentFrame = 0 } + fun isPlayerAllin(playerIndex: Int): Boolean { + this.lastActionAtStep?.action?.index?.let { index -> + return this.actionList.isPlayerAllin(playerIndex, index) + } + return false + } + + /*** + * Returns whether the replayer has finished showing steps & frames or not + */ val isReplayFinished: Boolean get() { return this.currentStepIndex >= this.steps.size - 1 && this.currentFrame >= this.numberOfFramesForCurrentStep - 1 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 c23abe5d..1d50b5c0 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 @@ -136,9 +136,14 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { drawPlayerRectangle(i, true, config, canvas, context) drawAction(i, computedAction, config, canvas, context) } else { - val remainingStack = config.playerRemainingStack(i) + val info = if (config.isPlayerAllin(i)) { + context.getString(R.string.allin) + } else { + val remainingStack = config.playerRemainingStack(i) + remainingStack?.formatted + } drawPlayerRectangle(i, false, config, canvas, context) - drawPositionAndStack(i, remainingStack, config, canvas) + drawPositionAndInfo(i, info, config, canvas) } } @@ -403,7 +408,7 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { } } - private fun drawPositionAndStack(i: Int, stack: Double?, config: ReplayerConfiguration, canvas: Canvas) { + private fun drawPositionAndInfo(i: Int, secondLine: String?, config: ReplayerConfiguration, canvas: Canvas) { val hh = config.handHistory // Player position @@ -414,10 +419,11 @@ class TableDrawer(bitmap: Bitmap) : Canvas(bitmap) { canvas.drawText(name, pnPoint.x, pnPoint.y, this.textPaint) // Player stack - val psPoint = config.pointForPlayerStack(i) - this.textPaint.textSize = psPoint.fontSize - val stackFormatted = stack?.formatted ?: "" - canvas.drawText(stackFormatted, psPoint.x, psPoint.y, this.textPaint) + secondLine?.let { + val psPoint = config.pointForPlayerStack(i) + this.textPaint.textSize = psPoint.fontSize + canvas.drawText(it, psPoint.x, psPoint.y, this.textPaint) + } } diff --git a/app/src/main/res/layout/row_hand_action_read.xml b/app/src/main/res/layout/row_hand_action_read.xml index a797a0f2..a78053d8 100644 --- a/app/src/main/res/layout/row_hand_action_read.xml +++ b/app/src/main/res/layout/row_hand_action_read.xml @@ -53,6 +53,15 @@ - + \ No newline at end of file