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. 22
      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 { companion object {
val undefined: Value = Value(null)
val values: List<Value> by lazy { val values: List<Value> by lazy {
val v = mutableListOf(Value(null)) // null for x val v = mutableListOf(Value(null)) // null for x
(2..14).forEach { v.add(Value(it)) } (2..14).forEach { v.add(Value(it)) }

@ -186,7 +186,7 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL
initKeyboardDefaultHeight() initKeyboardDefaultHeight()
this.keyboard.keyboardListener = this this.keyboard.keyboardListener = this
this.keyboard.setCardCentralizer(this.model) // this.keyboard.setCardCentralizer(this.model)
} }
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { 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? { protected open fun lastCard() : Card? {
return this.cardHolder?.cards?.lastOrNull() return this.cardHolder?.cards?.lastOrNull()
} }

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

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

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

@ -13,7 +13,7 @@ import net.pokeranalytics.android.model.realm.handhistory.Card
interface CardCentralizer { interface CardCentralizer {
fun isValueAvailable(value: Card.Value): Boolean 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) { class KeyboardCardView(context: Context) : AbstractKeyboardView(context) {
@ -70,9 +70,9 @@ class KeyboardCardView(context: Context) : AbstractKeyboardView(context) {
} }
fun setCardCentralizer(centralizer: CardCentralizer) { // fun setCardCentralizer(centralizer: CardCentralizer) {
this.cardValueAdapter.centralizer = centralizer // this.cardValueAdapter.centralizer = centralizer
this.cardSuitAdapter.centralizer = centralizer // this.cardSuitAdapter.centralizer = centralizer
} // }
} }

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