|
|
|
|
@ -197,7 +197,7 @@ class Calculator { |
|
|
|
|
var tWinningSessionCount = 0 |
|
|
|
|
var tBuyinSum = 0.0 |
|
|
|
|
var tHands = 0.0 |
|
|
|
|
var winStreak = 0; var loseStreak = 0; var currentStreak = 0 |
|
|
|
|
var longestWinStreak = 0; var longestLoseStreak = 0; var currentStreak = 0 |
|
|
|
|
|
|
|
|
|
computables.forEach { computable -> |
|
|
|
|
index++ |
|
|
|
|
@ -208,20 +208,19 @@ class Calculator { |
|
|
|
|
tBuyinSum += computable.ratedBuyin |
|
|
|
|
tHands += computable.estimatedHands |
|
|
|
|
|
|
|
|
|
if (computable.isPositive == 1) { |
|
|
|
|
if (currentStreak >= 0) { |
|
|
|
|
if (computable.isPositive == 1) { // positive result |
|
|
|
|
if (currentStreak >= 0) { // currently positive streak |
|
|
|
|
currentStreak++ |
|
|
|
|
} else { |
|
|
|
|
} else { // currently negative streak |
|
|
|
|
longestLoseStreak = min(longestLoseStreak, currentStreak) |
|
|
|
|
currentStreak = 1 |
|
|
|
|
loseStreak = min(loseStreak, currentStreak) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (computable.isPositive == 0) { |
|
|
|
|
if (currentStreak <= 0) { |
|
|
|
|
} else { // negative result |
|
|
|
|
if (currentStreak <= 0) { // currently negative streak |
|
|
|
|
currentStreak-- |
|
|
|
|
} else { |
|
|
|
|
} else { // currently positive streak |
|
|
|
|
longestWinStreak = max(longestWinStreak, currentStreak) |
|
|
|
|
currentStreak = -1 |
|
|
|
|
winStreak = max(winStreak, currentStreak) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -249,12 +248,13 @@ class Calculator { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (currentStreak >= 0) { |
|
|
|
|
winStreak = max(winStreak, currentStreak) |
|
|
|
|
longestWinStreak = max(longestWinStreak, currentStreak) |
|
|
|
|
} else { |
|
|
|
|
loseStreak = min(loseStreak, currentStreak) |
|
|
|
|
longestLoseStreak = min(longestLoseStreak, currentStreak) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
results.addStat(LONGEST_STREAKS, winStreak.toDouble(), loseStreak.toDouble()) |
|
|
|
|
// loseStreak is negative and we want it positive |
|
|
|
|
results.addStat(LONGEST_STREAKS, longestWinStreak.toDouble(), -longestLoseStreak.toDouble()) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -271,90 +271,88 @@ class Calculator { |
|
|
|
|
val hourlyRate = gSum / gHourlyDuration |
|
|
|
|
// var bbHourlyRate = gBBSum / gDuration |
|
|
|
|
|
|
|
|
|
when (options.evolutionValues) { |
|
|
|
|
Options.EvolutionValues.STANDARD, Options.EvolutionValues.TIMED -> { |
|
|
|
|
|
|
|
|
|
var tHourlyDuration = 0.0 |
|
|
|
|
var tIndex = 0 |
|
|
|
|
var tSum = 0.0 |
|
|
|
|
var tTotalHands = 0.0 |
|
|
|
|
var tBBSum = 0.0 |
|
|
|
|
var tHourlyRate = 0.0 |
|
|
|
|
var tHourlyRateBB = 0.0 |
|
|
|
|
val daysSet = mutableSetOf<Date>() |
|
|
|
|
|
|
|
|
|
sessionSets.forEach { sessionSet -> |
|
|
|
|
tIndex++ |
|
|
|
|
tHourlyDuration += sessionSet.hourlyDuration |
|
|
|
|
tSum += sessionSet.ratedNet |
|
|
|
|
tTotalHands += sessionSet.estimatedHands |
|
|
|
|
tBBSum += sessionSet.bbNet |
|
|
|
|
|
|
|
|
|
tHourlyRate = gSum / tHourlyDuration |
|
|
|
|
tHourlyRateBB = gBBSum / tHourlyDuration |
|
|
|
|
daysSet.add(sessionSet.startDate.startOfDay()) |
|
|
|
|
|
|
|
|
|
when (options.evolutionValues) { |
|
|
|
|
Options.EvolutionValues.STANDARD -> { |
|
|
|
|
results.addEvolutionValue(tHourlyRate, stat = HOURLY_RATE, data = sessionSet) |
|
|
|
|
results.addEvolutionValue(tIndex.toDouble(), stat = NUMBER_OF_SETS, data = sessionSet) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
sessionSet.netDuration.toDouble(), |
|
|
|
|
stat = DURATION, |
|
|
|
|
data = sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
tHourlyDuration / tIndex, |
|
|
|
|
stat = AVERAGE_DURATION, |
|
|
|
|
data = sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue(tHourlyRateBB, stat = HOURLY_RATE_BB, data = sessionSet) |
|
|
|
|
val computeDaysPlayed = options.displayedStats.contains(DAYS_PLAYED) |
|
|
|
|
val shouldIterateOverSets = (options.evolutionValues != Options.EvolutionValues.NONE || computeDaysPlayed) |
|
|
|
|
|
|
|
|
|
Stat.netBBPer100Hands(gBBSum, gTotalHands)?.let { netBB100 -> |
|
|
|
|
results.addEvolutionValue(netBB100, stat = NET_BB_PER_100_HANDS, data = sessionSet) |
|
|
|
|
} |
|
|
|
|
if (computeDaysPlayed) { |
|
|
|
|
|
|
|
|
|
var tHourlyDuration = 0.0 |
|
|
|
|
var tIndex = 0 |
|
|
|
|
var tSum = 0.0 |
|
|
|
|
var tTotalHands = 0.0 |
|
|
|
|
var tBBSum = 0.0 |
|
|
|
|
var tHourlyRate = 0.0 |
|
|
|
|
var tHourlyRateBB = 0.0 |
|
|
|
|
val daysSet = mutableSetOf<Date>() |
|
|
|
|
|
|
|
|
|
sessionSets.forEach { sessionSet -> |
|
|
|
|
tIndex++ |
|
|
|
|
tHourlyDuration += sessionSet.hourlyDuration |
|
|
|
|
tSum += sessionSet.ratedNet |
|
|
|
|
tTotalHands += sessionSet.estimatedHands |
|
|
|
|
tBBSum += sessionSet.bbNet |
|
|
|
|
|
|
|
|
|
tHourlyRate = gSum / tHourlyDuration |
|
|
|
|
tHourlyRateBB = gBBSum / tHourlyDuration |
|
|
|
|
daysSet.add(sessionSet.startDate.startOfDay()) |
|
|
|
|
|
|
|
|
|
when (options.evolutionValues) { |
|
|
|
|
Options.EvolutionValues.STANDARD -> { |
|
|
|
|
results.addEvolutionValue(tHourlyRate, stat = HOURLY_RATE, data = sessionSet) |
|
|
|
|
results.addEvolutionValue(tIndex.toDouble(), stat = NUMBER_OF_SETS, data = sessionSet) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
sessionSet.netDuration.toDouble(), |
|
|
|
|
stat = DURATION, |
|
|
|
|
data = sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
tHourlyDuration / tIndex, |
|
|
|
|
stat = AVERAGE_DURATION, |
|
|
|
|
data = sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue(tHourlyRateBB, stat = HOURLY_RATE_BB, data = sessionSet) |
|
|
|
|
|
|
|
|
|
Stat.netBBPer100Hands(gBBSum, gTotalHands)?.let { netBB100 -> |
|
|
|
|
results.addEvolutionValue(netBB100, stat = NET_BB_PER_100_HANDS, data = sessionSet) |
|
|
|
|
} |
|
|
|
|
Options.EvolutionValues.TIMED -> { |
|
|
|
|
results.addEvolutionValue(tSum, tHourlyDuration, NETRESULT, sessionSet) |
|
|
|
|
results.addEvolutionValue(tHourlyRate, tHourlyDuration, HOURLY_RATE, sessionSet) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
tIndex.toDouble(), |
|
|
|
|
tHourlyDuration, |
|
|
|
|
NUMBER_OF_SETS, |
|
|
|
|
sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
sessionSet.netDuration.toDouble(), |
|
|
|
|
tHourlyDuration, |
|
|
|
|
DURATION, |
|
|
|
|
sessionSet |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
Options.EvolutionValues.TIMED -> { |
|
|
|
|
results.addEvolutionValue(tSum, tHourlyDuration, NETRESULT, sessionSet) |
|
|
|
|
results.addEvolutionValue(tHourlyRate, tHourlyDuration, HOURLY_RATE, sessionSet) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
tIndex.toDouble(), |
|
|
|
|
tHourlyDuration, |
|
|
|
|
NUMBER_OF_SETS, |
|
|
|
|
sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
sessionSet.netDuration.toDouble(), |
|
|
|
|
tHourlyDuration, |
|
|
|
|
DURATION, |
|
|
|
|
sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
tHourlyDuration / tIndex, |
|
|
|
|
tHourlyDuration, |
|
|
|
|
AVERAGE_DURATION, |
|
|
|
|
sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue(tHourlyRateBB, tHourlyDuration, HOURLY_RATE_BB, sessionSet) |
|
|
|
|
|
|
|
|
|
Stat.netBBPer100Hands(gBBSum, gTotalHands)?.let { netBB100 -> |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
tHourlyDuration / tIndex, |
|
|
|
|
netBB100, |
|
|
|
|
tHourlyDuration, |
|
|
|
|
AVERAGE_DURATION, |
|
|
|
|
NET_BB_PER_100_HANDS, |
|
|
|
|
sessionSet |
|
|
|
|
) |
|
|
|
|
results.addEvolutionValue(tHourlyRateBB, tHourlyDuration, HOURLY_RATE_BB, sessionSet) |
|
|
|
|
|
|
|
|
|
Stat.netBBPer100Hands(gBBSum, gTotalHands)?.let { netBB100 -> |
|
|
|
|
results.addEvolutionValue( |
|
|
|
|
netBB100, |
|
|
|
|
tHourlyDuration, |
|
|
|
|
NET_BB_PER_100_HANDS, |
|
|
|
|
sessionSet |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
results.addStat(DAYS_PLAYED, daysSet.size.toDouble()) |
|
|
|
|
results.addStat(DAYS_PLAYED, daysSet.size.toDouble()) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else -> { |
|
|
|
|
// nothing |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|