some progress?

This commit is contained in:
dan63047 2024-10-30 01:10:19 +03:00
parent ae7d92fcac
commit 5b1a54c59e
4 changed files with 283 additions and 131 deletions

View File

@ -11,6 +11,7 @@ class RecordSingle {
late String replayId;
late String ownId;
late String gamemode;
String? revolution;
late DateTime timestamp;
late ResultsStats stats;
late int rank;
@ -35,6 +36,7 @@ class RecordSingle {
countryRank = cran;
aggregateStats = AggregateStats.fromJson(json['results']['aggregatestats']);
prisecter = Prisecter.fromJson(json['p']);
revolution = json["revolution"];
var ex = json['extras'] as Map<String, dynamic>;
switch (ex.keys.firstOrNull){
case "zenith":

View File

@ -7,6 +7,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:tetra_stats/data_objects/aggregate_stats.dart';
import 'package:tetra_stats/data_objects/record_single.dart';
import 'package:tetra_stats/data_objects/summaries.dart';
import 'package:tetra_stats/data_objects/tetrio_constants.dart';
import 'package:tetra_stats/data_objects/tetrio_player.dart';
@ -143,18 +144,46 @@ class CompareState extends State<CompareView> {
"Key Presses Per Piece",
"Pieces Per Second",
"Key Presses Per Second",
""
// TODO: line clears
// TODO: spins
"Finesse",
"Finesse Faults",
"",
"Quads",
"Triples",
"Doubles",
"Singles",
"",
"T-spins triples",
"T-spins doubles",
"T-spins singles",
"T-spins zeros",
"Mini T-spins doubles",
"Mini T-spins singles",
"Mini T-spins zeros"
],
"Blitz": [
"Score",
"Pieces",
"Lines",
"Level",
"Inputs",
"Key Presses Per Piece",
"Pieces Per Second",
"Key Presses Per Second",
""
"Finesse",
"Finesse Faults",
"",
"Quads",
"Triples",
"Doubles",
"Singles",
"",
"T-spins triples",
"T-spins doubles",
"T-spins singles",
"T-spins zeros",
"Mini T-spins doubles",
"Mini T-spins singles",
"Mini T-spins zeros"
],
"Zen": [
"Score",
@ -184,6 +213,10 @@ class CompareState extends State<CompareView> {
}
addvaluesEntrys(TetrioPlayer p, Summaries s){
RecordSingle? zenithRun = s.zenith != null ? s.zenith : s.zenithCareerBest;
bool oldZenithRun = s.zenith == null;
RecordSingle? zenithExRun = s.zenithEx != null ? s.zenithEx : s.zenithExCareerBest;
bool oldZenithExRun = s.zenithEx == null;
rawValues[0].add([
p.registrationTime,
p.xp,
@ -224,60 +257,60 @@ class CompareState extends State<CompareView> {
]
);
rawValues[2].add([
s.zenith?.stats.zenith?.altitude,
s.zenith?.rank,
s.zenith?.aggregateStats.apm,
s.zenith?.aggregateStats.pps,
s.zenith?.aggregateStats.vs,
s.zenith?.stats.kills,
s.zenith?.stats.topBtB,
s.zenith?.stats.cps,
s.zenith?.stats.zenith?.peakrank,
s.zenith?.stats.finalTime,
s.zenith?.stats.finessePercentage,
zenithRun?.stats.zenith?.altitude,
zenithRun?.rank,
zenithRun?.aggregateStats.apm,
zenithRun?.aggregateStats.pps,
zenithRun?.aggregateStats.vs,
zenithRun?.stats.kills,
zenithRun?.stats.topBtB,
zenithRun?.stats.cps,
zenithRun?.stats.zenith?.peakrank,
zenithRun?.stats.finalTime,
zenithRun?.stats.finessePercentage,
"",
s.zenith?.aggregateStats.nerdStats.app,
s.zenith?.aggregateStats.nerdStats.vsapm,
s.zenith?.aggregateStats.nerdStats.dss,
s.zenith?.aggregateStats.nerdStats.dsp,
s.zenith?.aggregateStats.nerdStats.appdsp,
s.zenith?.aggregateStats.nerdStats.cheese,
s.zenith?.aggregateStats.nerdStats.gbe,
s.zenith?.aggregateStats.nerdStats.nyaapp,
s.zenith?.aggregateStats.nerdStats.area,
zenithRun?.aggregateStats.nerdStats.app,
zenithRun?.aggregateStats.nerdStats.vsapm,
zenithRun?.aggregateStats.nerdStats.dss,
zenithRun?.aggregateStats.nerdStats.dsp,
zenithRun?.aggregateStats.nerdStats.appdsp,
zenithRun?.aggregateStats.nerdStats.cheese,
zenithRun?.aggregateStats.nerdStats.gbe,
zenithRun?.aggregateStats.nerdStats.nyaapp,
zenithRun?.aggregateStats.nerdStats.area,
"",
s.zenith?.aggregateStats.playstyle.opener,
s.zenith?.aggregateStats.playstyle.plonk,
s.zenith?.aggregateStats.playstyle.stride,
s.zenith?.aggregateStats.playstyle.infds,
zenithRun?.aggregateStats.playstyle.opener,
zenithRun?.aggregateStats.playstyle.plonk,
zenithRun?.aggregateStats.playstyle.stride,
zenithRun?.aggregateStats.playstyle.infds,
]);
rawValues[3].add([
s.zenithEx?.stats.zenith?.altitude,
s.zenithEx?.rank,
s.zenithEx?.aggregateStats.apm,
s.zenithEx?.aggregateStats.pps,
s.zenithEx?.aggregateStats.vs,
s.zenithEx?.stats.kills,
s.zenithEx?.stats.topBtB,
s.zenithEx?.stats.cps,
s.zenithEx?.stats.zenith?.peakrank,
s.zenithEx?.stats.finalTime,
s.zenithEx?.stats.finessePercentage,
zenithExRun?.stats.zenith?.altitude,
zenithExRun?.rank,
zenithExRun?.aggregateStats.apm,
zenithExRun?.aggregateStats.pps,
zenithExRun?.aggregateStats.vs,
zenithExRun?.stats.kills,
zenithExRun?.stats.topBtB,
zenithExRun?.stats.cps,
zenithExRun?.stats.zenith?.peakrank,
zenithExRun?.stats.finalTime,
zenithExRun?.stats.finessePercentage,
"",
s.zenithEx?.aggregateStats.nerdStats.app,
s.zenithEx?.aggregateStats.nerdStats.vsapm,
s.zenithEx?.aggregateStats.nerdStats.dss,
s.zenithEx?.aggregateStats.nerdStats.dsp,
s.zenithEx?.aggregateStats.nerdStats.appdsp,
s.zenithEx?.aggregateStats.nerdStats.cheese,
s.zenithEx?.aggregateStats.nerdStats.gbe,
s.zenithEx?.aggregateStats.nerdStats.nyaapp,
s.zenithEx?.aggregateStats.nerdStats.area,
zenithExRun?.aggregateStats.nerdStats.app,
zenithExRun?.aggregateStats.nerdStats.vsapm,
zenithExRun?.aggregateStats.nerdStats.dss,
zenithExRun?.aggregateStats.nerdStats.dsp,
zenithExRun?.aggregateStats.nerdStats.appdsp,
zenithExRun?.aggregateStats.nerdStats.cheese,
zenithExRun?.aggregateStats.nerdStats.gbe,
zenithExRun?.aggregateStats.nerdStats.nyaapp,
zenithExRun?.aggregateStats.nerdStats.area,
"",
s.zenithEx?.aggregateStats.playstyle.opener,
s.zenithEx?.aggregateStats.playstyle.plonk,
s.zenithEx?.aggregateStats.playstyle.stride,
s.zenithEx?.aggregateStats.playstyle.infds,
zenithExRun?.aggregateStats.playstyle.opener,
zenithExRun?.aggregateStats.playstyle.plonk,
zenithExRun?.aggregateStats.playstyle.stride,
zenithExRun?.aggregateStats.playstyle.infds,
]);;
rawValues[4].add([
s.sprint?.stats.finalTime,
@ -285,16 +318,48 @@ class CompareState extends State<CompareView> {
s.sprint?.stats.inputs,
s.sprint?.stats.kpp,
s.sprint?.stats.pps,
s.sprint?.stats.kps
s.sprint?.stats.kps,
s.sprint?.stats.finessePercentage,
s.sprint?.stats.finesse?.faults,
"",
s.sprint?.stats.clears.quads,
s.sprint?.stats.clears.triples,
s.sprint?.stats.clears.doubles,
s.sprint?.stats.clears.singles,
"",
s.sprint?.stats.clears.tSpinTriples,
s.sprint?.stats.clears.tSpinDoubles,
s.sprint?.stats.clears.tSpinSingles,
s.sprint?.stats.clears.tSpinZeros,
s.sprint?.stats.clears.tSpinMiniDoubles,
s.sprint?.stats.clears.tSpinMiniSingles,
s.sprint?.stats.clears.tSpinMiniZeros
]);
rawValues[5].add(
[
s.blitz?.stats.score,
s.blitz?.stats.piecesPlaced,
s.blitz?.stats.lines,
s.blitz?.stats.level,
s.blitz?.stats.inputs,
s.blitz?.stats.kpp,
s.blitz?.stats.pps,
s.blitz?.stats.kps
s.blitz?.stats.kps,
s.blitz?.stats.finessePercentage,
s.blitz?.stats.finesse?.faults,
"",
s.blitz?.stats.clears.quads,
s.blitz?.stats.clears.triples,
s.blitz?.stats.clears.doubles,
s.blitz?.stats.clears.singles,
"",
s.blitz?.stats.clears.tSpinTriples,
s.blitz?.stats.clears.tSpinDoubles,
s.blitz?.stats.clears.tSpinSingles,
s.blitz?.stats.clears.tSpinZeros,
s.blitz?.stats.clears.tSpinMiniDoubles,
s.blitz?.stats.clears.tSpinMiniSingles,
s.blitz?.stats.clears.tSpinMiniZeros
]
);
rawValues[6].add([
@ -339,60 +404,60 @@ class CompareState extends State<CompareView> {
Text(s.league.playstyle != null ? f4.format(s.league.playstyle!.infds) : "---"),
]);
formattedValues[2].add([
Text(s.zenith != null ? f4.format(s.zenith!.stats.zenith!.altitude) : "---"),
Text(s.zenith != null ? ""+intf.format(s.zenith!.rank) : "---"),
Text(s.zenith != null ? f2.format(s.zenith!.aggregateStats.apm) : "---"),
Text(s.zenith != null ? f2.format(s.zenith!.aggregateStats.pps) : "---"),
Text(s.zenith != null ? f2.format(s.zenith!.aggregateStats.vs) : "---"),
Text(s.zenith != null ? intf.format(s.zenith!.stats.kills) : "---"),
Text(s.zenith != null ? intf.format(s.zenith!.stats.topBtB) : "---"),
Text(s.zenith != null ? f4.format(s.zenith!.stats.cps) : "---"),
Text(s.zenith != null ? f4.format(s.zenith!.stats.zenith!.peakrank) : "---"),
Text(s.zenith != null ? getMoreNormalTime(s.zenith!.stats.finalTime) : "---"),
Text(s.zenith != null ? f2.format(s.zenith!.stats.finessePercentage*100)+"%" : "---"),
RichText(text: TextSpan(text: zenithRun != null ? "${f2.format(zenithRun.stats.zenith!.altitude)} m" : "---", style: TextStyle(fontFamily: "Eurostile Round"), children: [if (zenithRun != null && oldZenithRun) TextSpan(text: " (${zenithRun.revolution})", style: TextStyle(color: Colors.grey))])),
Text(zenithRun != null ? ""+intf.format(zenithRun.rank) : "---"),
Text(zenithRun != null ? f2.format(zenithRun.aggregateStats.apm) : "---"),
Text(zenithRun != null ? f2.format(zenithRun.aggregateStats.pps) : "---"),
Text(zenithRun != null ? f2.format(zenithRun.aggregateStats.vs) : "---"),
Text(zenithRun != null ? intf.format(zenithRun.stats.kills) : "---"),
Text(zenithRun != null ? intf.format(zenithRun.stats.topBtB) : "---"),
Text(zenithRun != null ? f4.format(zenithRun.stats.cps) : "---"),
Text(zenithRun != null ? f4.format(zenithRun.stats.zenith!.peakrank) : "---"),
Text(zenithRun != null ? getMoreNormalTime(zenithRun.stats.finalTime) : "---"),
Text(zenithRun != null ? f2.format(zenithRun.stats.finessePercentage*100)+"%" : "---"),
Text(""),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.app) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.vsapm) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.dss) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.dsp) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.appdsp) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.cheese) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.gbe) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.nyaapp) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.area) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.app) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.vsapm) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.dss) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.dsp) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.appdsp) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.cheese) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.gbe) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.nyaapp) : "---"),
Text(zenithRun?.aggregateStats.nerdStats != null ? f4.format(zenithRun!.aggregateStats.nerdStats.area) : "---"),
Text(""),
Text(s.zenith?.aggregateStats.playstyle != null ? f4.format(s.zenith!.aggregateStats.playstyle.opener) : "---"),
Text(s.zenith?.aggregateStats.playstyle != null ? f4.format(s.zenith!.aggregateStats.playstyle.plonk) : "---"),
Text(s.zenith?.aggregateStats.playstyle != null ? f4.format(s.zenith!.aggregateStats.playstyle.stride) : "---"),
Text(s.zenith?.aggregateStats.playstyle != null ? f4.format(s.zenith!.aggregateStats.playstyle.infds) : "---"),
Text(zenithRun?.aggregateStats.playstyle != null ? f4.format(zenithRun!.aggregateStats.playstyle.opener) : "---"),
Text(zenithRun?.aggregateStats.playstyle != null ? f4.format(zenithRun!.aggregateStats.playstyle.plonk) : "---"),
Text(zenithRun?.aggregateStats.playstyle != null ? f4.format(zenithRun!.aggregateStats.playstyle.stride) : "---"),
Text(zenithRun?.aggregateStats.playstyle != null ? f4.format(zenithRun!.aggregateStats.playstyle.infds) : "---"),
]);
formattedValues[3].add([
Text(s.zenith != null ? f4.format(s.zenith!.stats.zenith!.altitude) : "---"),
Text(s.zenith != null ? ""+intf.format(s.zenith!.rank) : "---"),
Text(s.zenith != null ? f2.format(s.zenith!.aggregateStats.apm) : "---"),
Text(s.zenith != null ? f2.format(s.zenith!.aggregateStats.pps) : "---"),
Text(s.zenith != null ? f2.format(s.zenith!.aggregateStats.vs) : "---"),
Text(s.zenith != null ? intf.format(s.zenith!.stats.kills) : "---"),
Text(s.zenith != null ? intf.format(s.zenith!.stats.topBtB) : "---"),
Text(s.zenith != null ? f4.format(s.zenith!.stats.cps) : "---"),
Text(s.zenith != null ? f4.format(s.zenith!.stats.zenith!.peakrank) : "---"),
Text(s.zenith != null ? getMoreNormalTime(s.zenith!.stats.finalTime) : "---"),
Text(s.zenith != null ? f2.format(s.zenith!.stats.finessePercentage*100)+"%" : "---"),
RichText(text: TextSpan(text: zenithExRun != null ? "${f2.format(zenithExRun.stats.zenith!.altitude)} m" : "---", style: TextStyle(fontFamily: "Eurostile Round"), children: [if (zenithExRun != null && oldZenithExRun) TextSpan(text: " (${zenithExRun.revolution})", style: TextStyle(color: Colors.grey))])),
Text(zenithExRun != null ? ""+intf.format(zenithExRun.rank) : "---"),
Text(zenithExRun != null ? f2.format(zenithExRun.aggregateStats.apm) : "---"),
Text(zenithExRun != null ? f2.format(zenithExRun.aggregateStats.pps) : "---"),
Text(zenithExRun != null ? f2.format(zenithExRun.aggregateStats.vs) : "---"),
Text(zenithExRun != null ? intf.format(zenithExRun.stats.kills) : "---"),
Text(zenithExRun != null ? intf.format(zenithExRun.stats.topBtB) : "---"),
Text(zenithExRun != null ? f4.format(zenithExRun.stats.cps) : "---"),
Text(zenithExRun != null ? f4.format(zenithExRun.stats.zenith!.peakrank) : "---"),
Text(zenithExRun != null ? getMoreNormalTime(zenithExRun.stats.finalTime) : "---"),
Text(zenithExRun != null ? f2.format(zenithExRun.stats.finessePercentage*100)+"%" : "---"),
Text(""),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.app) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.vsapm) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.dss) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.dsp) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.appdsp) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.cheese) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.gbe) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.nyaapp) : "---"),
Text(s.zenith?.aggregateStats.nerdStats != null ? f4.format(s.zenith!.aggregateStats.nerdStats.area) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.app) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.vsapm) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.dss) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.dsp) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.appdsp) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.cheese) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.gbe) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.nyaapp) : "---"),
Text(zenithExRun?.aggregateStats.nerdStats != null ? f4.format(zenithExRun!.aggregateStats.nerdStats.area) : "---"),
Text(""),
Text(s.zenith?.aggregateStats.playstyle != null ? f4.format(s.zenith!.aggregateStats.playstyle.opener) : "---"),
Text(s.zenith?.aggregateStats.playstyle != null ? f4.format(s.zenith!.aggregateStats.playstyle.plonk) : "---"),
Text(s.zenith?.aggregateStats.playstyle != null ? f4.format(s.zenith!.aggregateStats.playstyle.stride) : "---"),
Text(s.zenith?.aggregateStats.playstyle != null ? f4.format(s.zenith!.aggregateStats.playstyle.infds) : "---"),
Text(zenithExRun?.aggregateStats.playstyle != null ? f4.format(zenithExRun!.aggregateStats.playstyle.opener) : "---"),
Text(zenithExRun?.aggregateStats.playstyle != null ? f4.format(zenithExRun!.aggregateStats.playstyle.plonk) : "---"),
Text(zenithExRun?.aggregateStats.playstyle != null ? f4.format(zenithExRun!.aggregateStats.playstyle.stride) : "---"),
Text(zenithExRun?.aggregateStats.playstyle != null ? f4.format(zenithExRun!.aggregateStats.playstyle.infds) : "---"),
]);
formattedValues[4].add([
Text(s.sprint != null ? getMoreNormalTime(s.sprint!.stats.finalTime) : "---"),
@ -400,15 +465,47 @@ class CompareState extends State<CompareView> {
Text(s.sprint != null ? intf.format(s.sprint!.stats.inputs) : "---"),
Text(s.sprint != null ? f4.format(s.sprint!.stats.kpp) : "---"),
Text(s.sprint != null ? f4.format(s.sprint!.stats.pps) : "---"),
Text(s.sprint != null ? f4.format(s.sprint!.stats.kps) : "---")
Text(s.sprint != null ? f4.format(s.sprint!.stats.kps) : "---"),
Text(s.sprint != null ? percentage.format(s.sprint!.stats.finessePercentage) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.finesse?.faults) : "---"),
Text(""),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.quads) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.triples) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.doubles) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.singles) : "---"),
Text(""),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.tSpinTriples) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.tSpinDoubles) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.tSpinSingles) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.tSpinZeros) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.tSpinMiniDoubles) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.tSpinMiniSingles) : "---"),
Text(s.sprint != null ? intf.format(s.sprint!.stats.clears.tSpinMiniZeros) : "---"),
]);
formattedValues[5].add([
Text(s.blitz != null ? intf.format(s.sprint!.stats.score) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.score) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.piecesPlaced) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.lines) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.level) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.inputs) : "---"),
Text(s.blitz != null ? f4.format(s.blitz!.stats.kpp) : "---"),
Text(s.blitz != null ? f4.format(s.blitz!.stats.pps) : "---"),
Text(s.blitz != null ? f4.format(s.blitz!.stats.kps) : "---")
Text(s.blitz != null ? f4.format(s.blitz!.stats.kps) : "---"),
Text(s.blitz != null ? percentage.format(s.blitz!.stats.finessePercentage) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.finesse?.faults) : "---"),
Text(""),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.quads) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.triples) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.doubles) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.singles) : "---"),
Text(""),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.tSpinTriples) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.tSpinDoubles) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.tSpinSingles) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.tSpinZeros) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.tSpinMiniDoubles) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.tSpinMiniSingles) : "---"),
Text(s.blitz != null ? intf.format(s.blitz!.stats.clears.tSpinMiniZeros) : "---"),
]);
formattedValues[6].add([
Text(intf.format(s.zen.score)),
@ -429,7 +526,7 @@ class CompareState extends State<CompareView> {
[
summaries.reduce((curr, next) => curr.league.tr > next.league.tr ? curr : next).league.tr,
summaries.reduce((curr, next) => (curr.league.glicko??-1) > (next.league.glicko??-1) ? curr : next).league.glicko,
summaries.reduce((curr, next) => (curr.league.rd??-1) > (next.league.rd??-1) ? curr : next).league.rd,
summaries.reduce((curr, next) => (curr.league.rd??-1) < (next.league.rd??-1) ? curr : next).league.rd,
summaries.reduce((curr, next) => curr.league.gxe > next.league.gxe ? curr : next).league.gxe,
summaries.reduce((curr, next) => curr.league.s1tr > next.league.s1tr ? curr : next).league.s1tr,
summaries.reduce((curr, next) => curr.league.standing > next.league.standing ? curr : next).league.standing,
@ -518,14 +615,46 @@ class CompareState extends State<CompareView> {
summaries.reduce((curr, next) => (curr.sprint?.stats.kpp??-1) < (next.sprint?.stats.kpp??-1) ? curr : next).sprint?.stats.kpp,
summaries.reduce((curr, next) => (curr.sprint?.stats.pps??-1) > (next.sprint?.stats.pps??-1) ? curr : next).sprint?.stats.pps,
summaries.reduce((curr, next) => (curr.sprint?.stats.kps??-1) > (next.sprint?.stats.kps??-1) ? curr : next).sprint?.stats.kps,
summaries.reduce((curr, next) => (curr.sprint?.stats.finessePercentage??-1) > (next.sprint?.stats.finessePercentage??-1) ? curr : next).sprint?.stats.finessePercentage,
summaries.reduce((curr, next) => (curr.sprint?.stats.finesse?.faults??-1) < (next.sprint?.stats.finesse?.faults??-1) ? curr : next).sprint?.stats.finesse?.faults,
null,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.quads??-1) > (next.sprint?.stats.clears.quads??-1) ? curr : next).sprint?.stats.clears.quads,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.triples??-1) > (next.sprint?.stats.clears.triples??-1) ? curr : next).sprint?.stats.clears.triples,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.doubles??-1) > (next.sprint?.stats.clears.doubles??-1) ? curr : next).sprint?.stats.clears.doubles,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.singles??-1) > (next.sprint?.stats.clears.singles??-1) ? curr : next).sprint?.stats.clears.singles,
null,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.tSpinTriples??-1) > (next.sprint?.stats.clears.tSpinTriples??-1) ? curr : next).sprint?.stats.clears.tSpinTriples,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.tSpinDoubles??-1) > (next.sprint?.stats.clears.tSpinDoubles??-1) ? curr : next).sprint?.stats.clears.tSpinDoubles,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.tSpinSingles??-1) > (next.sprint?.stats.clears.tSpinSingles??-1) ? curr : next).sprint?.stats.clears.tSpinSingles,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.tSpinZeros??-1) > (next.sprint?.stats.clears.tSpinZeros??-1) ? curr : next).sprint?.stats.clears.tSpinZeros,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.tSpinMiniDoubles??-1) > (next.sprint?.stats.clears.tSpinMiniDoubles??-1) ? curr : next).sprint?.stats.clears.tSpinMiniDoubles,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.tSpinMiniSingles??-1) > (next.sprint?.stats.clears.tSpinMiniSingles??-1) ? curr : next).sprint?.stats.clears.tSpinMiniSingles,
summaries.reduce((curr, next) => (curr.sprint?.stats.clears.tSpinMiniZeros??-1) > (next.sprint?.stats.clears.tSpinMiniZeros??-1) ? curr : next).sprint?.stats.clears.tSpinMiniZeros,
],
[
summaries.reduce((curr, next) => (curr.blitz?.stats.score??-1) > (next.blitz?.stats.score??-1) ? curr : next).blitz?.stats.score,
summaries.reduce((curr, next) => (curr.blitz?.stats.piecesPlaced??-1) < (next.blitz?.stats.piecesPlaced??-1) ? curr : next).blitz?.stats.piecesPlaced,
summaries.reduce((curr, next) => (curr.blitz?.stats.lines??-1) < (next.blitz?.stats.lines??-1) ? curr : next).blitz?.stats.lines,
summaries.reduce((curr, next) => (curr.blitz?.stats.level??-1) < (next.blitz?.stats.level??-1) ? curr : next).blitz?.stats.level,
summaries.reduce((curr, next) => (curr.blitz?.stats.inputs??-1) < (next.blitz?.stats.inputs??-1) ? curr : next).blitz?.stats.inputs,
summaries.reduce((curr, next) => (curr.blitz?.stats.kpp??-1) < (next.blitz?.stats.kpp??-1) ? curr : next).blitz?.stats.kpp,
summaries.reduce((curr, next) => (curr.blitz?.stats.pps??-1) > (next.blitz?.stats.pps??-1) ? curr : next).blitz?.stats.pps,
summaries.reduce((curr, next) => (curr.blitz?.stats.kps??-1) > (next.blitz?.stats.kps??-1) ? curr : next).blitz?.stats.kps,
summaries.reduce((curr, next) => (curr.blitz?.stats.finessePercentage??-1) > (next.blitz?.stats.finessePercentage??-1) ? curr : next).blitz?.stats.finessePercentage,
summaries.reduce((curr, next) => (curr.blitz?.stats.finesse?.faults??-1) < (next.blitz?.stats.finesse?.faults??-1) ? curr : next).blitz?.stats.finesse?.faults,
null,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.quads??-1) > (next.blitz?.stats.clears.quads??-1) ? curr : next).blitz?.stats.clears.quads,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.triples??-1) > (next.blitz?.stats.clears.triples??-1) ? curr : next).blitz?.stats.clears.triples,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.doubles??-1) > (next.blitz?.stats.clears.doubles??-1) ? curr : next).blitz?.stats.clears.doubles,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.singles??-1) > (next.blitz?.stats.clears.singles??-1) ? curr : next).blitz?.stats.clears.singles,
null,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.tSpinTriples??-1) > (next.blitz?.stats.clears.tSpinTriples??-1) ? curr : next).blitz?.stats.clears.tSpinTriples,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.tSpinDoubles??-1) > (next.blitz?.stats.clears.tSpinDoubles??-1) ? curr : next).blitz?.stats.clears.tSpinDoubles,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.tSpinSingles??-1) > (next.blitz?.stats.clears.tSpinSingles??-1) ? curr : next).blitz?.stats.clears.tSpinSingles,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.tSpinZeros??-1) > (next.blitz?.stats.clears.tSpinZeros??-1) ? curr : next).blitz?.stats.clears.tSpinZeros,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.tSpinMiniDoubles??-1) > (next.blitz?.stats.clears.tSpinMiniDoubles??-1) ? curr : next).blitz?.stats.clears.tSpinMiniDoubles,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.tSpinMiniSingles??-1) > (next.blitz?.stats.clears.tSpinMiniSingles??-1) ? curr : next).blitz?.stats.clears.tSpinMiniSingles,
summaries.reduce((curr, next) => (curr.blitz?.stats.clears.tSpinMiniZeros??-1) > (next.blitz?.stats.clears.tSpinMiniZeros??-1) ? curr : next).blitz?.stats.clears.tSpinMiniZeros,
],
[
summaries.reduce((curr, next) => curr.zen.score > next.zen.score ? curr : next).zen.score,

View File

@ -44,6 +44,8 @@ class _DestinationGraphsState extends State<DestinationGraphs> {
Stats _Ychart = Stats.tr;
Stats _Xchart = Stats.tr;
int _season = currentSeason-1;
ValueNotifier<String> historyPlayerUsername = ValueNotifier("");
ValueNotifier<String> historyPlayerAvatarRevizion = ValueNotifier("");
List<String> excludeRanks = [];
late Future<List<_MyScatterSpot>> futureLeague = getTetraLeagueData(_Xchart, _Ychart);
String searchLeague = "";
@ -177,7 +179,7 @@ class _DestinationGraphsState extends State<DestinationGraphs> {
entry.userId,
entry.username,
entry.rank,
(rankColors[entry.rank]??Colors.white).withAlpha((searchLeague.isNotEmpty && entry.username.startsWith(searchLeague.toLowerCase())) ? 255 : 20)
(rankColors[entry.rank]??Colors.white).withOpacity((searchLeague.isEmpty || entry.username.startsWith(searchLeague.toLowerCase())) ? 1.0 : 0.005)
)
];
return _spots;
@ -274,6 +276,10 @@ class _DestinationGraphsState extends State<DestinationGraphs> {
dataSource: snapshot.data,
animationDuration: 0,
pointColorMapper: (data, _) => data.color,
markerSettings: MarkerSettings(
isVisible: false,
borderColor: Colors.black,
),
xValueMapper: (data, _) => data.x,
yValueMapper: (data, _) => data.y,
onPointTap: (point) => Navigator.push(context, MaterialPageRoute(builder: (context) => MainView(player: snapshot.data![point.pointIndex!].nickname), maintainState: false)),
@ -348,11 +354,28 @@ class _DestinationGraphsState extends State<DestinationGraphs> {
spacing: 20,
crossAxisAlignment: WrapCrossAlignment.center,
children: [
if (_graph == Graph.history) Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.person),
Padding(
padding: EdgeInsets.all(8.0),
child: ValueListenableBuilder<String>(
valueListenable: historyPlayerUsername,
builder: (context, value, child) {
return Text(value, style: TextStyle(fontSize: 22, fontFamily: "Eurostile Round Extended"));
},
)
),
],
),
if (_graph == Graph.leagueState) SizedBox(
width: 300,
child: TextField(
style: TextStyle(fontSize: 18.0000),
decoration: InputDecoration(
icon: Icon(Icons.search)
icon: Icon(Icons.search),
isDense: true
),
onChanged: (v){
searchLeague = v;
@ -414,7 +437,7 @@ class _DestinationGraphsState extends State<DestinationGraphs> {
),
],
),
if (_graph != Graph.leagueState) Row(
if (_graph == Graph.history) Row(
mainAxisSize: MainAxisSize.min,
children: [
Checkbox(value: _smooth,

View File

@ -233,31 +233,29 @@ class _RankState extends State<RankView> {
SizedBox(
width: constraints.maxWidth - 350,
height: constraints.maxHeight,
child: Column(
child: Row(
children: [
SegmentedButton<CardMod>(
showSelectedIcon: false,
selected: <CardMod>{cardMod},
segments: <ButtonSegment<CardMod>>[
ButtonSegment<CardMod>(
value: CardMod.graph,
label: Text("Graph"),
SizedBox(
width: 200.0,
child: Card(
child: Column(
children: [],
),
),
),
Expanded(
child: Card(
child: Column(
children: [],
),
),
),
Expanded(
child: Card(
child: Column(
children: [],
),
ButtonSegment<CardMod>(
value: CardMod.graph,
label: Text("Minimums"),
),
ButtonSegment<CardMod>(
value: CardMod.graph,
label: Text("Maximums"),
)
],
onSelectionChanged: (p0) {
setState(() {
cardMod = p0.first;
//_transition.;
});
},
)
],
),