diff --git a/lib/data_objects/record_single.dart b/lib/data_objects/record_single.dart index 6106a85..d875a95 100644 --- a/lib/data_objects/record_single.dart +++ b/lib/data_objects/record_single.dart @@ -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; switch (ex.keys.firstOrNull){ case "zenith": diff --git a/lib/views/compare_view_tiles.dart b/lib/views/compare_view_tiles.dart index 6a92aa4..663a6b3 100644 --- a/lib/views/compare_view_tiles.dart +++ b/lib/views/compare_view_tiles.dart @@ -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 { "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 { } 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 { ] ); 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 { 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 { 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 { 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 { [ 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 { 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, diff --git a/lib/views/destination_graphs.dart b/lib/views/destination_graphs.dart index c84b2dc..b7b32d6 100644 --- a/lib/views/destination_graphs.dart +++ b/lib/views/destination_graphs.dart @@ -44,6 +44,8 @@ class _DestinationGraphsState extends State { Stats _Ychart = Stats.tr; Stats _Xchart = Stats.tr; int _season = currentSeason-1; + ValueNotifier historyPlayerUsername = ValueNotifier(""); + ValueNotifier historyPlayerAvatarRevizion = ValueNotifier(""); List excludeRanks = []; late Future> futureLeague = getTetraLeagueData(_Xchart, _Ychart); String searchLeague = ""; @@ -177,7 +179,7 @@ class _DestinationGraphsState extends State { 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 { 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 { 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( + 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 { ), ], ), - if (_graph != Graph.leagueState) Row( + if (_graph == Graph.history) Row( mainAxisSize: MainAxisSize.min, children: [ Checkbox(value: _smooth, diff --git a/lib/views/rank_view.dart b/lib/views/rank_view.dart index b129acc..e98c800 100644 --- a/lib/views/rank_view.dart +++ b/lib/views/rank_view.dart @@ -233,31 +233,29 @@ class _RankState extends State { SizedBox( width: constraints.maxWidth - 350, height: constraints.maxHeight, - child: Column( + child: Row( children: [ - SegmentedButton( - showSelectedIcon: false, - selected: {cardMod}, - segments: >[ - ButtonSegment( - value: CardMod.graph, - label: Text("Graph"), + SizedBox( + width: 200.0, + child: Card( + child: Column( + children: [], ), - ButtonSegment( - value: CardMod.graph, - label: Text("Minimums"), + ), + ), + Expanded( + child: Card( + child: Column( + children: [], ), - ButtonSegment( - value: CardMod.graph, - label: Text("Maximums"), - ) - ], - onSelectionChanged: (p0) { - setState(() { - cardMod = p0.first; - //_transition.; - }); - }, + ), + ), + Expanded( + child: Card( + child: Column( + children: [], + ), + ), ) ], ),