Fixes straddle position bug + display

hh
Laurent 6 years ago
parent cc2a7fbbec
commit 3ceba43ded
  1. 8
      app/src/main/java/net/pokeranalytics/android/model/handhistory/HandSetup.kt
  2. 10
      app/src/main/java/net/pokeranalytics/android/model/handhistory/Position.kt
  3. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt
  4. 7
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt
  5. 19
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistorySettings.kt
  6. 1
      app/src/main/res/layout/row_hhsettings_blinds.xml
  7. 9
      app/src/main/res/layout/row_hhsettings_straddle.xml

@ -1,6 +1,7 @@
package net.pokeranalytics.android.model.handhistory
import net.pokeranalytics.android.model.realm.Game
import timber.log.Timber
import java.util.*
class HandSetup {
@ -17,7 +18,8 @@ class HandSetup {
var game: Game? = null
var straddlePositions: SortedSet<Position> = sortedSetOf()
var straddlePositions: MutableList<Position> = mutableListOf()
private set
fun clearStraddles() {
this.straddlePositions.clear()
@ -35,7 +37,9 @@ class HandSetup {
if (positions.contains(Position.BUT) && firstStraddlePosition != Position.UTG) {
sortedPosition = sortedPosition.reversed()
}
this.straddlePositions = sortedPosition.toSortedSet()
Timber.d("sortedPosition = $sortedPosition")
this.straddlePositions = sortedPosition.toMutableList()
Timber.d("this.straddlePositions = ${this.straddlePositions}")
}
}

@ -36,6 +36,16 @@ enum class Position(var value: String) : RowRepresentable {
}
val shortValue: String
get() {
return when (this) {
UTG1 -> "+1"
UTG2 -> "+2"
UTG3 -> "+3"
else -> this.value
}
}
override fun getDisplayName(context: Context): String {
return this.value
}

@ -13,7 +13,6 @@ import net.pokeranalytics.android.model.interfaces.TimeFilterable
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.modules.handhistory.views.CardHolder
import net.pokeranalytics.android.ui.view.RowRepresentable
import timber.log.Timber
import java.util.*
open class HandHistory : RealmObject(), RowRepresentable, Identifiable, Filterable, TimeFilterable, CardHolder {
@ -61,7 +60,7 @@ open class HandHistory : RealmObject(), RowRepresentable, Identifiable, Filterab
/***
* Number of players in the hand
*/
var numberOfPlayers: Int = 4
var numberOfPlayers: Int = 10
/***
* Number of players in the hand
@ -113,7 +112,6 @@ open class HandHistory : RealmObject(), RowRepresentable, Identifiable, Filterab
val positions = Position.positionsPerPlayers(this.numberOfPlayers)
Timber.d("noa 1 = ${this.actions.size}")
var lastStraddler: Int? = null
handSetup.straddlePositions.forEach { position -> // position are sorted here
@ -121,7 +119,6 @@ open class HandHistory : RealmObject(), RowRepresentable, Identifiable, Filterab
this.addAction(positionIndex, Action.Type.STRADDLE)
lastStraddler = positionIndex
}
Timber.d("noa 2 = ${this.actions.size}")
val totalActions = this.actions.size
val startingPosition = lastStraddler?.let { it + 1 } ?: totalActions
@ -129,7 +126,6 @@ open class HandHistory : RealmObject(), RowRepresentable, Identifiable, Filterab
for (i in 0 until this.numberOfPlayers) {
this.addAction((startingPosition + i) % this.numberOfPlayers)
}
Timber.d("noa 3 = ${this.actions.size}")
}

@ -393,16 +393,17 @@ class HandHistoryAdapter(
val chip = Chip(itemView.context)
chip.id = View.generateViewId()
// chip.tag = filter.id
chip.text = pos.value
chip.text = pos.shortValue
chip.chipStartPadding = 8f.px
chip.chipEndPadding = 8f.px
chip.isChecked = straddleRow.selectedPositions.contains(pos)
chip.setOnClickListener {
if (chip.isChecked) {
straddleRow.selectedPositions.add(pos)
val added = straddleRow.add(pos)
chip.isChecked = added
} else {
straddleRow.selectedPositions.remove(pos)
straddleRow.remove(pos)
}
adapter.delegate?.onRowValueChanged(straddleRow.selectedPositions, row)
}

@ -18,4 +18,23 @@ class StraddleRowRepresentable(
override val viewType: Int = HandRowType.STRADDLE.ordinal
/***
* Tries to add a position if the position is next to another
*/
fun add(position: Position): Boolean {
val canAdd = this.selectedPositions.isEmpty()
|| this.selectedPositions.any { it.ordinal == position.ordinal + 1 || it.ordinal == position.ordinal - 1 }
if (canAdd) {
this.selectedPositions.add(position)
}
return canAdd
}
fun remove(position: Position) {
this.selectedPositions.remove(position)
}
}

@ -37,6 +37,7 @@
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/bbAnteSwitch"
android:layout_width="0dp"
android:textColorHint="@color/white"
android:hint="@string/ante"
android:layout_weight="1"
android:layout_height="wrap_content"

@ -8,10 +8,9 @@
<com.google.android.material.chip.ChipGroup
android:id="@+id/positionsChipGroup"
android:layout_width="match_parent"
android:layout_height="44dp"
app:chipSpacing="8dp"
app:singleSelection="true">
</com.google.android.material.chip.ChipGroup>
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
app:chipSpacing="4dp"/>
</LinearLayout>
Loading…
Cancel
Save