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