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.
97 lines
2.3 KiB
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()
|
|
}
|
|
|
|
}
|
|
|