|
|
|
@ -94,16 +94,12 @@ class Calculator { |
|
|
|
|
|
|
|
|
|
|
|
var results: ComputedResults = ComputedResults(sessionGroup) |
|
|
|
var results: ComputedResults = ComputedResults(sessionGroup) |
|
|
|
|
|
|
|
|
|
|
|
if (sessions.size == 0) { |
|
|
|
|
|
|
|
return results |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var sum: Double = 0.0 |
|
|
|
var sum: Double = 0.0 |
|
|
|
var totalHands: Double = 0.0 |
|
|
|
var totalHands: Double = 0.0 |
|
|
|
var bbSum: Double = 0.0 |
|
|
|
var bbSum: Double = 0.0 |
|
|
|
var bbSessionCount: Int = 0 |
|
|
|
var bbSessionCount: Int = 0 |
|
|
|
var winningSessionCount: Int = 0 |
|
|
|
var winningSessionCount: Int = 0 |
|
|
|
var totalBuyin: Double = 0.0 |
|
|
|
var totalBuyin = 0.0 |
|
|
|
|
|
|
|
|
|
|
|
// Compute for each session |
|
|
|
// Compute for each session |
|
|
|
var index: Int = 0 |
|
|
|
var index: Int = 0 |
|
|
|
@ -125,10 +121,19 @@ class Calculator { |
|
|
|
results.addEvolutionValue(sum / index, AVERAGE) |
|
|
|
results.addEvolutionValue(sum / index, AVERAGE) |
|
|
|
results.addEvolutionValue(index.toDouble(), NUMBER_OF_GAMES) |
|
|
|
results.addEvolutionValue(index.toDouble(), NUMBER_OF_GAMES) |
|
|
|
results.addEvolutionValue(bbSum / bbSessionCount, AVERAGE_NET_BB) |
|
|
|
results.addEvolutionValue(bbSum / bbSessionCount, AVERAGE_NET_BB) |
|
|
|
results.addEvolutionValue(Stat.netBBPer100Hands(bbSum, totalHands), NET_BB_PER_100_HANDS) |
|
|
|
|
|
|
|
results.addEvolutionValue((winningSessionCount / index).toDouble(), WIN_RATIO) |
|
|
|
results.addEvolutionValue((winningSessionCount / index).toDouble(), WIN_RATIO) |
|
|
|
results.addEvolutionValue(totalBuyin / index, AVERAGE_BUYIN) |
|
|
|
results.addEvolutionValue(totalBuyin / index, AVERAGE_BUYIN) |
|
|
|
results.addEvolutionValue(Stat.returnOnInvestment(sum, totalBuyin), ROI) |
|
|
|
|
|
|
|
|
|
|
|
val netBB100 = Stat.netBBPer100Hands(bbSum, totalHands) |
|
|
|
|
|
|
|
if (netBB100 != null) { |
|
|
|
|
|
|
|
results.addEvolutionValue(netBB100, NET_BB_PER_100_HANDS) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val roi = Stat.returnOnInvestment(sum, totalBuyin) |
|
|
|
|
|
|
|
if (roi != null) { |
|
|
|
|
|
|
|
results.addEvolutionValue(roi, ROI) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
@ -152,36 +157,59 @@ class Calculator { |
|
|
|
if (options.evolutionValues == Options.EvolutionValues.DATED) { |
|
|
|
if (options.evolutionValues == Options.EvolutionValues.DATED) { |
|
|
|
results.addEvolutionValue(gSum, duration, NETRESULT) |
|
|
|
results.addEvolutionValue(gSum, duration, NETRESULT) |
|
|
|
results.addEvolutionValue(gSum / duration, duration, HOURLY_RATE) |
|
|
|
results.addEvolutionValue(gSum / duration, duration, HOURLY_RATE) |
|
|
|
results.addEvolutionValue(Stat.netBBPer100Hands(gBBSum, gTotalHands), duration, NET_BB_PER_100_HANDS) |
|
|
|
|
|
|
|
results.addEvolutionValue(hourlyRate, duration, HOURLY_RATE) |
|
|
|
results.addEvolutionValue(hourlyRate, duration, HOURLY_RATE) |
|
|
|
results.addEvolutionValue(gIndex.toDouble(), duration, NUMBER_OF_SETS) |
|
|
|
results.addEvolutionValue(gIndex.toDouble(), duration, NUMBER_OF_SETS) |
|
|
|
results.addEvolutionValue(sessionSet.duration.toDouble(), duration, DURATION) |
|
|
|
results.addEvolutionValue(sessionSet.duration.toDouble(), duration, DURATION) |
|
|
|
results.addEvolutionValue(duration / gIndex, duration, AVERAGE_DURATION) |
|
|
|
results.addEvolutionValue(duration / gIndex, duration, AVERAGE_DURATION) |
|
|
|
results.addEvolutionValue(hourlyRateBB, duration, HOURLY_RATE_BB) |
|
|
|
results.addEvolutionValue(hourlyRateBB, duration, HOURLY_RATE_BB) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val netBB100 = Stat.netBBPer100Hands(gBBSum, gTotalHands) |
|
|
|
|
|
|
|
if (netBB100 != null) { |
|
|
|
|
|
|
|
results.addEvolutionValue(netBB100, duration, NET_BB_PER_100_HANDS) |
|
|
|
|
|
|
|
} else { //@todo maybe not |
|
|
|
|
|
|
|
results.addEvolutionValue(0.0, duration, NET_BB_PER_100_HANDS) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
val average: Double = sum / sessions.size.toDouble() |
|
|
|
var average = 0.0 |
|
|
|
|
|
|
|
if (sessions.size > 0) { |
|
|
|
|
|
|
|
average = sum / sessions.size.toDouble() |
|
|
|
|
|
|
|
val avgDuration = duration / sessions.size |
|
|
|
|
|
|
|
val winRatio = (winningSessionCount / sessions.size).toDouble() |
|
|
|
|
|
|
|
val avgBuyin = totalBuyin / sessions.size |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
results.addStats(setOf( |
|
|
|
|
|
|
|
ComputedStat(AVERAGE, average), |
|
|
|
|
|
|
|
ComputedStat(AVERAGE_DURATION, avgDuration), |
|
|
|
|
|
|
|
ComputedStat(WIN_RATIO, winRatio), |
|
|
|
|
|
|
|
ComputedStat(AVERAGE_BUYIN, avgBuyin) |
|
|
|
|
|
|
|
)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Create stats |
|
|
|
// Create stats |
|
|
|
results.addStats(setOf( |
|
|
|
results.addStats(setOf( |
|
|
|
ComputedStat(NETRESULT, sum), |
|
|
|
ComputedStat(NETRESULT, sum), |
|
|
|
ComputedStat(HOURLY_RATE, hourlyRate), |
|
|
|
ComputedStat(HOURLY_RATE, hourlyRate), |
|
|
|
ComputedStat(AVERAGE, average), |
|
|
|
|
|
|
|
ComputedStat(DURATION, duration), |
|
|
|
ComputedStat(DURATION, duration), |
|
|
|
ComputedStat(NUMBER_OF_SETS, sessionSets.size.toDouble()), |
|
|
|
ComputedStat(NUMBER_OF_SETS, sessionSets.size.toDouble()), |
|
|
|
ComputedStat(NUMBER_OF_GAMES, sessions.size.toDouble()), |
|
|
|
ComputedStat(NUMBER_OF_GAMES, sessions.size.toDouble()), |
|
|
|
ComputedStat(AVERAGE_DURATION, duration / sessions.size), |
|
|
|
|
|
|
|
ComputedStat(NET_BB_PER_100_HANDS, Stat.netBBPer100Hands(bbSum, totalHands)), |
|
|
|
|
|
|
|
ComputedStat(HOURLY_RATE_BB, bbSum / duration), |
|
|
|
ComputedStat(HOURLY_RATE_BB, bbSum / duration), |
|
|
|
ComputedStat(AVERAGE_NET_BB, bbSum / bbSessionCount), |
|
|
|
ComputedStat(AVERAGE_NET_BB, bbSum / bbSessionCount), |
|
|
|
ComputedStat(WIN_RATIO, (winningSessionCount / sessions.size).toDouble()), |
|
|
|
|
|
|
|
ComputedStat(AVERAGE_BUYIN, totalBuyin / sessions.size), |
|
|
|
|
|
|
|
ComputedStat(ROI, Stat.returnOnInvestment(sum, totalBuyin)), |
|
|
|
|
|
|
|
ComputedStat(HANDS_PLAYED, totalHands) |
|
|
|
ComputedStat(HANDS_PLAYED, totalHands) |
|
|
|
|
|
|
|
|
|
|
|
)) |
|
|
|
)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val roi = Stat.returnOnInvestment(sum, totalBuyin) |
|
|
|
|
|
|
|
val netBB100 = Stat.netBBPer100Hands(bbSum, totalHands) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (roi != null) { |
|
|
|
|
|
|
|
results.addStats(setOf(ComputedStat(ROI, roi))) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (netBB100 != null) { |
|
|
|
|
|
|
|
results.addStats(setOf(ComputedStat(NET_BB_PER_100_HANDS, netBB100))) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
val bbPer100Hands = bbSum / totalHands * 100 |
|
|
|
val bbPer100Hands = bbSum / totalHands * 100 |
|
|
|
|
|
|
|
|
|
|
|
// Standard Deviation |
|
|
|
// Standard Deviation |
|
|
|
|