Puts undefined value or suit if not available

hh
Laurent 6 years ago
parent 74da03e7f8
commit 93eebe40b2
  1. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/Card.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt
  3. 13
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/CardsRow.kt
  4. 26
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt
  5. 10
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardSuitAdapter.kt
  6. 10
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/CardValueAdapter.kt
  7. 10
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardCardView.kt
  8. 8
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/views/KeyboardContainer.kt

@ -56,6 +56,8 @@ open class Card : RealmObject() {
companion object {
val undefined: Value = Value(null)
val values: List<Value> by lazy {
val v = mutableListOf(Value(null)) // null for x
(2..14).forEach { v.add(Value(it)) }

@ -186,7 +186,7 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL
initKeyboardDefaultHeight()
this.keyboard.keyboardListener = this
this.keyboard.setCardCentralizer(this.model)
// this.keyboard.setCardCentralizer(this.model)
}
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {

@ -66,6 +66,19 @@ abstract class CardsRow : HandHistoryRow {
}
}
/***
* Returns the card used for setting a selected suit
* = the last if its suit is null, no card otherwise
*/
fun lastCardForSelectedSuit(): Card? {
val lastCard = lastCard()
return if (lastCard?.suit == null) {
lastCard
} else {
null
}
}
protected open fun lastCard() : Card? {
return this.cardHolder?.cards?.lastOrNull()
}

@ -511,9 +511,13 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra
* Adds a card with the selected [value]
*/
fun cardValueSelected(value: Card.Value) {
this.lastValue = value
val row = this.rowRepresentables[this.currentSelection.index] as CardsRow
row.valueSelected(value)
if (isValueAvailable(value)) {
row.valueSelected(value)
} else {
row.valueSelected(Card.Value.undefined)
}
}
/***
@ -523,17 +527,19 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra
fun cardSuitSelected(suit: Card.Suit) {
val row = this.rowRepresentables[this.currentSelection.index] as CardsRow
row.suitSelected(suit)
// TODO do we want to store the information right now ?
val card = row.lastCardForSelectedSuit()
if (card == null || isSuitAvailable(suit, card.value)) {
row.suitSelected(suit)
} else {
row.suitSelected(Card.Suit.UNDEFINED)
}
}
/***
* Deletes all the card of the selected street
*/
fun clearCards() {
this.lastValue = null
// this.lastValue = null
val row = this.rowRepresentables[this.currentSelection.index] as CardsRow
row.clear()
}
@ -602,7 +608,7 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra
/***
* The value of the last chosen card
*/
private var lastValue: Card.Value? = null
// private var lastValue: Card.Value? = null
/***
* Returns true if the card [value] is available
@ -615,8 +621,8 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra
/***
* Returns true if the [suit] is available for the given [value]
*/
override fun isSuitAvailable(suit: Card.Suit, value: Card.Value?): Boolean {
val usedValues = this.usedCards.filter { it.value == value?.value }
override fun isSuitAvailable(suit: Card.Suit, value: Int?): Boolean {
val usedValues = this.usedCards.filter { it.value == value }
return !usedValues.map { it.suit }.contains(suit)
}

@ -21,7 +21,7 @@ class CardSuitAdapter(private var keyboardListener: KeyboardListener) :
override var dataSource: RowRepresentableDataSource = this
override var delegate: RowRepresentableDelegate? = this
var centralizer: CardCentralizer? = null
// var centralizer: CardCentralizer? = null
private val suits = Card.Suit.displaySuits
@ -61,9 +61,9 @@ class CardSuitAdapter(private var keyboardListener: KeyboardListener) :
keyboardListener.cardSuitSelected(this.suits[position])
}
override fun isEnabled(row: RowRepresentable, tag: Int): Boolean {
val suit = row as Card.Suit
return this.centralizer?.isSuitAvailable(suit, null) ?: true
}
// override fun isEnabled(row: RowRepresentable, tag: Int): Boolean {
// val suit = row as Card.Suit
// return this.centralizer?.isSuitAvailable(suit, null) ?: true
// }
}

@ -21,7 +21,7 @@ class CardValueAdapter(var keyboardListener: KeyboardListener) :
override var dataSource: RowRepresentableDataSource = this
override var delegate: RowRepresentableDelegate? = this
var centralizer: CardCentralizer? = null
// var centralizer: CardCentralizer? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val layout = LayoutInflater.from(parent.context).inflate(R.layout.row_cell, parent, false)
@ -59,9 +59,9 @@ class CardValueAdapter(var keyboardListener: KeyboardListener) :
keyboardListener.cardValueSelected(Card.Value.values[position])
}
override fun isEnabled(row: RowRepresentable, tag: Int): Boolean {
val value = row as Card.Value
return this.centralizer?.isValueAvailable(value) ?: true
}
// override fun isEnabled(row: RowRepresentable, tag: Int): Boolean {
// val value = row as Card.Value
// return this.centralizer?.isValueAvailable(value) ?: true
// }
}

@ -13,7 +13,7 @@ import net.pokeranalytics.android.model.realm.handhistory.Card
interface CardCentralizer {
fun isValueAvailable(value: Card.Value): Boolean
fun isSuitAvailable(suit: Card.Suit, value: Card.Value?): Boolean
fun isSuitAvailable(suit: Card.Suit, value: Int?): Boolean
}
class KeyboardCardView(context: Context) : AbstractKeyboardView(context) {
@ -70,9 +70,9 @@ class KeyboardCardView(context: Context) : AbstractKeyboardView(context) {
}
fun setCardCentralizer(centralizer: CardCentralizer) {
this.cardValueAdapter.centralizer = centralizer
this.cardSuitAdapter.centralizer = centralizer
}
// fun setCardCentralizer(centralizer: CardCentralizer) {
// this.cardValueAdapter.centralizer = centralizer
// this.cardSuitAdapter.centralizer = centralizer
// }
}

@ -105,9 +105,9 @@ class KeyboardContainer : FrameLayout {
actionKeyboard.setAvailableActions(availableActions)
}
fun setCardCentralizer(centralizer: CardCentralizer) {
val cardKeyboard = this.keyboards[HHKeyboard.CARD] as KeyboardCardView
cardKeyboard.setCardCentralizer(centralizer)
}
// fun setCardCentralizer(centralizer: CardCentralizer) {
// val cardKeyboard = this.keyboards[HHKeyboard.CARD] as KeyboardCardView
// cardKeyboard.setCardCentralizer(centralizer)
// }
}
Loading…
Cancel
Save