Achievements fix + they sorted + taka

This commit is contained in:
dan63047 2025-01-19 03:18:11 +03:00
parent ee3bbe6369
commit 892b414f56
10 changed files with 17 additions and 64 deletions

View File

@ -6,7 +6,7 @@ Tetra Stats works with TETR.IO Tetra Channel API, providing data from it and cal
You can [download an app](https://github.com/dan63047/TetraStats/releases), or [use web version](https://ts.dan63.by). You can [download an app](https://github.com/dan63047/TetraStats/releases), or [use web version](https://ts.dan63.by).
![Screenshot of the app 1](https://imgur.com/e8CYvj3.png) ![Screenshot of the app 1](https://i.imgur.com/Hl02YkX.png)
# Available functionality # Available functionality
- Advanced stats for players - Advanced stats for players

2
debian/debian.yaml vendored
View File

@ -6,7 +6,7 @@ flutter_app:
control: control:
Package: tetra-stats Package: tetra-stats
Version: 2.0.3 Version: 2.0.4
Architecture: amd64 Architecture: amd64
Essential: no Essential: no
Priority: optional Priority: optional

View File

@ -1,5 +1,5 @@
[Desktop Entry] [Desktop Entry]
Version=2.0.3 Version=2.0.4
Name=Tetra Stats Name=Tetra Stats
GenericName=Tetra Stats GenericName=Tetra Stats
Comment=Track your and other player stats in TETR.IO Comment=Track your and other player stats in TETR.IO

View File

@ -750,6 +750,7 @@ class TetrioService extends DB {
int entries = 100; int entries = 100;
String? prisecter; String? prisecter;
while (entries > 0){ while (entries > 0){
await Future<void>.delayed(const Duration(seconds: 1));
TetraLeagueBetaStream stream = await fetchTLStream(id, prisecter: prisecter); TetraLeagueBetaStream stream = await fetchTLStream(id, prisecter: prisecter);
if (stream.records.isEmpty) break; if (stream.records.isEmpty) break;
records.addAll(stream.records); records.addAll(stream.records);

View File

@ -593,10 +593,10 @@ class AchievementSummary extends StatelessWidget{
), ),
child: ClipRect( child: ClipRect(
child: Align( child: Align(
alignment: Alignment.topLeft.add(Alignment(0.286 * (((achievement?.k??1) - 1) % 8), 0.286 * (((achievement?.k??0) - 1) / 8).floor())), alignment: Alignment.topLeft.add(Alignment(0.286 * (((achievement?.k??1) - 1) % 8), 0.286 * ((((achievement?.k??0) - 1) / 8).floor() % 8))),
heightFactor: 0.125, heightFactor: 0.125,
widthFactor: 0.125, widthFactor: 0.125,
child: Image.asset("res/icons/achievements.png", width: 2048, height: 2048, scale: 1, color: achievement?.v == null ? Colors.grey : achievementColors[min(achievement!.rank!, 6)]), child: Image.asset("res/icons/achievements${(achievement?.k??1).floor() ~/ 64}.png", width: 2048, height: 2048, scale: 1, color: achievement?.v == null ? Colors.grey : achievementColors[min(achievement!.rank!, 6)]),
), ),
), ),
), ),
@ -1219,64 +1219,16 @@ class _DestinationHomeState extends State<DestinationHome> with SingleTickerProv
closestAverageBlitz = blitzAverages.entries.last; closestAverageBlitz = blitzAverages.entries.last;
blitzBetterThanClosestAverage = false; blitzBetterThanClosestAverage = false;
} }
List<Achievement> tlAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? <Achievement>[ List<Achievement> tlAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? snapshot.data!.summaries!.achievements.where((e) => e.category == "league").toList() : [];
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 10), List<Achievement> qpAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? snapshot.data!.summaries!.achievements.where((e) => e.category == "zenith" && !e.object.contains("Expert Mode")).toList() : [];
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 12), List<Achievement> qpExAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? snapshot.data!.summaries!.achievements.where((e) => e.category == "zenith" && e.object.contains("Expert Mode")).toList() : [];
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 13), List<Achievement> sprintAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? snapshot.data!.summaries!.achievements.where((e) => e.category == "solo" && !e.object.contains("BLITZ")).toList() : [];
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 14), List<Achievement> blitzAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? snapshot.data!.summaries!.achievements.where((e) => e.category == "solo" && e.object.contains("BLITZ")).toList() : [];
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 15), tlAchievements.sort((a, b) => a.o! - b.o!);
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 47),
] : [];
List<Achievement> qpAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? <Achievement>[
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 16),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 17),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 18),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 20),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 21),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 22),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 23),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 24),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 25),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 26),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 27),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 28),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 29),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 30),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 33),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 41),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 43),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 44),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 45),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 46),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 51),
if (snapshot.data!.summaries!.achievements.any((e) => e.k == 54)) snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 54),
] : [];
List<Achievement> qpExAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? <Achievement>[
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 19),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 31),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 32),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 34),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 40),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 49),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 50),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 53),
] : [];
List<Achievement> sprintAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? <Achievement>[
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 5),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 7),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 8),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 9),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 36),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 37),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 38),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 48),
] : [];
List<Achievement> blitzAchievements = snapshot.data!.summaries!.achievements.isNotEmpty ? <Achievement>[
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 6),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 39),
snapshot.data!.summaries!.achievements.firstWhere((e) => e.k == 52),
] : [];
qpAchievements.sort((a, b) => a.o! - b.o!); qpAchievements.sort((a, b) => a.o! - b.o!);
qpExAchievements.sort((a, b) => a.o! - b.o!);
sprintAchievements.sort((a, b) => a.o! - b.o!);
blitzAchievements.sort((a, b) => a.o! - b.o!);
return TweenAnimationBuilder( return TweenAnimationBuilder(
duration: Durations.long4, duration: Durations.long4,
tween: Tween<double>(begin: 0, end: 1), tween: Tween<double>(begin: 0, end: 1),

View File

@ -2,7 +2,7 @@ name: tetra_stats
description: Track your and other player stats in TETR.IO description: Track your and other player stats in TETR.IO
publish_to: 'none' publish_to: 'none'
version: 2.0.3+44 version: 2.0.4+45
environment: environment:
sdk: '>=3.0.0' sdk: '>=3.0.0'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 KiB

BIN
res/icons/achievements0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -131,7 +131,7 @@
} }
</style> </style>
<!-- This script adds the flutter initialization JS code --> <!-- This script adds the flutter initialization JS code -->
<script src="flutter.js?version=2.0.3" defer></script> <script src="flutter.js?version=2.0.4" defer></script>
</head> </head>
<body> <body>
<div id="preloader"> <div id="preloader">