parent
4b2638a1dc
commit
71b633c259
@ -0,0 +1,73 @@ |
|||||||
|
package net.pokeranalytics.android.ui.modules.handhistory.model |
||||||
|
|
||||||
|
import io.realm.Realm |
||||||
|
import net.pokeranalytics.android.exceptions.PAIllegalStateException |
||||||
|
import net.pokeranalytics.android.model.handhistory.Street |
||||||
|
import net.pokeranalytics.android.model.realm.handhistory.Card |
||||||
|
import net.pokeranalytics.android.model.realm.handhistory.HandHistory |
||||||
|
import net.pokeranalytics.android.ui.modules.handhistory.HandRowType |
||||||
|
|
||||||
|
|
||||||
|
class StreetCardsRow(var street: Street, var handHistory: HandHistory) : CardsRow() { |
||||||
|
|
||||||
|
override val viewType: Int = HandRowType.STREET.ordinal |
||||||
|
|
||||||
|
override val cardHolder: CardHolder? |
||||||
|
get() { return this.handHistory } |
||||||
|
|
||||||
|
override fun createHolder() { |
||||||
|
throw PAIllegalStateException("This cannot happen") |
||||||
|
} |
||||||
|
|
||||||
|
override fun tagsForCompletion(): List<Int> { |
||||||
|
return when (this.street) { |
||||||
|
Street.PREFLOP -> listOf() |
||||||
|
Street.FLOP -> listOf(Street.FLOP.ordinal) |
||||||
|
Street.TURN -> listOf(Street.FLOP.ordinal, Street.TURN.ordinal) |
||||||
|
Street.RIVER, Street.SUMMARY -> listOf(Street.FLOP.ordinal, Street.TURN.ordinal, Street.RIVER.ordinal) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun cardLimit() : Int { |
||||||
|
return this.street.totalBoardCards |
||||||
|
} |
||||||
|
|
||||||
|
override val realmInstance: Realm |
||||||
|
get() { return this.handHistory.realm } |
||||||
|
|
||||||
|
override fun lastCard(): Card? { |
||||||
|
return when (this.street) { |
||||||
|
Street.SUMMARY -> this.cardHolder?.cards?.lastOrNull() |
||||||
|
else -> this.handHistory.cards.lastOrNull { it.street == this.street } |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun clear() { |
||||||
|
when (this.street) { |
||||||
|
Street.SUMMARY -> this.cardHolder?.cards?.clear() |
||||||
|
else -> this.handHistory.cards.removeAll { it.street == this.street } |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun isFieldNeedsInput(tag: Int, handHistory: HandHistory): Boolean { |
||||||
|
val street = Street.values()[tag] |
||||||
|
return this.cardCount < street.totalBoardCards || this.handHistory.cards.elementAtOrNull(street.totalBoardCards - 1)?.suit == null |
||||||
|
} |
||||||
|
|
||||||
|
fun cardsForTag(tag: Int): List<Card>? { |
||||||
|
this.handHistory.cards.let { cards -> |
||||||
|
return when (tag) { |
||||||
|
Street.PREFLOP.ordinal -> listOf() |
||||||
|
Street.FLOP.ordinal -> cards.take(3) |
||||||
|
Street.TURN.ordinal -> { |
||||||
|
if (cards.size > 3) { listOf(cards[3]!!) } else { null } |
||||||
|
} |
||||||
|
Street.RIVER.ordinal -> { |
||||||
|
if (cards.size > 4) { listOf(cards[4]!!) } else { null } |
||||||
|
} |
||||||
|
else -> throw PAIllegalStateException("unmanaged tag $tag") |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
Loading…
Reference in new issue