You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
poker-analytics/app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt

97 lines
2.3 KiB

package net.pokeranalytics.android.calculus
import android.content.Context
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.RowViewType
interface AnyStat {
}
enum class Stat : AnyStat, DynamicRowInterface {
NETRESULT,
HOURLY_RATE,
AVERAGE,
NUMBER_OF_GROUPS,
NUMBER_OF_GAMES,
DURATION,
AVERAGE_DURATION,
NET_BB_PER_100_HANDS,
HOURLY_RATE_BB,
AVERAGE_NET_BB,
WIN_RATIO,
AVERAGE_BUYIN,
ROI,
STANDARD_DEVIATION,
STANDARD_DEVIATION_HOURLY,
STANDARD_DEVIATION_BB_PER_100_HANDS,
HANDS_PLAYED;
fun label() : String = when (this) {
NETRESULT -> ""
HOURLY_RATE -> ""
else -> throw IllegalArgumentException("Label not defined")
}
fun hasDistributionSorting() : Boolean {
when (this) {
STANDARD_DEVIATION, STANDARD_DEVIATION_HOURLY, STANDARD_DEVIATION_BB_PER_100_HANDS -> return true
else -> return false
}
}
companion object {
fun returnOnInvestment(netResult: Double, buyin: Double) : Double {
return netResult / buyin
}
fun netBBPer100Hands(netBB: Double, numberOfHands: Double) : Double {
return netBB / numberOfHands * 100
}
}
override fun localizedTitle(context: Context): String {
return "Test"
}
override val viewType: Int = RowViewType.TITLE_VALUE.ordinal
}
enum class CashSessionStat : AnyStat {
NETBB,
AVERAGEBB
}
class ComputedStat(stat: Stat, value: Double) {
constructor(stat: Stat, value: Double, previousValue: Double?) : this(stat, value) {
if (previousValue != null) {
this.variation = (value - previousValue) / previousValue
}
}
// The statistic type
var stat: Stat = stat
// The stat value
var value: Double = value
// The variation of the stat
var variation: Double? = null
// The data points leading to the current stat value
// var points: List<Point> = mutableListOf()
// Formats the value of the stat to be suitable for display
fun format() : StatFormat {
return StatFormat()
}
fun evolutionValueFormat(index: Int) : StatFormat {
return StatFormat()
}
}